From 99a118931111b01ea0bce4347c31bb37936e0a46 Mon Sep 17 00:00:00 2001 From: jeff_pro_gamer <168239949+JeffProGamer@users.noreply.github.com> Date: Tue, 16 Sep 2025 22:01:05 +0300 Subject: [PATCH] Add files via upload --- CODE_OF_CONDUCT.md | 270 +- CONTRIBUTING.md | 198 +- Dockerfile | 78 +- .../ApiEndpointController.cs | 16 +- .../Controllers/RpcController.cs | 34 +- .../Controllers/SlotEndpoints.cs | 126 +- .../Controllers/StatisticsEndpoints.cs | 276 +- .../Controllers/StatusController.cs | 16 +- .../Controllers/UserEndpoints.cs | 242 +- .../appsettings.Development.json | 16 +- .../appsettings.json | 18 +- .../Controllers/CommentController.cs | 398 +- .../Controllers/DeveloperController.cs | 28 +- .../Controllers/FriendsController.cs | 184 +- .../appsettings.Development.json | 16 +- .../appsettings.json | 18 +- .../AssemblyInfo.cs | 4 +- .../Integration/AuthenticationTests.cs | 166 +- .../Integration/DatabaseTests.cs | 56 +- .../Integration/LoginTests.cs | 244 +- .../Integration/MatchTests.cs | 136 +- .../Integration/SlotFilterTests.cs | 466 +- .../Integration/SlotTests.cs | 132 +- .../Integration/UploadTests.cs | 182 +- ...rojectLighthouse.Tests.GameApiTests.csproj | 68 +- .../Controllers/CommentControllerTests.cs | 460 +- .../Controllers/ControllerExtensionTests.cs | 888 +-- .../Controllers/MessageControllerTests.cs | 552 +- .../Unit/Controllers/ReviewControllerTests.cs | 198 +- .../Unit/Controllers/ScoreControllerTests.cs | 320 +- .../Unit/Controllers/SlotControllerTests.cs | 1112 +-- .../Controllers/StatisticsControllerTests.cs | 372 +- .../Unit/Controllers/StatusControllerTests.cs | 44 +- ...pping_ProjectLighthouse.Tests.GameApiTests | Bin 0 -> 3842 bytes ...hthouse.Tests.GameApiTests.AssemblyInfo.cs | 22 + ...ests.GameApiTests.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 15 + ...Lighthouse.Tests.GameApiTests.assets.cache | Bin 0 -> 107408 bytes ...ameApiTests.csproj.AssemblyReference.cache | Bin 0 -> 26296 bytes ...ests.GameApiTests.csproj.nuget.dgspec.json | 555 ++ ...se.Tests.GameApiTests.csproj.nuget.g.props | 30 + ....Tests.GameApiTests.csproj.nuget.g.targets | 17 + .../obj/project.assets.json | 5944 ++++++++++++++++ .../obj/project.nuget.cache | 124 + .../AssemblyInfo.cs | 4 +- .../Extensions/WebDriverExtensions.cs | 24 +- .../Integration/AdminTests.cs | 142 +- .../Integration/AuthenticationTests.cs | 222 +- .../Integration/LighthouseWebTest.cs | 118 +- .../Integration/RegisterTests.cs | 222 +- ...rojectLighthouse.Tests.WebsiteTests.csproj | 76 +- ...pping_ProjectLighthouse.Tests.WebsiteTests | Bin 0 -> 3818 bytes ...hthouse.Tests.WebsiteTests.AssemblyInfo.cs | 22 + ...ests.WebsiteTests.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 15 + ...Lighthouse.Tests.WebsiteTests.assets.cache | Bin 0 -> 108372 bytes ...ebsiteTests.csproj.AssemblyReference.cache | Bin 0 -> 26940 bytes ...ests.WebsiteTests.csproj.nuget.dgspec.json | 575 ++ ...se.Tests.WebsiteTests.csproj.nuget.g.props | 30 + ....Tests.WebsiteTests.csproj.nuget.g.targets | 19 + .../obj/project.assets.json | 6058 +++++++++++++++++ .../obj/project.nuget.cache | 127 + .../ExampleFiles/TestGarbage.bin | 54 +- .../ExampleFiles/TestScript.ff | 4 +- .../Helpers/IntegrationHelper.cs | 84 +- ProjectLighthouse.Tests/Helpers/MockHelper.cs | 296 +- .../Integration/LighthouseServerTest.cs | 288 +- .../SerializationDependencyTests.cs | 318 +- .../Serialization/SerializationTests.cs | 436 +- .../ProjectLighthouse.Tests.csproj | 84 +- ...ProjectLighthouse.Tests.csproj.DotSettings | 2 +- .../Unit/EmailCooldownTests.cs | 192 +- ProjectLighthouse.Tests/Unit/FileTypeTests.cs | 118 +- ProjectLighthouse.Tests/Unit/FilterTests.cs | 1736 ++--- ProjectLighthouse.Tests/Unit/LocationTests.cs | 168 +- .../Unit/ModerationTests.cs | 170 +- .../Unit/PaginationTests.cs | 474 +- .../Unit/RepeatingTaskTests.cs | 238 +- ProjectLighthouse.Tests/Unit/ResourceTests.cs | 198 +- ...tsMapping_LBPUnion.ProjectLighthouse.Tests | Bin 0 -> 1874 bytes .../ProjectLighthouse.Tests.AssemblyInfo.cs | 22 + ...tLighthouse.Tests.AssemblyInfoInputs.cache | 1 + ....GeneratedMSBuildEditorConfig.editorconfig | 15 + .../ProjectLighthouse.Tests.assets.cache | Bin 0 -> 107705 bytes ...house.Tests.csproj.AssemblyReference.cache | Bin 0 -> 26296 bytes ...tLighthouse.Tests.csproj.nuget.dgspec.json | 352 + ...ojectLighthouse.Tests.csproj.nuget.g.props | 30 + ...ectLighthouse.Tests.csproj.nuget.g.targets | 17 + .../obj/project.assets.json | 5901 ++++++++++++++++ .../obj/project.nuget.cache | 124 + ProjectLighthouse.sln | 144 +- ProjectLighthouse.sln.DotSettings | 350 +- README.md | 148 +- crowdin.yml | 18 +- docker-compose.yml | 176 +- global.json | 12 +- qodana.yaml | 28 +- 97 files changed, 26956 insertions(+), 6939 deletions(-) create mode 100644 ProjectLighthouse.Tests.GameApiTests/bin/Debug/net8.0/CoverletSourceRootsMapping_ProjectLighthouse.Tests.GameApiTests create mode 100644 ProjectLighthouse.Tests.GameApiTests/obj/Debug/net8.0/ProjectLighthouse.Tests.GameApiTests.AssemblyInfo.cs create mode 100644 ProjectLighthouse.Tests.GameApiTests/obj/Debug/net8.0/ProjectLighthouse.Tests.GameApiTests.AssemblyInfoInputs.cache create mode 100644 ProjectLighthouse.Tests.GameApiTests/obj/Debug/net8.0/ProjectLighthouse.Tests.GameApiTests.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 ProjectLighthouse.Tests.GameApiTests/obj/Debug/net8.0/ProjectLighthouse.Tests.GameApiTests.assets.cache create mode 100644 ProjectLighthouse.Tests.GameApiTests/obj/Debug/net8.0/ProjectLighthouse.Tests.GameApiTests.csproj.AssemblyReference.cache create mode 100644 ProjectLighthouse.Tests.GameApiTests/obj/ProjectLighthouse.Tests.GameApiTests.csproj.nuget.dgspec.json create mode 100644 ProjectLighthouse.Tests.GameApiTests/obj/ProjectLighthouse.Tests.GameApiTests.csproj.nuget.g.props create mode 100644 ProjectLighthouse.Tests.GameApiTests/obj/ProjectLighthouse.Tests.GameApiTests.csproj.nuget.g.targets create mode 100644 ProjectLighthouse.Tests.GameApiTests/obj/project.assets.json create mode 100644 ProjectLighthouse.Tests.GameApiTests/obj/project.nuget.cache create mode 100644 ProjectLighthouse.Tests.WebsiteTests/bin/Debug/net8.0/CoverletSourceRootsMapping_ProjectLighthouse.Tests.WebsiteTests create mode 100644 ProjectLighthouse.Tests.WebsiteTests/obj/Debug/net8.0/ProjectLighthouse.Tests.WebsiteTests.AssemblyInfo.cs create mode 100644 ProjectLighthouse.Tests.WebsiteTests/obj/Debug/net8.0/ProjectLighthouse.Tests.WebsiteTests.AssemblyInfoInputs.cache create mode 100644 ProjectLighthouse.Tests.WebsiteTests/obj/Debug/net8.0/ProjectLighthouse.Tests.WebsiteTests.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 ProjectLighthouse.Tests.WebsiteTests/obj/Debug/net8.0/ProjectLighthouse.Tests.WebsiteTests.assets.cache create mode 100644 ProjectLighthouse.Tests.WebsiteTests/obj/Debug/net8.0/ProjectLighthouse.Tests.WebsiteTests.csproj.AssemblyReference.cache create mode 100644 ProjectLighthouse.Tests.WebsiteTests/obj/ProjectLighthouse.Tests.WebsiteTests.csproj.nuget.dgspec.json create mode 100644 ProjectLighthouse.Tests.WebsiteTests/obj/ProjectLighthouse.Tests.WebsiteTests.csproj.nuget.g.props create mode 100644 ProjectLighthouse.Tests.WebsiteTests/obj/ProjectLighthouse.Tests.WebsiteTests.csproj.nuget.g.targets create mode 100644 ProjectLighthouse.Tests.WebsiteTests/obj/project.assets.json create mode 100644 ProjectLighthouse.Tests.WebsiteTests/obj/project.nuget.cache create mode 100644 ProjectLighthouse.Tests/bin/Debug/net8.0/CoverletSourceRootsMapping_LBPUnion.ProjectLighthouse.Tests create mode 100644 ProjectLighthouse.Tests/obj/Debug/net8.0/ProjectLighthouse.Tests.AssemblyInfo.cs create mode 100644 ProjectLighthouse.Tests/obj/Debug/net8.0/ProjectLighthouse.Tests.AssemblyInfoInputs.cache create mode 100644 ProjectLighthouse.Tests/obj/Debug/net8.0/ProjectLighthouse.Tests.GeneratedMSBuildEditorConfig.editorconfig create mode 100644 ProjectLighthouse.Tests/obj/Debug/net8.0/ProjectLighthouse.Tests.assets.cache create mode 100644 ProjectLighthouse.Tests/obj/Debug/net8.0/ProjectLighthouse.Tests.csproj.AssemblyReference.cache create mode 100644 ProjectLighthouse.Tests/obj/ProjectLighthouse.Tests.csproj.nuget.dgspec.json create mode 100644 ProjectLighthouse.Tests/obj/ProjectLighthouse.Tests.csproj.nuget.g.props create mode 100644 ProjectLighthouse.Tests/obj/ProjectLighthouse.Tests.csproj.nuget.g.targets create mode 100644 ProjectLighthouse.Tests/obj/project.assets.json create mode 100644 ProjectLighthouse.Tests/obj/project.nuget.cache diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 1b539962..485bfa76 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,135 +1,135 @@ - -# Contributor Covenant Code of Conduct - -## Our Pledge - -We as members, contributors, and leaders pledge to make participation in our -community a harassment-free experience for everyone, regardless of age, body -size, visible or invisible disability, ethnicity, sex characteristics, gender -identity and expression, level of experience, education, socio-economic status, -nationality, personal appearance, race, caste, color, religion, or sexual -identity and orientation. - -We pledge to act and interact in ways that contribute to an open, welcoming, -diverse, inclusive, and healthy community. - -## Our Standards - -Examples of behavior that contributes to a positive environment for our -community include: - -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, - and learning from the experience -* Focusing on what is best not just for us as individuals, but for the overall - community - -Examples of unacceptable behavior include: - -* The use of sexualized language or imagery, and sexual attention or advances of - any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others' private information, such as a physical or email address, - without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting - -## Enforcement Responsibilities - -Community leaders are responsible for clarifying and enforcing our standards of -acceptable behavior and will take appropriate and fair corrective action in -response to any behavior that they deem inappropriate, threatening, offensive, -or harmful. - -Community leaders have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions that are -not aligned to this Code of Conduct, and will communicate reasons for moderation -decisions when appropriate. - -## Scope - -This Code of Conduct applies within all community spaces, and also applies when -an individual is officially representing the community in public spaces. -Examples of representing our community include using an official e-mail address, -posting via an official social media account, or acting as an appointed -representative at an online or offline event. - -## Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported to the community leaders responsible for enforcement at: - -https://discord.gg/lbpunion - -All complaints will be reviewed and investigated promptly and fairly. - -All community leaders are obligated to respect the privacy and security of the -reporter of any incident. - -## Enforcement Guidelines - -Community leaders will follow these Community Impact Guidelines in determining -the consequences for any action they deem in violation of this Code of Conduct: - -### 1. Correction - -**Community Impact**: Use of inappropriate language or other behavior deemed -unprofessional or unwelcome in the community. - -**Consequence**: A private, written warning from community leaders, providing -clarity around the nature of the violation and an explanation of why the -behavior was inappropriate. A public apology may be requested. - -### 2. Warning - -**Community Impact**: A violation through a single incident or series of -actions. - -**Consequence**: A warning with consequences for continued behavior. No -interaction with the people involved, including unsolicited interaction with -those enforcing the Code of Conduct, for a specified period of time. This -includes avoiding interactions in community spaces as well as external channels -like social media. Violating these terms may lead to a temporary or permanent -ban. - -### 3. Temporary Ban - -**Community Impact**: A serious violation of community standards, including -sustained inappropriate behavior. - -**Consequence**: A temporary ban from any sort of interaction or public -communication with the community for a specified period of time. No public or -private interaction with the people involved, including unsolicited interaction -with those enforcing the Code of Conduct, is allowed during this period. -Violating these terms may lead to a permanent ban. - -### 4. Permanent Ban - -**Community Impact**: Demonstrating a pattern of violation of community -standards, including sustained inappropriate behavior, harassment of an -individual, or aggression toward or disparagement of classes of individuals. - -**Consequence**: A permanent ban from any sort of public interaction within the -community. - -## Attribution - -This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.1, available at -[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. - -Community Impact Guidelines were inspired by -[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. - -For answers to common questions about this code of conduct, see the FAQ at -[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at -[https://www.contributor-covenant.org/translations][translations]. - -[homepage]: https://www.contributor-covenant.org -[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html -[Mozilla CoC]: https://github.com/mozilla/diversity -[FAQ]: https://www.contributor-covenant.org/faq -[translations]: https://www.contributor-covenant.org/translations + +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at: + +https://discord.gg/lbpunion + +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at +[https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1b119211..54135007 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,99 +1,99 @@ -# Contributing - -## Setting up MySQL - -Project Lighthouse requires a MySQL database. For Linux users running docker, one can be set up using -the `docker-compose.yml` file in the root of the project folder. - -Next, make sure the `LIGHTHOUSE_DB_CONNECTION_STRING` environment variable is set correctly. By default, it -is `server=127.0.0.1;uid=root;pwd=lighthouse;database=lighthouse`. If you are running the database via the -above `docker-compose.yml` you shouldn't need to change this. For other development/especially production environments -you will need to change this. - -Once you've gotten MySQL running you can run Lighthouse. It will take care of the rest. - -## Connecting (PS3) - -You can use the Remote Patch utility in [UnionPatcher](https://github.com/LBPUnion/UnionPatcher) to manually patch your EBOOT.BIN; it works over the network and automatically downloads, decrypts, patches, encrypts, and uploads your PSN and Disc EBOOTs. - -If you are not using a PS3, see [the RPCS3 section](#connecting-rpcs3). - -## Connecting (RPCS3) - -Start by getting a copy of LittleBigPlanet 1/2/3 installed. (Check the LittleBigPlanet 1 section, since you'll need to do -extra steps for your game to not crash upon entering the pod computer). - -The game can be a digital copy (NPUA80472/NPUA80662/NPUA81116) or a disc copy (BCUS98148/BCUS98245/BCUS98362). - -Next, download [UnionPatcher](https://github.com/LBPUnion/UnionPatcher/). Binaries can be found by reading the `README.md` -file. - -You should have everything you need now, so open up RPCS3 and go to Utilities -> Decrypt PS3 Binaries. Point this -to `rpcs3/dev_hdd0/game/(title id)/USRDIR/EBOOT.BIN`. You can grab your title ID by right clicking the game in RPCS3 and -clicking Copy Info -> Copy Serial. - - -This should give you a file named `EBOOT.elf` in the same folder. This is your decrypted EBOOT. - -Now that you have your decrypted EBOOT, open UnionPatcher and select the `EBOOT.elf` you got earlier in the top box, -enter `http://localhost:10060/LITTLEBIGPLANETPS3_XML` in the second, and the output filename in the third. For this -guide we'll use `EBOOTlocalhost.elf`. - -Now, copy the `EBOOTlocalhost.elf` file to where you got your `EBOOT.elf` file from, and you're now good to go. - -To launch the game with the patched EBOOT, open up RPCS3, go to File, Boot S(Elf), and open up `EBOOTlocalhost.elf`. - -Assuming you patched the file correctly, the database is migrated, and -Project Lighthouse is running, the game should now connect, and you may begin contributing! - -### LittleBigPlanet 1 (RPCS3) - -For LittleBigPlanet 1 to work with RPCS3, follow the steps above normally. - -First, open your favourite hex editor. We recommend [HxD](https://mh-nexus.de/en/hxd/). - -Once you have a hex editor open, open your `EBOOTlocalhost.elf` file and search for the hex -values `73 63 65 4E 70 43 6F 6D 6D 65 72 63 65 32`. In HxD, this would be done by clicking on Search -> Replace, -clicking on the `Hex-values` tab, and entering the hex there. - -Then, you can zero it out by replacing it with `00 00 00 00 00 00 00 00 00 00 00 00 00 00`. - -What this does is remove all the references to the `sceNpCommerce2` function. The function is used for purchasing DLC, -which at this moment in time crashes RPCS3. - -After saving the file your LBP1 EBOOT can be used with RPCS3. - -## Contributing Tips - -### Database migrations - -Some modifications may require updates to the database schema. You can automatically create a migration file by: - -1. Making sure the tools are installed. You can do this by running `dotnet tool restore`. -2. Making sure `LIGHTHOUSE_DB_CONNECTION_STRING` is set correctly. See the `Running` section for more details. -3. Modifying the database schema via the C# portion of the code. Do not modify the actual SQL database. -4. Running `dotnet ef migrations add --project ProjectLighthouse`. - -This process will create a migration file from the changes made in the C# code. - -The new migrations will automatically be applied upon starting Lighthouse. - -### Running tests - -You can run tests either through your IDE or by running `dotnet tests`. - -Keep in mind while running database tests (which most tests are) you need to have `LIGHTHOUSE_DB_CONNECTION_STRING` set. - -### Continuous Integration (CI) Tips - -- You can skip CI runs for a commit if you specify `[skip ci]` at the beginning of the commit name. This is useful for - formatting changes, etc. -- When creating your first pull request, CI will not run initially. A team member will have to approve you for use of - running CI on a pull request. This is because of GitHub policy. - -### API Documentation - -You can access API documentation by looking at the XMLDoc in the controllers under `ProjectLighthouse.Controllers.Api` - -You can also access an interactive version by starting Lighthouse and accessing Swagger -at `http://localhost:10060/swagger/index.html`. +# Contributing + +## Setting up MySQL + +Project Lighthouse requires a MySQL database. For Linux users running docker, one can be set up using +the `docker-compose.yml` file in the root of the project folder. + +Next, make sure the `LIGHTHOUSE_DB_CONNECTION_STRING` environment variable is set correctly. By default, it +is `server=127.0.0.1;uid=root;pwd=lighthouse;database=lighthouse`. If you are running the database via the +above `docker-compose.yml` you shouldn't need to change this. For other development/especially production environments +you will need to change this. + +Once you've gotten MySQL running you can run Lighthouse. It will take care of the rest. + +## Connecting (PS3) + +You can use the Remote Patch utility in [UnionPatcher](https://github.com/LBPUnion/UnionPatcher) to manually patch your EBOOT.BIN; it works over the network and automatically downloads, decrypts, patches, encrypts, and uploads your PSN and Disc EBOOTs. + +If you are not using a PS3, see [the RPCS3 section](#connecting-rpcs3). + +## Connecting (RPCS3) + +Start by getting a copy of LittleBigPlanet 1/2/3 installed. (Check the LittleBigPlanet 1 section, since you'll need to do +extra steps for your game to not crash upon entering the pod computer). + +The game can be a digital copy (NPUA80472/NPUA80662/NPUA81116) or a disc copy (BCUS98148/BCUS98245/BCUS98362). + +Next, download [UnionPatcher](https://github.com/LBPUnion/UnionPatcher/). Binaries can be found by reading the `README.md` +file. + +You should have everything you need now, so open up RPCS3 and go to Utilities -> Decrypt PS3 Binaries. Point this +to `rpcs3/dev_hdd0/game/(title id)/USRDIR/EBOOT.BIN`. You can grab your title ID by right clicking the game in RPCS3 and +clicking Copy Info -> Copy Serial. + + +This should give you a file named `EBOOT.elf` in the same folder. This is your decrypted EBOOT. + +Now that you have your decrypted EBOOT, open UnionPatcher and select the `EBOOT.elf` you got earlier in the top box, +enter `http://localhost:10060/LITTLEBIGPLANETPS3_XML` in the second, and the output filename in the third. For this +guide we'll use `EBOOTlocalhost.elf`. + +Now, copy the `EBOOTlocalhost.elf` file to where you got your `EBOOT.elf` file from, and you're now good to go. + +To launch the game with the patched EBOOT, open up RPCS3, go to File, Boot S(Elf), and open up `EBOOTlocalhost.elf`. + +Assuming you patched the file correctly, the database is migrated, and +Project Lighthouse is running, the game should now connect, and you may begin contributing! + +### LittleBigPlanet 1 (RPCS3) + +For LittleBigPlanet 1 to work with RPCS3, follow the steps above normally. + +First, open your favourite hex editor. We recommend [HxD](https://mh-nexus.de/en/hxd/). + +Once you have a hex editor open, open your `EBOOTlocalhost.elf` file and search for the hex +values `73 63 65 4E 70 43 6F 6D 6D 65 72 63 65 32`. In HxD, this would be done by clicking on Search -> Replace, +clicking on the `Hex-values` tab, and entering the hex there. + +Then, you can zero it out by replacing it with `00 00 00 00 00 00 00 00 00 00 00 00 00 00`. + +What this does is remove all the references to the `sceNpCommerce2` function. The function is used for purchasing DLC, +which at this moment in time crashes RPCS3. + +After saving the file your LBP1 EBOOT can be used with RPCS3. + +## Contributing Tips + +### Database migrations + +Some modifications may require updates to the database schema. You can automatically create a migration file by: + +1. Making sure the tools are installed. You can do this by running `dotnet tool restore`. +2. Making sure `LIGHTHOUSE_DB_CONNECTION_STRING` is set correctly. See the `Running` section for more details. +3. Modifying the database schema via the C# portion of the code. Do not modify the actual SQL database. +4. Running `dotnet ef migrations add --project ProjectLighthouse`. + +This process will create a migration file from the changes made in the C# code. + +The new migrations will automatically be applied upon starting Lighthouse. + +### Running tests + +You can run tests either through your IDE or by running `dotnet tests`. + +Keep in mind while running database tests (which most tests are) you need to have `LIGHTHOUSE_DB_CONNECTION_STRING` set. + +### Continuous Integration (CI) Tips + +- You can skip CI runs for a commit if you specify `[skip ci]` at the beginning of the commit name. This is useful for + formatting changes, etc. +- When creating your first pull request, CI will not run initially. A team member will have to approve you for use of + running CI on a pull request. This is because of GitHub policy. + +### API Documentation + +You can access API documentation by looking at the XMLDoc in the controllers under `ProjectLighthouse.Controllers.Api` + +You can also access an interactive version by starting Lighthouse and accessing Swagger +at `http://localhost:10060/swagger/index.html`. diff --git a/Dockerfile b/Dockerfile index bf730b18..1f28c03a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,40 +1,40 @@ -# Build stage -FROM mcr.microsoft.com/dotnet/sdk:8.0-alpine AS build -WORKDIR /ProjectLighthouse -COPY *.sln ./ -COPY **/*.csproj ./ - -RUN dotnet sln list | grep ".csproj" \ - | while read -r line; do \ - mkdir -p $(dirname $line); \ - mv $(basename $line) $(dirname $line); \ - done; - -RUN dotnet restore - -COPY . . -RUN dotnet publish -c Release --property:OutputPath=/ProjectLighthouse/out/ --no-restore - -# Final running container -FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine AS final - -# Add non-root user -RUN addgroup -S lighthouse --gid 1001 && \ -adduser -S lighthouse -G lighthouse -h /lighthouse --uid 1001 && \ -mkdir -p /lighthouse/data && \ -mkdir -p /lighthouse/app && \ -mkdir -p /lighthouse/temp && \ -apk add --no-cache icu-libs su-exec tzdata - -ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false - -# Copy build files -COPY --from=build /ProjectLighthouse/out/publish /lighthouse/app -COPY --from=build /ProjectLighthouse/ProjectLighthouse/StaticFiles /lighthouse/temp/StaticFiles -COPY --from=build /ProjectLighthouse/scripts-and-tools/docker-entrypoint.sh /lighthouse - -RUN chown -R lighthouse:lighthouse /lighthouse && \ -chmod +x /lighthouse/docker-entrypoint.sh && \ -cp /lighthouse/app/appsettings.json /lighthouse/temp - +# Build stage +FROM mcr.microsoft.com/dotnet/sdk:8.0-alpine AS build +WORKDIR /ProjectLighthouse +COPY *.sln ./ +COPY **/*.csproj ./ + +RUN dotnet sln list | grep ".csproj" \ + | while read -r line; do \ + mkdir -p $(dirname $line); \ + mv $(basename $line) $(dirname $line); \ + done; + +RUN dotnet restore + +COPY . . +RUN dotnet publish -c Release --property:OutputPath=/ProjectLighthouse/out/ --no-restore + +# Final running container +FROM mcr.microsoft.com/dotnet/aspnet:8.0-alpine AS final + +# Add non-root user +RUN addgroup -S lighthouse --gid 1001 && \ +adduser -S lighthouse -G lighthouse -h /lighthouse --uid 1001 && \ +mkdir -p /lighthouse/data && \ +mkdir -p /lighthouse/app && \ +mkdir -p /lighthouse/temp && \ +apk add --no-cache icu-libs su-exec tzdata + +ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false + +# Copy build files +COPY --from=build /ProjectLighthouse/out/publish /lighthouse/app +COPY --from=build /ProjectLighthouse/ProjectLighthouse/StaticFiles /lighthouse/temp/StaticFiles +COPY --from=build /ProjectLighthouse/scripts-and-tools/docker-entrypoint.sh /lighthouse + +RUN chown -R lighthouse:lighthouse /lighthouse && \ +chmod +x /lighthouse/docker-entrypoint.sh && \ +cp /lighthouse/app/appsettings.json /lighthouse/temp + ENTRYPOINT ["/lighthouse/docker-entrypoint.sh"] \ No newline at end of file diff --git a/ProjectLighthouse.Servers.API/ApiEndpointController.cs b/ProjectLighthouse.Servers.API/ApiEndpointController.cs index 97423a50..d1e39295 100644 --- a/ProjectLighthouse.Servers.API/ApiEndpointController.cs +++ b/ProjectLighthouse.Servers.API/ApiEndpointController.cs @@ -1,9 +1,9 @@ -using Microsoft.AspNetCore.Mvc; - -namespace LBPUnion.ProjectLighthouse.Servers.API; - -[ApiController] -[Route("/api/v1")] -[Produces("application/json")] -public class ApiEndpointController : ControllerBase +using Microsoft.AspNetCore.Mvc; + +namespace LBPUnion.ProjectLighthouse.Servers.API; + +[ApiController] +[Route("/api/v1")] +[Produces("application/json")] +public class ApiEndpointController : ControllerBase { } \ No newline at end of file diff --git a/ProjectLighthouse.Servers.API/Controllers/RpcController.cs b/ProjectLighthouse.Servers.API/Controllers/RpcController.cs index 566782d3..7bb46b29 100644 --- a/ProjectLighthouse.Servers.API/Controllers/RpcController.cs +++ b/ProjectLighthouse.Servers.API/Controllers/RpcController.cs @@ -1,18 +1,18 @@ -using LBPUnion.ProjectLighthouse.Configuration; -using LBPUnion.ProjectLighthouse.Servers.API.Responses; -using Microsoft.AspNetCore.Mvc; - -namespace LBPUnion.ProjectLighthouse.Servers.API.Controllers; - -public class RpcController : ApiEndpointController -{ - /// - /// Returns basic information that Discord RPC clients can use for self-configuration. - /// - /// RpcResponse - /// The RPC configuration. - [HttpGet("rpc")] - [ProducesResponseType(typeof(RpcResponse), StatusCodes.Status200OK)] - public IActionResult GetRpcConfiguration() => - this.Ok(RpcResponse.CreateFromConfiguration(ServerConfiguration.Instance.RichPresenceConfiguration)); +using LBPUnion.ProjectLighthouse.Configuration; +using LBPUnion.ProjectLighthouse.Servers.API.Responses; +using Microsoft.AspNetCore.Mvc; + +namespace LBPUnion.ProjectLighthouse.Servers.API.Controllers; + +public class RpcController : ApiEndpointController +{ + /// + /// Returns basic information that Discord RPC clients can use for self-configuration. + /// + /// RpcResponse + /// The RPC configuration. + [HttpGet("rpc")] + [ProducesResponseType(typeof(RpcResponse), StatusCodes.Status200OK)] + public IActionResult GetRpcConfiguration() => + this.Ok(RpcResponse.CreateFromConfiguration(ServerConfiguration.Instance.RichPresenceConfiguration)); } \ No newline at end of file diff --git a/ProjectLighthouse.Servers.API/Controllers/SlotEndpoints.cs b/ProjectLighthouse.Servers.API/Controllers/SlotEndpoints.cs index 0b4823d5..abb6e22b 100644 --- a/ProjectLighthouse.Servers.API/Controllers/SlotEndpoints.cs +++ b/ProjectLighthouse.Servers.API/Controllers/SlotEndpoints.cs @@ -1,64 +1,64 @@ -#nullable enable -using LBPUnion.ProjectLighthouse.Configuration; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Extensions; -using LBPUnion.ProjectLighthouse.Servers.API.Responses; -using LBPUnion.ProjectLighthouse.Types.Entities.Level; -using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; - -namespace LBPUnion.ProjectLighthouse.Servers.API.Controllers; - -/// -/// A collection of endpoints relating to slots. -/// -public class SlotEndpoints : ApiEndpointController -{ - private readonly DatabaseContext database; - - public SlotEndpoints(DatabaseContext database) - { - this.database = database; - } - - /// - /// Gets a list of (stripped down) slots from the database. - /// - /// How many slots you want to retrieve. - /// How many slots to skip. - /// The slot - /// The slot list, if successful. - [HttpGet("slots")] - [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] - public async Task GetSlots([FromQuery] int limit = 20, [FromQuery] int skip = 0) - { - if (skip < 0) skip = 0; - if (limit < 0) limit = 0; - limit = Math.Min(ServerStatics.PageSize, limit); - - List minimalSlots = (await this.database.Slots.OrderByDescending(s => s.FirstUploaded) - .Skip(skip) - .Take(limit) - .ToListAsync()).ToSerializableList(MinimalApiSlot.CreateFromEntity); - - return this.Ok(minimalSlots); - } - - /// - /// Gets a slot (more commonly known as a level) and its information from the database. - /// - /// The ID of the slot - /// The slot - /// The slot, if successful. - /// The slot could not be found. - [HttpGet("slot/{id:int}")] - [ProducesResponseType(typeof(ApiSlot), StatusCodes.Status200OK)] - [ProducesResponseType(StatusCodes.Status404NotFound)] - public async Task GetSlot(int id) - { - SlotEntity? slot = await this.database.Slots.FirstOrDefaultAsync(u => u.SlotId == id); - if (slot == null) return this.NotFound(); - - return this.Ok(ApiSlot.CreateFromEntity(slot, this.database)); - } +#nullable enable +using LBPUnion.ProjectLighthouse.Configuration; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Extensions; +using LBPUnion.ProjectLighthouse.Servers.API.Responses; +using LBPUnion.ProjectLighthouse.Types.Entities.Level; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; + +namespace LBPUnion.ProjectLighthouse.Servers.API.Controllers; + +/// +/// A collection of endpoints relating to slots. +/// +public class SlotEndpoints : ApiEndpointController +{ + private readonly DatabaseContext database; + + public SlotEndpoints(DatabaseContext database) + { + this.database = database; + } + + /// + /// Gets a list of (stripped down) slots from the database. + /// + /// How many slots you want to retrieve. + /// How many slots to skip. + /// The slot + /// The slot list, if successful. + [HttpGet("slots")] + [ProducesResponseType(typeof(List), StatusCodes.Status200OK)] + public async Task GetSlots([FromQuery] int limit = 20, [FromQuery] int skip = 0) + { + if (skip < 0) skip = 0; + if (limit < 0) limit = 0; + limit = Math.Min(ServerStatics.PageSize, limit); + + List minimalSlots = (await this.database.Slots.OrderByDescending(s => s.FirstUploaded) + .Skip(skip) + .Take(limit) + .ToListAsync()).ToSerializableList(MinimalApiSlot.CreateFromEntity); + + return this.Ok(minimalSlots); + } + + /// + /// Gets a slot (more commonly known as a level) and its information from the database. + /// + /// The ID of the slot + /// The slot + /// The slot, if successful. + /// The slot could not be found. + [HttpGet("slot/{id:int}")] + [ProducesResponseType(typeof(ApiSlot), StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status404NotFound)] + public async Task GetSlot(int id) + { + SlotEntity? slot = await this.database.Slots.FirstOrDefaultAsync(u => u.SlotId == id); + if (slot == null) return this.NotFound(); + + return this.Ok(ApiSlot.CreateFromEntity(slot, this.database)); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Servers.API/Controllers/StatisticsEndpoints.cs b/ProjectLighthouse.Servers.API/Controllers/StatisticsEndpoints.cs index 76310aec..c82e78ca 100644 --- a/ProjectLighthouse.Servers.API/Controllers/StatisticsEndpoints.cs +++ b/ProjectLighthouse.Servers.API/Controllers/StatisticsEndpoints.cs @@ -1,139 +1,139 @@ -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Filter; -using LBPUnion.ProjectLighthouse.Filter.Filters; -using LBPUnion.ProjectLighthouse.Helpers; -using LBPUnion.ProjectLighthouse.Servers.API.Responses; -using LBPUnion.ProjectLighthouse.Types.Users; -using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; - -namespace LBPUnion.ProjectLighthouse.Servers.API.Controllers; - -/// -/// A collection of endpoints relating to statistics. -/// -public class StatisticsEndpoints : ApiEndpointController -{ - - private readonly DatabaseContext database; - - public StatisticsEndpoints(DatabaseContext database) - { - this.database = database; - } - - /// - /// Gets everything that StatisticsHelper provides. - /// - /// An instance of StatisticsResponse - [HttpGet("statistics")] - [ProducesResponseType(typeof(StatisticsResponse), StatusCodes.Status200OK)] - public async Task GetStatistics() - => this.Ok - ( - new StatisticsResponse - { - Photos = await StatisticsHelper.PhotoCount(this.database), - Slots = await StatisticsHelper.SlotCount(this.database, new SlotQueryBuilder()), - Users = await StatisticsHelper.UserCount(this.database), - RecentMatches = await StatisticsHelper.RecentMatches(this.database), - TeamPicks = await StatisticsHelper.SlotCount(this.database, new SlotQueryBuilder().AddFilter(new TeamPickFilter())), - } - ); - - private static readonly List gameVersions = new() - { - GameVersion.LittleBigPlanet1, - GameVersion.LittleBigPlanet2, - GameVersion.LittleBigPlanet3, - GameVersion.LittleBigPlanetVita, - GameVersion.LittleBigPlanetPSP, - }; - - private static readonly List platforms = new() - { - Platform.PS3, - Platform.RPCS3, - Platform.Vita, - Platform.PSP, - }; - - /// - /// Get player counts for each individual title - /// - /// An instance of PlayerCountByGameResponse - [HttpGet("playerCount")] - [HttpGet("playerCount/game")] - [ProducesResponseType(typeof(PlayerCountByGameResponse), StatusCodes.Status200OK)] - public async Task GetPlayerCounts() - { - List gameList = new(); - foreach (GameVersion version in gameVersions) - { - gameList.Add(new PlayerCountByGameObject - { - Game = version.ToString(), - PlayerCount = await StatisticsHelper.RecentMatches(this.database, l => l.GameVersion == version), - }); - } - PlayerCountByGameResponse response = new() - { - TotalPlayerCount = await StatisticsHelper.RecentMatches(this.database), - Games = gameList, - }; - - return this.Ok(response); - } - - /// - /// Get player counts for each individual platform - /// - /// An instance of PlayerCountByPlatformResponse - [HttpGet("playerCount/platform")] - [ProducesResponseType(typeof(PlayerCountByPlatformResponse), StatusCodes.Status200OK)] - public async Task GetPlayerCountsByPlatform() - { - List platformList = new(); - foreach (Platform platform in platforms) - { - platformList.Add(new PlayerCountByPlatformObject - { - Platform = platform.ToString(), - PlayerCount = await StatisticsHelper.RecentMatches(this.database, l => l.Platform == platform), - }); - } - - PlayerCountByPlatformResponse response = new() - { - TotalPlayerCount = await StatisticsHelper.RecentMatches(this.database), - Platforms = platformList, - }; - - return this.Ok(response); - } - - /// - /// Gets a list of online players - /// - /// An instance of PlayerListResponse - [HttpGet("players")] - [ProducesResponseType(typeof(PlayerListResponse), StatusCodes.Status200OK)] - public async Task GetPlayerList() - { - List players = await this.database.LastContacts.Where(l => TimeHelper.Timestamp - l.Timestamp < 300) - .Select(l => new PlayerListObject - { - Username = l.User!.Username, - Game = l.GameVersion.ToString(), - Platform = l.Platform.ToString(), - }) - .ToListAsync(); - - PlayerListResponse response = new() - { - Players = players, - }; - - return this.Ok(response); - } +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Filter; +using LBPUnion.ProjectLighthouse.Filter.Filters; +using LBPUnion.ProjectLighthouse.Helpers; +using LBPUnion.ProjectLighthouse.Servers.API.Responses; +using LBPUnion.ProjectLighthouse.Types.Users; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; + +namespace LBPUnion.ProjectLighthouse.Servers.API.Controllers; + +/// +/// A collection of endpoints relating to statistics. +/// +public class StatisticsEndpoints : ApiEndpointController +{ + + private readonly DatabaseContext database; + + public StatisticsEndpoints(DatabaseContext database) + { + this.database = database; + } + + /// + /// Gets everything that StatisticsHelper provides. + /// + /// An instance of StatisticsResponse + [HttpGet("statistics")] + [ProducesResponseType(typeof(StatisticsResponse), StatusCodes.Status200OK)] + public async Task GetStatistics() + => this.Ok + ( + new StatisticsResponse + { + Photos = await StatisticsHelper.PhotoCount(this.database), + Slots = await StatisticsHelper.SlotCount(this.database, new SlotQueryBuilder()), + Users = await StatisticsHelper.UserCount(this.database), + RecentMatches = await StatisticsHelper.RecentMatches(this.database), + TeamPicks = await StatisticsHelper.SlotCount(this.database, new SlotQueryBuilder().AddFilter(new TeamPickFilter())), + } + ); + + private static readonly List gameVersions = new() + { + GameVersion.LittleBigPlanet1, + GameVersion.LittleBigPlanet2, + GameVersion.LittleBigPlanet3, + GameVersion.LittleBigPlanetVita, + GameVersion.LittleBigPlanetPSP, + }; + + private static readonly List platforms = new() + { + Platform.PS3, + Platform.RPCS3, + Platform.Vita, + Platform.PSP, + }; + + /// + /// Get player counts for each individual title + /// + /// An instance of PlayerCountByGameResponse + [HttpGet("playerCount")] + [HttpGet("playerCount/game")] + [ProducesResponseType(typeof(PlayerCountByGameResponse), StatusCodes.Status200OK)] + public async Task GetPlayerCounts() + { + List gameList = new(); + foreach (GameVersion version in gameVersions) + { + gameList.Add(new PlayerCountByGameObject + { + Game = version.ToString(), + PlayerCount = await StatisticsHelper.RecentMatches(this.database, l => l.GameVersion == version), + }); + } + PlayerCountByGameResponse response = new() + { + TotalPlayerCount = await StatisticsHelper.RecentMatches(this.database), + Games = gameList, + }; + + return this.Ok(response); + } + + /// + /// Get player counts for each individual platform + /// + /// An instance of PlayerCountByPlatformResponse + [HttpGet("playerCount/platform")] + [ProducesResponseType(typeof(PlayerCountByPlatformResponse), StatusCodes.Status200OK)] + public async Task GetPlayerCountsByPlatform() + { + List platformList = new(); + foreach (Platform platform in platforms) + { + platformList.Add(new PlayerCountByPlatformObject + { + Platform = platform.ToString(), + PlayerCount = await StatisticsHelper.RecentMatches(this.database, l => l.Platform == platform), + }); + } + + PlayerCountByPlatformResponse response = new() + { + TotalPlayerCount = await StatisticsHelper.RecentMatches(this.database), + Platforms = platformList, + }; + + return this.Ok(response); + } + + /// + /// Gets a list of online players + /// + /// An instance of PlayerListResponse + [HttpGet("players")] + [ProducesResponseType(typeof(PlayerListResponse), StatusCodes.Status200OK)] + public async Task GetPlayerList() + { + List players = await this.database.LastContacts.Where(l => TimeHelper.Timestamp - l.Timestamp < 300) + .Select(l => new PlayerListObject + { + Username = l.User!.Username, + Game = l.GameVersion.ToString(), + Platform = l.Platform.ToString(), + }) + .ToListAsync(); + + PlayerListResponse response = new() + { + Players = players, + }; + + return this.Ok(response); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Servers.API/Controllers/StatusController.cs b/ProjectLighthouse.Servers.API/Controllers/StatusController.cs index ce883dba..fbec257b 100644 --- a/ProjectLighthouse.Servers.API/Controllers/StatusController.cs +++ b/ProjectLighthouse.Servers.API/Controllers/StatusController.cs @@ -1,9 +1,9 @@ -using Microsoft.AspNetCore.Mvc; - -namespace LBPUnion.ProjectLighthouse.Servers.API.Controllers; - -public class StatusController : ApiEndpointController -{ - [AcceptVerbs("GET", "HEAD", Route = "status")] - public IActionResult GetStatus() => this.Ok(); +using Microsoft.AspNetCore.Mvc; + +namespace LBPUnion.ProjectLighthouse.Servers.API.Controllers; + +public class StatusController : ApiEndpointController +{ + [AcceptVerbs("GET", "HEAD", Route = "status")] + public IActionResult GetStatus() => this.Ok(); } \ No newline at end of file diff --git a/ProjectLighthouse.Servers.API/Controllers/UserEndpoints.cs b/ProjectLighthouse.Servers.API/Controllers/UserEndpoints.cs index 18313a1f..63b6dfa3 100644 --- a/ProjectLighthouse.Servers.API/Controllers/UserEndpoints.cs +++ b/ProjectLighthouse.Servers.API/Controllers/UserEndpoints.cs @@ -1,122 +1,122 @@ -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Extensions; -using LBPUnion.ProjectLighthouse.Helpers; -using LBPUnion.ProjectLighthouse.Servers.API.Responses; -using LBPUnion.ProjectLighthouse.Types.Entities.Profile; -using LBPUnion.ProjectLighthouse.Types.Entities.Token; -using LBPUnion.ProjectLighthouse.Types.Users; -using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; - -namespace LBPUnion.ProjectLighthouse.Servers.API.Controllers; - -/// -/// A collection of endpoints relating to users. -/// -public class UserEndpoints : ApiEndpointController -{ - private readonly DatabaseContext database; - - public UserEndpoints(DatabaseContext database) - { - this.database = database; - } - - /// - /// Gets a user and their information from the database. - /// - /// The ID of the user - /// The user - /// The user, if successful. - /// The user could not be found. - [HttpGet("user/{id:int}")] - [ProducesResponseType(typeof(ApiUser), StatusCodes.Status200OK)] - [ProducesResponseType(StatusCodes.Status404NotFound)] - public async Task GetUser(int id) - { - UserEntity? user = await this.database.Users.FirstOrDefaultAsync(u => u.UserId == id); - if (user == null) return this.NotFound(); - - return this.Ok(ApiUser.CreateFromEntity(user)); - } - - [HttpGet("username/{username}")] - [ProducesResponseType(typeof(ApiUser), StatusCodes.Status200OK)] - [ProducesResponseType(StatusCodes.Status404NotFound)] - public async Task GetUser(string username) - { - UserEntity? user = await this.database.Users.FirstOrDefaultAsync(u => u.Username == username); - if (user == null) return this.NotFound(); - - return this.Ok(ApiUser.CreateFromEntity(user)); - } - - /// - /// Searches for the user based on the query - /// - /// The search query - /// A list of users - /// The list of users, if any were found - /// No users matched the query - [HttpGet("search/user")] - [ProducesResponseType(typeof(ApiUser), StatusCodes.Status200OK)] - [ProducesResponseType(StatusCodes.Status404NotFound)] - public async Task SearchUsers(string query) - { - List users = (await this.database.Users - .Where(u => u.PermissionLevel != PermissionLevel.Banned && u.Username.Contains(query)) - .Where(u => u.ProfileVisibility == PrivacyType.All) - .OrderByDescending(b => b.UserId) - .Take(20) - .ToListAsync()).ToSerializableList(ApiUser.CreateFromEntity); - if (!users.Any()) return this.NotFound(); - - return this.Ok(users); - } - - /// - /// Gets a user and their information from the database. - /// - /// The ID of the user - /// The user's status - /// The user's status, if successful. - /// The user could not be found. - [HttpGet("user/{id:int}/status")] - [ProducesResponseType(typeof(ApiUser), StatusCodes.Status200OK)] - [ProducesResponseType(StatusCodes.Status404NotFound)] - public IActionResult GetUserStatus(int id) - { - UserStatus userStatus = new(this.database, id); - - return this.Ok(userStatus); - } - - [HttpPost("user/inviteToken")] - [HttpPost("user/inviteToken/{username}")] - public async Task CreateUserInviteToken([FromRoute] string? username) - { - if (!Configuration.ServerConfiguration.Instance.Authentication.RegistrationEnabled) - return this.NotFound(); - - ApiKeyEntity? apiKey = this.database.ApiKeyFromWebRequest(this.Request); - if (apiKey == null) return this.StatusCode(403); - - if (!string.IsNullOrWhiteSpace(username)) - { - bool userExists = await this.database.Users.AnyAsync(u => u.Username == username); - if (userExists) return this.BadRequest(); - } - - RegistrationTokenEntity token = new() - { - Created = DateTime.UtcNow, - Token = CryptoHelper.GenerateAuthToken(), - Username = username, - }; - - this.database.RegistrationTokens.Add(token); - await this.database.SaveChangesAsync(); - - return this.Ok(token.Token); - } +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Extensions; +using LBPUnion.ProjectLighthouse.Helpers; +using LBPUnion.ProjectLighthouse.Servers.API.Responses; +using LBPUnion.ProjectLighthouse.Types.Entities.Profile; +using LBPUnion.ProjectLighthouse.Types.Entities.Token; +using LBPUnion.ProjectLighthouse.Types.Users; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; + +namespace LBPUnion.ProjectLighthouse.Servers.API.Controllers; + +/// +/// A collection of endpoints relating to users. +/// +public class UserEndpoints : ApiEndpointController +{ + private readonly DatabaseContext database; + + public UserEndpoints(DatabaseContext database) + { + this.database = database; + } + + /// + /// Gets a user and their information from the database. + /// + /// The ID of the user + /// The user + /// The user, if successful. + /// The user could not be found. + [HttpGet("user/{id:int}")] + [ProducesResponseType(typeof(ApiUser), StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status404NotFound)] + public async Task GetUser(int id) + { + UserEntity? user = await this.database.Users.FirstOrDefaultAsync(u => u.UserId == id); + if (user == null) return this.NotFound(); + + return this.Ok(ApiUser.CreateFromEntity(user)); + } + + [HttpGet("username/{username}")] + [ProducesResponseType(typeof(ApiUser), StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status404NotFound)] + public async Task GetUser(string username) + { + UserEntity? user = await this.database.Users.FirstOrDefaultAsync(u => u.Username == username); + if (user == null) return this.NotFound(); + + return this.Ok(ApiUser.CreateFromEntity(user)); + } + + /// + /// Searches for the user based on the query + /// + /// The search query + /// A list of users + /// The list of users, if any were found + /// No users matched the query + [HttpGet("search/user")] + [ProducesResponseType(typeof(ApiUser), StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status404NotFound)] + public async Task SearchUsers(string query) + { + List users = (await this.database.Users + .Where(u => u.PermissionLevel != PermissionLevel.Banned && u.Username.Contains(query)) + .Where(u => u.ProfileVisibility == PrivacyType.All) + .OrderByDescending(b => b.UserId) + .Take(20) + .ToListAsync()).ToSerializableList(ApiUser.CreateFromEntity); + if (!users.Any()) return this.NotFound(); + + return this.Ok(users); + } + + /// + /// Gets a user and their information from the database. + /// + /// The ID of the user + /// The user's status + /// The user's status, if successful. + /// The user could not be found. + [HttpGet("user/{id:int}/status")] + [ProducesResponseType(typeof(ApiUser), StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status404NotFound)] + public IActionResult GetUserStatus(int id) + { + UserStatus userStatus = new(this.database, id); + + return this.Ok(userStatus); + } + + [HttpPost("user/inviteToken")] + [HttpPost("user/inviteToken/{username}")] + public async Task CreateUserInviteToken([FromRoute] string? username) + { + if (!Configuration.ServerConfiguration.Instance.Authentication.RegistrationEnabled) + return this.NotFound(); + + ApiKeyEntity? apiKey = this.database.ApiKeyFromWebRequest(this.Request); + if (apiKey == null) return this.StatusCode(403); + + if (!string.IsNullOrWhiteSpace(username)) + { + bool userExists = await this.database.Users.AnyAsync(u => u.Username == username); + if (userExists) return this.BadRequest(); + } + + RegistrationTokenEntity token = new() + { + Created = DateTime.UtcNow, + Token = CryptoHelper.GenerateAuthToken(), + Username = username, + }; + + this.database.RegistrationTokens.Add(token); + await this.database.SaveChangesAsync(); + + return this.Ok(token.Token); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Servers.API/appsettings.Development.json b/ProjectLighthouse.Servers.API/appsettings.Development.json index 0c208ae9..ff66ba6b 100644 --- a/ProjectLighthouse.Servers.API/appsettings.Development.json +++ b/ProjectLighthouse.Servers.API/appsettings.Development.json @@ -1,8 +1,8 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - } -} +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/ProjectLighthouse.Servers.API/appsettings.json b/ProjectLighthouse.Servers.API/appsettings.json index 10f68b8c..4d566948 100644 --- a/ProjectLighthouse.Servers.API/appsettings.json +++ b/ProjectLighthouse.Servers.API/appsettings.json @@ -1,9 +1,9 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - }, - "AllowedHosts": "*" -} +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/CommentController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/CommentController.cs index 7e3baeb9..200a57c6 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/CommentController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/CommentController.cs @@ -1,200 +1,200 @@ -#nullable enable -using LBPUnion.ProjectLighthouse.Configuration; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Extensions; -using LBPUnion.ProjectLighthouse.Helpers; -using LBPUnion.ProjectLighthouse.Types.Entities.Profile; -using LBPUnion.ProjectLighthouse.Types.Entities.Token; -using LBPUnion.ProjectLighthouse.Types.Filter; -using LBPUnion.ProjectLighthouse.Types.Levels; -using LBPUnion.ProjectLighthouse.Types.Serialization; -using LBPUnion.ProjectLighthouse.Types.Users; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; - -namespace LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers; - -[ApiController] -[Authorize] -[Route("LITTLEBIGPLANETPS3_XML/")] -[Produces("text/xml")] -public class CommentController : ControllerBase -{ - private readonly DatabaseContext database; - public CommentController(DatabaseContext database) - { - this.database = database; - } - - [HttpPost("rateUserComment/{username}")] - [HttpPost("rateComment/{slotType}/{slotId:int}")] - public async Task RateComment([FromQuery] int commentId, [FromQuery] int rating, string? username, string? slotType, int slotId) - { - GameTokenEntity token = this.GetToken(); - - // Return bad request if both are true or both are false - if ((slotId == 0 || SlotHelper.IsTypeInvalid(slotType)) == (username == null)) return this.BadRequest(); - - bool success = await this.database.RateComment(token.UserId, commentId, rating); - if (!success) return this.BadRequest(); - - return this.Ok(); - } - - [HttpGet("comments/{slotType}/{slotId:int}")] - [HttpGet("userComments/{username}")] - public async Task GetComments(string? username, string? slotType, int slotId) - { - GameTokenEntity token = this.GetToken(); - - UserEntity? user = await this.database.UserFromGameToken(token); - if (user == null) return this.Unauthorized(); - - if ((slotId == 0 || SlotHelper.IsTypeInvalid(slotType)) == (username == null)) return this.BadRequest(); - - int originalSlotId = slotId; - - if (slotType == "developer") slotId = await SlotHelper.GetPlaceholderSlotId(this.database, slotId, SlotType.Developer); - - int targetId; - CommentType type = username == null ? CommentType.Level : CommentType.Profile; - - PaginationData pageData = this.Request.GetPaginationData(); - - IQueryable baseQuery = this.database.Comments.Where(c => c.Type == type); - - if (type == CommentType.Level) - { - targetId = await this.database.Slots.Where(s => s.SlotId == slotId) - .Where(s => s.CommentsEnabled && !s.Hidden) - .Select(s => s.SlotId) - .FirstOrDefaultAsync(); - - baseQuery = baseQuery.Where(c => c.TargetSlotId == targetId); - } - else - { - targetId = await this.database.Users.Where(u => u.Username == username) - .Where(u => u.CommentsEnabled) - .Select(u => u.UserId) - .FirstOrDefaultAsync(); - - baseQuery = baseQuery.Where(c => c.TargetUserId == targetId); - } - - if (targetId == 0) return this.NotFound(); - - List blockedUsers = await ( - from blockedProfile in this.database.BlockedProfiles - where blockedProfile.UserId == token.UserId - select blockedProfile.BlockedUserId).ToListAsync(); - - List comments = (await baseQuery.OrderByDescending(c => c.Timestamp) - .Where(c => !blockedUsers.Contains(c.PosterUserId)) - .Include(c => c.Poster) - .Where(c => c.Poster.PermissionLevel != PermissionLevel.Banned) - .ApplyPagination(pageData) - .ToListAsync()).ToSerializableList(c => GameComment.CreateFromEntity(c, token.UserId)); - - if (type == CommentType.Level && slotType == "developer" && user.IsModerator && pageData.PageStart == 1) - { - comments.Insert(0, new GameComment - { - CommentId = 0, - Timestamp = 0, - AuthorUsername = "LH", - Message = $"Slot ID: {targetId}, Story level ID: {originalSlotId}", - }); - } - - return this.Ok(new CommentListResponse(comments)); - } - - [HttpPost("postUserComment/{username}")] - [HttpPost("postComment/{slotType}/{slotId:int}")] - public async Task PostComment(string? username, string? slotType, int slotId) - { - GameTokenEntity token = this.GetToken(); - - // Deny request if in read-only mode - if (ServerConfiguration.Instance.UserGeneratedContentLimits.ReadOnlyMode) return this.BadRequest(); - - GameComment? comment = await this.DeserializeBody(); - if (comment?.Message == null) return this.BadRequest(); - - if ((slotId == 0 || SlotHelper.IsTypeInvalid(slotType)) == (username == null)) return this.BadRequest(); - - if (slotType == "developer") slotId = await SlotHelper.GetPlaceholderSlotId(this.database, slotId, SlotType.Developer); - - CommentType type = username == null ? CommentType.Level : CommentType.Profile; - - int targetId; - if (type == CommentType.Level) - { - targetId = await this.database.Slots.Where(s => s.SlotId == slotId) - .Where(s => s.CommentsEnabled && !s.Hidden) - .Select(s => s.SlotId) - .FirstOrDefaultAsync(); - } - else - { - targetId = await this.database.UserIdFromUsername(username!); - } - - string filteredText = CensorHelper.FilterMessage(comment.Message, FilterLocation.ChatMessage, username); - - bool success = await this.database.PostComment(token.UserId, targetId, type, filteredText); - if (success) return this.Ok(); - - return this.BadRequest(); - } - - [HttpPost("deleteUserComment/{username}")] - [HttpPost("deleteComment/{slotType}/{slotId:int}")] - public async Task DeleteComment([FromQuery] int commentId, string? username, string? slotType, int slotId) - { - GameTokenEntity token = this.GetToken(); - - // Deny request if in read-only mode - if (ServerConfiguration.Instance.UserGeneratedContentLimits.ReadOnlyMode) return this.BadRequest(); - - if ((slotId == 0 || SlotHelper.IsTypeInvalid(slotType)) == (username == null)) return this.BadRequest(); - - CommentEntity? comment = await this.database.Comments.FirstOrDefaultAsync(c => c.CommentId == commentId); - if (comment == null) return this.NotFound(); - - if (comment.Deleted) return this.Ok(); - - bool canDelete; - if (comment.Type == CommentType.Profile) - { - canDelete = comment.PosterUserId == token.UserId || comment.TargetUserId == token.UserId; - } - else - { - if (slotType == "developer") slotId = await SlotHelper.GetPlaceholderSlotId(this.database, slotId, SlotType.Developer); - - if (slotId != comment.TargetSlotId) return this.BadRequest(); - - int slotCreator = await this.database.Slots.Where(s => s.SlotId == comment.TargetSlotId) - .Where(s => s.CommentsEnabled) - .Select(s => s.CreatorId) - .FirstOrDefaultAsync(); - - // Comments are disabled or the slot doesn't have a creator - if (slotCreator == 0) return this.BadRequest(); - - canDelete = comment.PosterUserId == token.UserId || slotCreator == token.UserId; - } - - if (!canDelete) return this.Forbid(); - - comment.Deleted = true; - comment.DeletedBy = await this.database.UsernameFromGameToken(token); - comment.DeletedType = "user"; - - await this.database.SaveChangesAsync(); - return this.Ok(); - } +#nullable enable +using LBPUnion.ProjectLighthouse.Configuration; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Extensions; +using LBPUnion.ProjectLighthouse.Helpers; +using LBPUnion.ProjectLighthouse.Types.Entities.Profile; +using LBPUnion.ProjectLighthouse.Types.Entities.Token; +using LBPUnion.ProjectLighthouse.Types.Filter; +using LBPUnion.ProjectLighthouse.Types.Levels; +using LBPUnion.ProjectLighthouse.Types.Serialization; +using LBPUnion.ProjectLighthouse.Types.Users; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; + +namespace LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers; + +[ApiController] +[Authorize] +[Route("LITTLEBIGPLANETPS3_XML/")] +[Produces("text/xml")] +public class CommentController : ControllerBase +{ + private readonly DatabaseContext database; + public CommentController(DatabaseContext database) + { + this.database = database; + } + + [HttpPost("rateUserComment/{username}")] + [HttpPost("rateComment/{slotType}/{slotId:int}")] + public async Task RateComment([FromQuery] int commentId, [FromQuery] int rating, string? username, string? slotType, int slotId) + { + GameTokenEntity token = this.GetToken(); + + // Return bad request if both are true or both are false + if ((slotId == 0 || SlotHelper.IsTypeInvalid(slotType)) == (username == null)) return this.BadRequest(); + + bool success = await this.database.RateComment(token.UserId, commentId, rating); + if (!success) return this.BadRequest(); + + return this.Ok(); + } + + [HttpGet("comments/{slotType}/{slotId:int}")] + [HttpGet("userComments/{username}")] + public async Task GetComments(string? username, string? slotType, int slotId) + { + GameTokenEntity token = this.GetToken(); + + UserEntity? user = await this.database.UserFromGameToken(token); + if (user == null) return this.Unauthorized(); + + if ((slotId == 0 || SlotHelper.IsTypeInvalid(slotType)) == (username == null)) return this.BadRequest(); + + int originalSlotId = slotId; + + if (slotType == "developer") slotId = await SlotHelper.GetPlaceholderSlotId(this.database, slotId, SlotType.Developer); + + int targetId; + CommentType type = username == null ? CommentType.Level : CommentType.Profile; + + PaginationData pageData = this.Request.GetPaginationData(); + + IQueryable baseQuery = this.database.Comments.Where(c => c.Type == type); + + if (type == CommentType.Level) + { + targetId = await this.database.Slots.Where(s => s.SlotId == slotId) + .Where(s => s.CommentsEnabled && !s.Hidden) + .Select(s => s.SlotId) + .FirstOrDefaultAsync(); + + baseQuery = baseQuery.Where(c => c.TargetSlotId == targetId); + } + else + { + targetId = await this.database.Users.Where(u => u.Username == username) + .Where(u => u.CommentsEnabled) + .Select(u => u.UserId) + .FirstOrDefaultAsync(); + + baseQuery = baseQuery.Where(c => c.TargetUserId == targetId); + } + + if (targetId == 0) return this.NotFound(); + + List blockedUsers = await ( + from blockedProfile in this.database.BlockedProfiles + where blockedProfile.UserId == token.UserId + select blockedProfile.BlockedUserId).ToListAsync(); + + List comments = (await baseQuery.OrderByDescending(c => c.Timestamp) + .Where(c => !blockedUsers.Contains(c.PosterUserId)) + .Include(c => c.Poster) + .Where(c => c.Poster.PermissionLevel != PermissionLevel.Banned) + .ApplyPagination(pageData) + .ToListAsync()).ToSerializableList(c => GameComment.CreateFromEntity(c, token.UserId)); + + if (type == CommentType.Level && slotType == "developer" && user.IsModerator && pageData.PageStart == 1) + { + comments.Insert(0, new GameComment + { + CommentId = 0, + Timestamp = 0, + AuthorUsername = "LH", + Message = $"Slot ID: {targetId}, Story level ID: {originalSlotId}", + }); + } + + return this.Ok(new CommentListResponse(comments)); + } + + [HttpPost("postUserComment/{username}")] + [HttpPost("postComment/{slotType}/{slotId:int}")] + public async Task PostComment(string? username, string? slotType, int slotId) + { + GameTokenEntity token = this.GetToken(); + + // Deny request if in read-only mode + if (ServerConfiguration.Instance.UserGeneratedContentLimits.ReadOnlyMode) return this.BadRequest(); + + GameComment? comment = await this.DeserializeBody(); + if (comment?.Message == null) return this.BadRequest(); + + if ((slotId == 0 || SlotHelper.IsTypeInvalid(slotType)) == (username == null)) return this.BadRequest(); + + if (slotType == "developer") slotId = await SlotHelper.GetPlaceholderSlotId(this.database, slotId, SlotType.Developer); + + CommentType type = username == null ? CommentType.Level : CommentType.Profile; + + int targetId; + if (type == CommentType.Level) + { + targetId = await this.database.Slots.Where(s => s.SlotId == slotId) + .Where(s => s.CommentsEnabled && !s.Hidden) + .Select(s => s.SlotId) + .FirstOrDefaultAsync(); + } + else + { + targetId = await this.database.UserIdFromUsername(username!); + } + + string filteredText = CensorHelper.FilterMessage(comment.Message, FilterLocation.ChatMessage, username); + + bool success = await this.database.PostComment(token.UserId, targetId, type, filteredText); + if (success) return this.Ok(); + + return this.BadRequest(); + } + + [HttpPost("deleteUserComment/{username}")] + [HttpPost("deleteComment/{slotType}/{slotId:int}")] + public async Task DeleteComment([FromQuery] int commentId, string? username, string? slotType, int slotId) + { + GameTokenEntity token = this.GetToken(); + + // Deny request if in read-only mode + if (ServerConfiguration.Instance.UserGeneratedContentLimits.ReadOnlyMode) return this.BadRequest(); + + if ((slotId == 0 || SlotHelper.IsTypeInvalid(slotType)) == (username == null)) return this.BadRequest(); + + CommentEntity? comment = await this.database.Comments.FirstOrDefaultAsync(c => c.CommentId == commentId); + if (comment == null) return this.NotFound(); + + if (comment.Deleted) return this.Ok(); + + bool canDelete; + if (comment.Type == CommentType.Profile) + { + canDelete = comment.PosterUserId == token.UserId || comment.TargetUserId == token.UserId; + } + else + { + if (slotType == "developer") slotId = await SlotHelper.GetPlaceholderSlotId(this.database, slotId, SlotType.Developer); + + if (slotId != comment.TargetSlotId) return this.BadRequest(); + + int slotCreator = await this.database.Slots.Where(s => s.SlotId == comment.TargetSlotId) + .Where(s => s.CommentsEnabled) + .Select(s => s.CreatorId) + .FirstOrDefaultAsync(); + + // Comments are disabled or the slot doesn't have a creator + if (slotCreator == 0) return this.BadRequest(); + + canDelete = comment.PosterUserId == token.UserId || slotCreator == token.UserId; + } + + if (!canDelete) return this.Forbid(); + + comment.Deleted = true; + comment.DeletedBy = await this.database.UsernameFromGameToken(token); + comment.DeletedType = "user"; + + await this.database.SaveChangesAsync(); + return this.Ok(); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/DeveloperController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/DeveloperController.cs index 503356d6..dbb1738b 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/DeveloperController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/DeveloperController.cs @@ -1,15 +1,15 @@ -using LBPUnion.ProjectLighthouse.Types.Serialization; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; - -namespace LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers; - -[ApiController] -[Authorize] -[Route("LITTLEBIGPLANETPS3_XML/")] -[Produces("text/xml")] -public class DeveloperController : Controller -{ - [HttpGet("developer_videos")] - public IActionResult DeveloperVideos() => this.Ok(new GameDeveloperVideos()); +using LBPUnion.ProjectLighthouse.Types.Serialization; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; + +namespace LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers; + +[ApiController] +[Authorize] +[Route("LITTLEBIGPLANETPS3_XML/")] +[Produces("text/xml")] +public class DeveloperController : Controller +{ + [HttpGet("developer_videos")] + public IActionResult DeveloperVideos() => this.Ok(new GameDeveloperVideos()); } \ No newline at end of file diff --git a/ProjectLighthouse.Servers.GameServer/Controllers/FriendsController.cs b/ProjectLighthouse.Servers.GameServer/Controllers/FriendsController.cs index 83e198d8..a571aeb3 100644 --- a/ProjectLighthouse.Servers.GameServer/Controllers/FriendsController.cs +++ b/ProjectLighthouse.Servers.GameServer/Controllers/FriendsController.cs @@ -1,93 +1,93 @@ -#nullable enable -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Extensions; -using LBPUnion.ProjectLighthouse.Servers.GameServer.Types.Users; -using LBPUnion.ProjectLighthouse.StorableLists.Stores; -using LBPUnion.ProjectLighthouse.Types.Entities.Profile; -using LBPUnion.ProjectLighthouse.Types.Entities.Token; -using LBPUnion.ProjectLighthouse.Types.Serialization; -using LBPUnion.ProjectLighthouse.Types.Users; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; - -namespace LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers; - -[ApiController] -[Authorize] -[Route("LITTLEBIGPLANETPS3_XML/")] -[Produces("text/xml")] -public class FriendsController : ControllerBase -{ - private readonly DatabaseContext database; - - public FriendsController(DatabaseContext database) - { - this.database = database; - } - - [HttpPost("npdata")] - public async Task NPData() - { - GameTokenEntity token = this.GetToken(); - - NPData? npData = await this.DeserializeBody(); - if (npData == null) return this.BadRequest(); - - List friends = new(); - foreach (string friendName in npData.Friends ?? new List()) - { - UserEntity? friend = await this.database.Users.FirstOrDefaultAsync(u => u.Username == friendName); - if (friend == null) continue; - - friends.Add(friend); - } - - List blockedUsers = new(); - foreach (string blockedUserName in npData.BlockedUsers ?? new List()) - { - UserEntity? blockedUser = await this.database.Users.FirstOrDefaultAsync(u => u.Username == blockedUserName); - if (blockedUser == null) continue; - - blockedUsers.Add(blockedUser.UserId); - } - - UserFriendData friendStore = UserFriendStore.GetUserFriendData(token.UserId) ?? UserFriendStore.CreateUserFriendData(token.UserId); - - friendStore.FriendIds = friends.Select(u => u.UserId).ToList(); - friendStore.BlockedIds = blockedUsers; - - UserFriendStore.UpdateFriendData(friendStore); - - List minimalFriends = - friends.Select(u => new MinimalUserProfile - { - UserHandle = new NpHandle(u.Username, ""), - }).ToList(); - - return this.Ok(new FriendResponse(minimalFriends)); - } - - [HttpGet("myFriends")] - public async Task MyFriends() - { - GameTokenEntity token = this.GetToken(); - - UserFriendData? friendStore = UserFriendStore.GetUserFriendData(token.UserId); - - GenericUserResponse response = new("myFriends", new List()); - - if (friendStore == null) - return this.Ok(response); - - foreach (int friendId in friendStore.FriendIds) - { - UserEntity? friend = await this.database.Users.FirstOrDefaultAsync(u => u.UserId == friendId); - if (friend == null) continue; - - response.Users.Add(GameUser.CreateFromEntity(friend, token.GameVersion)); - } - - return this.Ok(response); - } +#nullable enable +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Extensions; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Types.Users; +using LBPUnion.ProjectLighthouse.StorableLists.Stores; +using LBPUnion.ProjectLighthouse.Types.Entities.Profile; +using LBPUnion.ProjectLighthouse.Types.Entities.Token; +using LBPUnion.ProjectLighthouse.Types.Serialization; +using LBPUnion.ProjectLighthouse.Types.Users; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; + +namespace LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers; + +[ApiController] +[Authorize] +[Route("LITTLEBIGPLANETPS3_XML/")] +[Produces("text/xml")] +public class FriendsController : ControllerBase +{ + private readonly DatabaseContext database; + + public FriendsController(DatabaseContext database) + { + this.database = database; + } + + [HttpPost("npdata")] + public async Task NPData() + { + GameTokenEntity token = this.GetToken(); + + NPData? npData = await this.DeserializeBody(); + if (npData == null) return this.BadRequest(); + + List friends = new(); + foreach (string friendName in npData.Friends ?? new List()) + { + UserEntity? friend = await this.database.Users.FirstOrDefaultAsync(u => u.Username == friendName); + if (friend == null) continue; + + friends.Add(friend); + } + + List blockedUsers = new(); + foreach (string blockedUserName in npData.BlockedUsers ?? new List()) + { + UserEntity? blockedUser = await this.database.Users.FirstOrDefaultAsync(u => u.Username == blockedUserName); + if (blockedUser == null) continue; + + blockedUsers.Add(blockedUser.UserId); + } + + UserFriendData friendStore = UserFriendStore.GetUserFriendData(token.UserId) ?? UserFriendStore.CreateUserFriendData(token.UserId); + + friendStore.FriendIds = friends.Select(u => u.UserId).ToList(); + friendStore.BlockedIds = blockedUsers; + + UserFriendStore.UpdateFriendData(friendStore); + + List minimalFriends = + friends.Select(u => new MinimalUserProfile + { + UserHandle = new NpHandle(u.Username, ""), + }).ToList(); + + return this.Ok(new FriendResponse(minimalFriends)); + } + + [HttpGet("myFriends")] + public async Task MyFriends() + { + GameTokenEntity token = this.GetToken(); + + UserFriendData? friendStore = UserFriendStore.GetUserFriendData(token.UserId); + + GenericUserResponse response = new("myFriends", new List()); + + if (friendStore == null) + return this.Ok(response); + + foreach (int friendId in friendStore.FriendIds) + { + UserEntity? friend = await this.database.Users.FirstOrDefaultAsync(u => u.UserId == friendId); + if (friend == null) continue; + + response.Users.Add(GameUser.CreateFromEntity(friend, token.GameVersion)); + } + + return this.Ok(response); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Servers.GameServer/appsettings.Development.json b/ProjectLighthouse.Servers.GameServer/appsettings.Development.json index 0c208ae9..ff66ba6b 100644 --- a/ProjectLighthouse.Servers.GameServer/appsettings.Development.json +++ b/ProjectLighthouse.Servers.GameServer/appsettings.Development.json @@ -1,8 +1,8 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - } -} +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} diff --git a/ProjectLighthouse.Servers.GameServer/appsettings.json b/ProjectLighthouse.Servers.GameServer/appsettings.json index 10f68b8c..4d566948 100644 --- a/ProjectLighthouse.Servers.GameServer/appsettings.json +++ b/ProjectLighthouse.Servers.GameServer/appsettings.json @@ -1,9 +1,9 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft.AspNetCore": "Warning" - } - }, - "AllowedHosts": "*" -} +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} diff --git a/ProjectLighthouse.Tests.GameApiTests/AssemblyInfo.cs b/ProjectLighthouse.Tests.GameApiTests/AssemblyInfo.cs index 7db84979..83577565 100644 --- a/ProjectLighthouse.Tests.GameApiTests/AssemblyInfo.cs +++ b/ProjectLighthouse.Tests.GameApiTests/AssemblyInfo.cs @@ -1,3 +1,3 @@ -using Xunit; - +using Xunit; + [assembly: CollectionBehavior(DisableTestParallelization = true)] \ No newline at end of file diff --git a/ProjectLighthouse.Tests.GameApiTests/Integration/AuthenticationTests.cs b/ProjectLighthouse.Tests.GameApiTests/Integration/AuthenticationTests.cs index bc705cf9..a5f1c27a 100644 --- a/ProjectLighthouse.Tests.GameApiTests/Integration/AuthenticationTests.cs +++ b/ProjectLighthouse.Tests.GameApiTests/Integration/AuthenticationTests.cs @@ -1,84 +1,84 @@ -using System.Net; -using System.Net.Http; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Helpers; -using LBPUnion.ProjectLighthouse.Servers.GameServer.Startup; -using LBPUnion.ProjectLighthouse.Tests.Helpers; -using LBPUnion.ProjectLighthouse.Tests.Integration; -using LBPUnion.ProjectLighthouse.Types.Users; -using Xunit; - -namespace ProjectLighthouse.Tests.GameApiTests.Integration; - -[Trait("Category", "Integration")] -public class AuthenticationTests : LighthouseServerTest -{ - [Fact] - public async Task ShouldReturnErrorOnNoPostData() - { - await IntegrationHelper.GetIntegrationDatabase(); - - HttpResponseMessage response = await this.Client.PostAsync("/LITTLEBIGPLANETPS3_XML/login", null!); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.BadRequest; - - Assert.Equal(expectedStatusCode, response.StatusCode); - } - - [Fact] - public async Task Login_ShouldReturnWithValidData() - { - await IntegrationHelper.GetIntegrationDatabase(); - - HttpResponseMessage response = await this.AuthenticateResponse(); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; - - Assert.Equal(expectedStatusCode, response.StatusCode); - string responseContent = await response.Content.ReadAsStringAsync(); - Assert.Contains("MM_AUTH=", responseContent); - Assert.Contains(VersionHelper.EnvVer, responseContent); - } - - [Fact] - public async Task Login_CanSerializeBack() - { - await IntegrationHelper.GetIntegrationDatabase(); - - LoginResult loginResult = await this.Authenticate(); - - Assert.NotNull(loginResult); - Assert.NotNull(loginResult.AuthTicket); - Assert.NotNull(loginResult.ServerBrand); - - Assert.Contains("MM_AUTH=", loginResult.AuthTicket); - Assert.Equal(VersionHelper.EnvVer, loginResult.ServerBrand); - } - - [Fact] - public async Task Login_CanUseToken() - { - await IntegrationHelper.GetIntegrationDatabase(); - - LoginResult loginResult = await this.Authenticate(); - - HttpResponseMessage response = await this.AuthenticatedRequest("/LITTLEBIGPLANETPS3_XML/enterLevel/420", loginResult.AuthTicket); - await response.Content.ReadAsStringAsync(); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.NotFound; - - Assert.Equal(expectedStatusCode, response.StatusCode); - } - - [Fact] - public async Task Login_ShouldReturnForbiddenWhenNotAuthenticated() - { - await IntegrationHelper.GetIntegrationDatabase(); - - HttpResponseMessage response = await this.Client.GetAsync("/LITTLEBIGPLANETPS3_XML/announce"); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.Forbidden; - - Assert.Equal(expectedStatusCode, response.StatusCode); - } +using System.Net; +using System.Net.Http; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Helpers; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Startup; +using LBPUnion.ProjectLighthouse.Tests.Helpers; +using LBPUnion.ProjectLighthouse.Tests.Integration; +using LBPUnion.ProjectLighthouse.Types.Users; +using Xunit; + +namespace ProjectLighthouse.Tests.GameApiTests.Integration; + +[Trait("Category", "Integration")] +public class AuthenticationTests : LighthouseServerTest +{ + [Fact] + public async Task ShouldReturnErrorOnNoPostData() + { + await IntegrationHelper.GetIntegrationDatabase(); + + HttpResponseMessage response = await this.Client.PostAsync("/LITTLEBIGPLANETPS3_XML/login", null!); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.BadRequest; + + Assert.Equal(expectedStatusCode, response.StatusCode); + } + + [Fact] + public async Task Login_ShouldReturnWithValidData() + { + await IntegrationHelper.GetIntegrationDatabase(); + + HttpResponseMessage response = await this.AuthenticateResponse(); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; + + Assert.Equal(expectedStatusCode, response.StatusCode); + string responseContent = await response.Content.ReadAsStringAsync(); + Assert.Contains("MM_AUTH=", responseContent); + Assert.Contains(VersionHelper.EnvVer, responseContent); + } + + [Fact] + public async Task Login_CanSerializeBack() + { + await IntegrationHelper.GetIntegrationDatabase(); + + LoginResult loginResult = await this.Authenticate(); + + Assert.NotNull(loginResult); + Assert.NotNull(loginResult.AuthTicket); + Assert.NotNull(loginResult.ServerBrand); + + Assert.Contains("MM_AUTH=", loginResult.AuthTicket); + Assert.Equal(VersionHelper.EnvVer, loginResult.ServerBrand); + } + + [Fact] + public async Task Login_CanUseToken() + { + await IntegrationHelper.GetIntegrationDatabase(); + + LoginResult loginResult = await this.Authenticate(); + + HttpResponseMessage response = await this.AuthenticatedRequest("/LITTLEBIGPLANETPS3_XML/enterLevel/420", loginResult.AuthTicket); + await response.Content.ReadAsStringAsync(); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.NotFound; + + Assert.Equal(expectedStatusCode, response.StatusCode); + } + + [Fact] + public async Task Login_ShouldReturnForbiddenWhenNotAuthenticated() + { + await IntegrationHelper.GetIntegrationDatabase(); + + HttpResponseMessage response = await this.Client.GetAsync("/LITTLEBIGPLANETPS3_XML/announce"); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.Forbidden; + + Assert.Equal(expectedStatusCode, response.StatusCode); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests.GameApiTests/Integration/DatabaseTests.cs b/ProjectLighthouse.Tests.GameApiTests/Integration/DatabaseTests.cs index fb87b618..a642f7fe 100644 --- a/ProjectLighthouse.Tests.GameApiTests/Integration/DatabaseTests.cs +++ b/ProjectLighthouse.Tests.GameApiTests/Integration/DatabaseTests.cs @@ -1,29 +1,29 @@ -using System; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Helpers; -using LBPUnion.ProjectLighthouse.Servers.GameServer.Startup; -using LBPUnion.ProjectLighthouse.Tests.Helpers; -using LBPUnion.ProjectLighthouse.Tests.Integration; -using LBPUnion.ProjectLighthouse.Types.Entities.Profile; -using Xunit; - -namespace ProjectLighthouse.Tests.GameApiTests.Integration; - -[Trait("Category", "Integration")] -public class DatabaseTests : LighthouseServerTest -{ - [Fact] - public async Task CanCreateUserTwice() - { - await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); - - int rand = new Random().Next(); - - UserEntity userA = await database.CreateUser("unitTestUser" + rand, CryptoHelper.BCryptHash(CryptoHelper.GenerateAuthToken())); - UserEntity userB = await database.CreateUser("unitTestUser" + rand, CryptoHelper.BCryptHash(CryptoHelper.GenerateAuthToken())); - - Assert.NotNull(userA); - Assert.NotNull(userB); - } +using System; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Helpers; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Startup; +using LBPUnion.ProjectLighthouse.Tests.Helpers; +using LBPUnion.ProjectLighthouse.Tests.Integration; +using LBPUnion.ProjectLighthouse.Types.Entities.Profile; +using Xunit; + +namespace ProjectLighthouse.Tests.GameApiTests.Integration; + +[Trait("Category", "Integration")] +public class DatabaseTests : LighthouseServerTest +{ + [Fact] + public async Task CanCreateUserTwice() + { + await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); + + int rand = new Random().Next(); + + UserEntity userA = await database.CreateUser("unitTestUser" + rand, CryptoHelper.BCryptHash(CryptoHelper.GenerateAuthToken())); + UserEntity userB = await database.CreateUser("unitTestUser" + rand, CryptoHelper.BCryptHash(CryptoHelper.GenerateAuthToken())); + + Assert.NotNull(userA); + Assert.NotNull(userB); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests.GameApiTests/Integration/LoginTests.cs b/ProjectLighthouse.Tests.GameApiTests/Integration/LoginTests.cs index 5dcc2db7..0f50790b 100644 --- a/ProjectLighthouse.Tests.GameApiTests/Integration/LoginTests.cs +++ b/ProjectLighthouse.Tests.GameApiTests/Integration/LoginTests.cs @@ -1,122 +1,122 @@ -using System; -using System.Net; -using System.Net.Http; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Helpers; -using LBPUnion.ProjectLighthouse.Servers.GameServer.Startup; -using LBPUnion.ProjectLighthouse.Tests.Helpers; -using LBPUnion.ProjectLighthouse.Tests.Integration; -using LBPUnion.ProjectLighthouse.Tickets; -using LBPUnion.ProjectLighthouse.Types.Entities.Profile; -using LBPUnion.ProjectLighthouse.Types.Users; -using Xunit; - -namespace ProjectLighthouse.Tests.GameApiTests.Integration; - -[Trait("Category", "Integration")] -public class LoginTests : LighthouseServerTest -{ - [Fact] - public async Task ShouldLoginWithGoodTicket() - { - await IntegrationHelper.GetIntegrationDatabase(); - - UserEntity user = await this.CreateRandomUser(); - byte[] ticketData = new TicketBuilder() - .SetUsername(user.Username) - .SetUserId((ulong)user.UserId) - .Build(); - HttpResponseMessage response = await this.Client.PostAsync("/LITTLEBIGPLANETPS3_XML/login", new ByteArrayContent(ticketData)); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; - - Assert.Equal(expectedStatusCode, response.StatusCode); - } - - [Fact] - public async Task ShouldNotLoginWithExpiredTicket() - { - await IntegrationHelper.GetIntegrationDatabase(); - - UserEntity user = await this.CreateRandomUser(); - byte[] ticketData = new TicketBuilder() - .SetUsername(user.Username) - .SetUserId((ulong)user.UserId) - .setExpirationTime((ulong)TimeHelper.TimestampMillis - 1000 * 60) - .Build(); - HttpResponseMessage response = await this.Client.PostAsync("/LITTLEBIGPLANETPS3_XML/login", new ByteArrayContent(ticketData)); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.BadRequest; - - Assert.Equal(expectedStatusCode, response.StatusCode); - } - - [Fact] - public async Task ShouldNotLoginWithBadTitleId() - { - await IntegrationHelper.GetIntegrationDatabase(); - - UserEntity user = await this.CreateRandomUser(); - byte[] ticketData = new TicketBuilder() - .SetUsername(user.Username) - .SetUserId((ulong)user.UserId) - .SetTitleId("UP9000-BLUS30079_00") - .Build(); - HttpResponseMessage response = await this.Client.PostAsync("/LITTLEBIGPLANETPS3_XML/login", new ByteArrayContent(ticketData)); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.BadRequest; - - Assert.Equal(expectedStatusCode, response.StatusCode); - } - - [Fact] - public async Task ShouldNotLoginWithBadSignature() - { - await IntegrationHelper.GetIntegrationDatabase(); - - UserEntity user = await this.CreateRandomUser(); - byte[] ticketData = new TicketBuilder() - .SetUsername(user.Username) - .SetUserId((ulong)user.UserId) - .Build(); - // Create second ticket and replace the first tickets signature with the first. - byte[] ticketData2 = new TicketBuilder() - .SetUsername(user.Username) - .SetUserId((ulong)user.UserId) - .Build(); - - Array.Copy(ticketData2, ticketData2.Length - 0x38, ticketData, ticketData.Length - 0x38, 0x38); - - HttpResponseMessage response = await this.Client.PostAsync("/LITTLEBIGPLANETPS3_XML/login", new ByteArrayContent(ticketData)); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.BadRequest; - - Assert.Equal(expectedStatusCode, response.StatusCode); - } - - [Fact] - public async Task ShouldNotLoginIfBanned() - { - DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); - - UserEntity user = await this.CreateRandomUser(); - - user.PermissionLevel = PermissionLevel.Banned; - - database.Users.Update(user); - await database.SaveChangesAsync(); - - byte[] ticketData = new TicketBuilder() - .SetUsername(user.Username) - .SetUserId((ulong)user.UserId) - .Build(); - HttpResponseMessage response = - await this.Client.PostAsync("/LITTLEBIGPLANETPS3_XML/login", new ByteArrayContent(ticketData)); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.Forbidden; - - Assert.Equal(expectedStatusCode, response.StatusCode); - } - -} +using System; +using System.Net; +using System.Net.Http; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Helpers; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Startup; +using LBPUnion.ProjectLighthouse.Tests.Helpers; +using LBPUnion.ProjectLighthouse.Tests.Integration; +using LBPUnion.ProjectLighthouse.Tickets; +using LBPUnion.ProjectLighthouse.Types.Entities.Profile; +using LBPUnion.ProjectLighthouse.Types.Users; +using Xunit; + +namespace ProjectLighthouse.Tests.GameApiTests.Integration; + +[Trait("Category", "Integration")] +public class LoginTests : LighthouseServerTest +{ + [Fact] + public async Task ShouldLoginWithGoodTicket() + { + await IntegrationHelper.GetIntegrationDatabase(); + + UserEntity user = await this.CreateRandomUser(); + byte[] ticketData = new TicketBuilder() + .SetUsername(user.Username) + .SetUserId((ulong)user.UserId) + .Build(); + HttpResponseMessage response = await this.Client.PostAsync("/LITTLEBIGPLANETPS3_XML/login", new ByteArrayContent(ticketData)); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; + + Assert.Equal(expectedStatusCode, response.StatusCode); + } + + [Fact] + public async Task ShouldNotLoginWithExpiredTicket() + { + await IntegrationHelper.GetIntegrationDatabase(); + + UserEntity user = await this.CreateRandomUser(); + byte[] ticketData = new TicketBuilder() + .SetUsername(user.Username) + .SetUserId((ulong)user.UserId) + .setExpirationTime((ulong)TimeHelper.TimestampMillis - 1000 * 60) + .Build(); + HttpResponseMessage response = await this.Client.PostAsync("/LITTLEBIGPLANETPS3_XML/login", new ByteArrayContent(ticketData)); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.BadRequest; + + Assert.Equal(expectedStatusCode, response.StatusCode); + } + + [Fact] + public async Task ShouldNotLoginWithBadTitleId() + { + await IntegrationHelper.GetIntegrationDatabase(); + + UserEntity user = await this.CreateRandomUser(); + byte[] ticketData = new TicketBuilder() + .SetUsername(user.Username) + .SetUserId((ulong)user.UserId) + .SetTitleId("UP9000-BLUS30079_00") + .Build(); + HttpResponseMessage response = await this.Client.PostAsync("/LITTLEBIGPLANETPS3_XML/login", new ByteArrayContent(ticketData)); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.BadRequest; + + Assert.Equal(expectedStatusCode, response.StatusCode); + } + + [Fact] + public async Task ShouldNotLoginWithBadSignature() + { + await IntegrationHelper.GetIntegrationDatabase(); + + UserEntity user = await this.CreateRandomUser(); + byte[] ticketData = new TicketBuilder() + .SetUsername(user.Username) + .SetUserId((ulong)user.UserId) + .Build(); + // Create second ticket and replace the first tickets signature with the first. + byte[] ticketData2 = new TicketBuilder() + .SetUsername(user.Username) + .SetUserId((ulong)user.UserId) + .Build(); + + Array.Copy(ticketData2, ticketData2.Length - 0x38, ticketData, ticketData.Length - 0x38, 0x38); + + HttpResponseMessage response = await this.Client.PostAsync("/LITTLEBIGPLANETPS3_XML/login", new ByteArrayContent(ticketData)); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.BadRequest; + + Assert.Equal(expectedStatusCode, response.StatusCode); + } + + [Fact] + public async Task ShouldNotLoginIfBanned() + { + DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); + + UserEntity user = await this.CreateRandomUser(); + + user.PermissionLevel = PermissionLevel.Banned; + + database.Users.Update(user); + await database.SaveChangesAsync(); + + byte[] ticketData = new TicketBuilder() + .SetUsername(user.Username) + .SetUserId((ulong)user.UserId) + .Build(); + HttpResponseMessage response = + await this.Client.PostAsync("/LITTLEBIGPLANETPS3_XML/login", new ByteArrayContent(ticketData)); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.Forbidden; + + Assert.Equal(expectedStatusCode, response.StatusCode); + } + +} diff --git a/ProjectLighthouse.Tests.GameApiTests/Integration/MatchTests.cs b/ProjectLighthouse.Tests.GameApiTests/Integration/MatchTests.cs index 2044d41b..dadaa1f2 100644 --- a/ProjectLighthouse.Tests.GameApiTests/Integration/MatchTests.cs +++ b/ProjectLighthouse.Tests.GameApiTests/Integration/MatchTests.cs @@ -1,69 +1,69 @@ -using System; -using System.Net; -using System.Net.Http; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Helpers; -using LBPUnion.ProjectLighthouse.Servers.GameServer.Startup; -using LBPUnion.ProjectLighthouse.Tests.Helpers; -using LBPUnion.ProjectLighthouse.Tests.Integration; -using LBPUnion.ProjectLighthouse.Types.Users; -using Xunit; - -namespace ProjectLighthouse.Tests.GameApiTests.Integration; - -[Trait("Category", "Integration")] -public class MatchTests : LighthouseServerTest -{ - [Fact] - public async Task Match_ShouldRejectEmptyData() - { - await IntegrationHelper.GetIntegrationDatabase(); - - LoginResult loginResult = await this.Authenticate(); - - HttpResponseMessage result = await this.AuthenticatedUploadDataRequest("/LITTLEBIGPLANETPS3_XML/match", Array.Empty(), loginResult.AuthTicket); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.BadRequest; - - Assert.Equal(expectedStatusCode, result.StatusCode); - } - - [Fact] - public async Task Match_ShouldReturnOk_WithGoodRequest() - { - await IntegrationHelper.GetIntegrationDatabase(); - - LoginResult loginResult = await this.Authenticate(); - - HttpResponseMessage result = await this.AuthenticatedUploadDataRequest - ("/LITTLEBIGPLANETPS3_XML/match", "[UpdateMyPlayerData,[\"Player\":\"1984\"]]"u8.ToArray(), loginResult.AuthTicket); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; - - Assert.Equal(expectedStatusCode, result.StatusCode); - } - - [Fact] - public async Task Match_ShouldIncrementPlayerCount() - { - await IntegrationHelper.GetIntegrationDatabase(); - - LoginResult loginResult = await this.Authenticate(); - - await using DatabaseContext database = DatabaseContext.CreateNewInstance(); - - int oldPlayerCount = await StatisticsHelper.RecentMatches(database); - - HttpResponseMessage result = await this.AuthenticatedUploadDataRequest - ("/LITTLEBIGPLANETPS3_XML/match", "[UpdateMyPlayerData,[\"Player\":\"1984\"]]"u8.ToArray(), loginResult.AuthTicket); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; - - Assert.Equal(expectedStatusCode, result.StatusCode); - - int playerCount = await StatisticsHelper.RecentMatches(database); - - Assert.Equal(oldPlayerCount + 1, playerCount); - } +using System; +using System.Net; +using System.Net.Http; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Helpers; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Startup; +using LBPUnion.ProjectLighthouse.Tests.Helpers; +using LBPUnion.ProjectLighthouse.Tests.Integration; +using LBPUnion.ProjectLighthouse.Types.Users; +using Xunit; + +namespace ProjectLighthouse.Tests.GameApiTests.Integration; + +[Trait("Category", "Integration")] +public class MatchTests : LighthouseServerTest +{ + [Fact] + public async Task Match_ShouldRejectEmptyData() + { + await IntegrationHelper.GetIntegrationDatabase(); + + LoginResult loginResult = await this.Authenticate(); + + HttpResponseMessage result = await this.AuthenticatedUploadDataRequest("/LITTLEBIGPLANETPS3_XML/match", Array.Empty(), loginResult.AuthTicket); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.BadRequest; + + Assert.Equal(expectedStatusCode, result.StatusCode); + } + + [Fact] + public async Task Match_ShouldReturnOk_WithGoodRequest() + { + await IntegrationHelper.GetIntegrationDatabase(); + + LoginResult loginResult = await this.Authenticate(); + + HttpResponseMessage result = await this.AuthenticatedUploadDataRequest + ("/LITTLEBIGPLANETPS3_XML/match", "[UpdateMyPlayerData,[\"Player\":\"1984\"]]"u8.ToArray(), loginResult.AuthTicket); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; + + Assert.Equal(expectedStatusCode, result.StatusCode); + } + + [Fact] + public async Task Match_ShouldIncrementPlayerCount() + { + await IntegrationHelper.GetIntegrationDatabase(); + + LoginResult loginResult = await this.Authenticate(); + + await using DatabaseContext database = DatabaseContext.CreateNewInstance(); + + int oldPlayerCount = await StatisticsHelper.RecentMatches(database); + + HttpResponseMessage result = await this.AuthenticatedUploadDataRequest + ("/LITTLEBIGPLANETPS3_XML/match", "[UpdateMyPlayerData,[\"Player\":\"1984\"]]"u8.ToArray(), loginResult.AuthTicket); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; + + Assert.Equal(expectedStatusCode, result.StatusCode); + + int playerCount = await StatisticsHelper.RecentMatches(database); + + Assert.Equal(oldPlayerCount + 1, playerCount); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests.GameApiTests/Integration/SlotFilterTests.cs b/ProjectLighthouse.Tests.GameApiTests/Integration/SlotFilterTests.cs index eacce233..2a15b9b5 100644 --- a/ProjectLighthouse.Tests.GameApiTests/Integration/SlotFilterTests.cs +++ b/ProjectLighthouse.Tests.GameApiTests/Integration/SlotFilterTests.cs @@ -1,234 +1,234 @@ -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Net.Http; -using System.Threading.Tasks; -using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Serialization; -using LBPUnion.ProjectLighthouse.Servers.GameServer.Startup; -using LBPUnion.ProjectLighthouse.Tests.Helpers; -using LBPUnion.ProjectLighthouse.Tests.Integration; -using LBPUnion.ProjectLighthouse.Types.Entities.Level; -using LBPUnion.ProjectLighthouse.Types.Entities.Profile; -using LBPUnion.ProjectLighthouse.Types.Serialization; -using LBPUnion.ProjectLighthouse.Types.Users; -using Xunit; - -namespace ProjectLighthouse.Tests.GameApiTests.Integration; - -[Trait("Category", "Integration")] -public class SlotFilterTests : LighthouseServerTest -{ - [Fact] - public async Task GetUserSlot_ShouldReturnOk_WhenSlotExists() - { - DatabaseContext db = await IntegrationHelper.GetIntegrationDatabase(); - - db.Users.Add(new UserEntity - { - UserId = 23, - }); - - db.Slots.Add(new SlotEntity - { - SlotId = 23, - CreatorId = 23, - }); - await db.SaveChangesAsync(); - - LoginResult loginResult = await this.Authenticate(); - HttpResponseMessage response = await this.AuthenticatedRequest("/LITTLEBIGPLANETPS3_XML/s/user/23", loginResult.AuthTicket); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; - - Assert.Equal(expectedStatusCode, response.StatusCode); - string body = await response.Content.ReadAsStringAsync(); - - Assert.Contains("23", body); - } - - [Fact] - public async Task NewestSlots_ShouldReturnSlotsOrderedByTimestampDescending() - { - DatabaseContext db = await IntegrationHelper.GetIntegrationDatabase(); - - for (int i = 1; i <= 100; i++) - { - db.Users.Add(new UserEntity - { - UserId = i, - Username = $"user{i}", - }); - db.Slots.Add(new SlotEntity - { - SlotId = i, - CreatorId = i, - FirstUploaded = i, - }); - } - await db.SaveChangesAsync(); - - LoginResult loginResult = await this.Authenticate(); - HttpResponseMessage response = - await this.AuthenticatedRequest("/LITTLEBIGPLANETPS3_XML/slots?pageStart=0&pageSize=10", loginResult.AuthTicket); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; - - Assert.Equal(expectedStatusCode, response.StatusCode); - string body = await response.Content.ReadAsStringAsync(); - - object? deserialized = LighthouseSerializer - .GetSerializer(typeof(GameUserSlotList), new XmlRootAttribute("slots")) - .Deserialize(new StringReader(body)); - Assert.NotNull(deserialized); - Assert.IsType(deserialized); - - GameUserSlotList slotResponse = (GameUserSlotList)deserialized; - - Assert.Equal(100, slotResponse.Total); - Assert.Equal(10, slotResponse.Slots.Count); - - Assert.Equal(91, slotResponse.Slots[9].FirstUploaded); - } - - [Fact] - public async Task NewestSlots_ShouldReturnSlotsWithAuthorLabel() - { - DatabaseContext db = await IntegrationHelper.GetIntegrationDatabase(); - - db.Users.Add(new UserEntity() - { - UserId = 1, - }); - - db.Slots.Add(new SlotEntity - { - CreatorId = 1, - SlotId = 1, - AuthorLabels = "LABEL_SinglePlayer,LABEL_Quick,LABEL_Funny", - FirstUploaded = 1, - }); - db.Slots.Add(new SlotEntity - { - CreatorId = 1, - SlotId = 2, - AuthorLabels = "LABEL_SinglePlayer", - FirstUploaded = 2, - }); - db.Slots.Add(new SlotEntity - { - CreatorId = 1, - SlotId = 3, - AuthorLabels = "LABEL_Quick", - FirstUploaded = 3, - }); - db.Slots.Add(new SlotEntity - { - CreatorId = 1, - SlotId = 4, - AuthorLabels = "LABEL_Funny", - FirstUploaded = 4, - }); - - await db.SaveChangesAsync(); - - LoginResult loginResult = await this.Authenticate(); - HttpResponseMessage response = - await this.AuthenticatedRequest("/LITTLEBIGPLANETPS3_XML/slots?pageStart=0&pageSize=10&labelFilter0=LABEL_Funny", - loginResult.AuthTicket); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; - - Assert.Equal(expectedStatusCode, response.StatusCode); - string body = await response.Content.ReadAsStringAsync(); - - object? deserialized = LighthouseSerializer - .GetSerializer(typeof(GameUserSlotList), new XmlRootAttribute("slots")) - .Deserialize(new StringReader(body)); - Assert.NotNull(deserialized); - Assert.IsType(deserialized); - - GameUserSlotList slotResponse = (GameUserSlotList)deserialized; - - const int expectedCount = 2; - - Assert.Equal(expectedCount, slotResponse.Slots.Count); - Assert.True(slotResponse.Slots.TrueForAll(s => s.AuthorLabels.Contains("LABEL_Funny"))); - } - -[Fact] - public async Task NewestSlots_ShouldReturnEmpty_WhenAuthorLabelsDontMatch() - { - DatabaseContext db = await IntegrationHelper.GetIntegrationDatabase(); - - db.Users.Add(new UserEntity - { - UserId = 1, - }); - - db.Slots.Add(new SlotEntity - { - CreatorId = 1, - SlotId = 1, - AuthorLabels = "LABEL_SinglePlayer,LABEL_Quick,LABEL_Funny", - FirstUploaded = 1, - }); - db.Slots.Add(new SlotEntity - { - CreatorId = 1, - SlotId = 2, - AuthorLabels = "LABEL_SinglePlayer", - FirstUploaded = 2, - }); - db.Slots.Add(new SlotEntity - { - CreatorId = 1, - SlotId = 3, - AuthorLabels = "LABEL_Quick", - FirstUploaded = 3, - }); - db.Slots.Add(new SlotEntity - { - CreatorId = 1, - SlotId = 4, - AuthorLabels = "LABEL_Funny", - FirstUploaded = 4, - }); - - await db.SaveChangesAsync(); - - LoginResult loginResult = await this.Authenticate(); - HttpResponseMessage response = - await this.AuthenticatedRequest("/LITTLEBIGPLANETPS3_XML/slots?pageStart=0&pageSize=10&labelFilter0=LABEL_Funny&labelFilter1=LABEL_Quick&labelFilter2=LABEL_Gallery", - loginResult.AuthTicket); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; - - Assert.Equal(expectedStatusCode, response.StatusCode); - string body = await response.Content.ReadAsStringAsync(); - - object? deserialized = LighthouseSerializer - .GetSerializer(typeof(GameUserSlotList), new XmlRootAttribute("slots")) - .Deserialize(new StringReader(body)); - Assert.NotNull(deserialized); - Assert.IsType(deserialized); - - GameUserSlotList slotResponse = (GameUserSlotList)deserialized; - - Assert.Empty(slotResponse.Slots); - } - - [XmlRoot("slots")] - public class GameUserSlotList - { - [XmlElement("slot")] - public List Slots { get; set; } = new(); - - [XmlAttribute("total")] - public int Total { get; set; } - - [XmlAttribute("hint_start")] - public int HintStart { get; set; } - } +using System.Collections.Generic; +using System.IO; +using System.Net; +using System.Net.Http; +using System.Threading.Tasks; +using System.Xml.Serialization; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Serialization; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Startup; +using LBPUnion.ProjectLighthouse.Tests.Helpers; +using LBPUnion.ProjectLighthouse.Tests.Integration; +using LBPUnion.ProjectLighthouse.Types.Entities.Level; +using LBPUnion.ProjectLighthouse.Types.Entities.Profile; +using LBPUnion.ProjectLighthouse.Types.Serialization; +using LBPUnion.ProjectLighthouse.Types.Users; +using Xunit; + +namespace ProjectLighthouse.Tests.GameApiTests.Integration; + +[Trait("Category", "Integration")] +public class SlotFilterTests : LighthouseServerTest +{ + [Fact] + public async Task GetUserSlot_ShouldReturnOk_WhenSlotExists() + { + DatabaseContext db = await IntegrationHelper.GetIntegrationDatabase(); + + db.Users.Add(new UserEntity + { + UserId = 23, + }); + + db.Slots.Add(new SlotEntity + { + SlotId = 23, + CreatorId = 23, + }); + await db.SaveChangesAsync(); + + LoginResult loginResult = await this.Authenticate(); + HttpResponseMessage response = await this.AuthenticatedRequest("/LITTLEBIGPLANETPS3_XML/s/user/23", loginResult.AuthTicket); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; + + Assert.Equal(expectedStatusCode, response.StatusCode); + string body = await response.Content.ReadAsStringAsync(); + + Assert.Contains("23", body); + } + + [Fact] + public async Task NewestSlots_ShouldReturnSlotsOrderedByTimestampDescending() + { + DatabaseContext db = await IntegrationHelper.GetIntegrationDatabase(); + + for (int i = 1; i <= 100; i++) + { + db.Users.Add(new UserEntity + { + UserId = i, + Username = $"user{i}", + }); + db.Slots.Add(new SlotEntity + { + SlotId = i, + CreatorId = i, + FirstUploaded = i, + }); + } + await db.SaveChangesAsync(); + + LoginResult loginResult = await this.Authenticate(); + HttpResponseMessage response = + await this.AuthenticatedRequest("/LITTLEBIGPLANETPS3_XML/slots?pageStart=0&pageSize=10", loginResult.AuthTicket); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; + + Assert.Equal(expectedStatusCode, response.StatusCode); + string body = await response.Content.ReadAsStringAsync(); + + object? deserialized = LighthouseSerializer + .GetSerializer(typeof(GameUserSlotList), new XmlRootAttribute("slots")) + .Deserialize(new StringReader(body)); + Assert.NotNull(deserialized); + Assert.IsType(deserialized); + + GameUserSlotList slotResponse = (GameUserSlotList)deserialized; + + Assert.Equal(100, slotResponse.Total); + Assert.Equal(10, slotResponse.Slots.Count); + + Assert.Equal(91, slotResponse.Slots[9].FirstUploaded); + } + + [Fact] + public async Task NewestSlots_ShouldReturnSlotsWithAuthorLabel() + { + DatabaseContext db = await IntegrationHelper.GetIntegrationDatabase(); + + db.Users.Add(new UserEntity() + { + UserId = 1, + }); + + db.Slots.Add(new SlotEntity + { + CreatorId = 1, + SlotId = 1, + AuthorLabels = "LABEL_SinglePlayer,LABEL_Quick,LABEL_Funny", + FirstUploaded = 1, + }); + db.Slots.Add(new SlotEntity + { + CreatorId = 1, + SlotId = 2, + AuthorLabels = "LABEL_SinglePlayer", + FirstUploaded = 2, + }); + db.Slots.Add(new SlotEntity + { + CreatorId = 1, + SlotId = 3, + AuthorLabels = "LABEL_Quick", + FirstUploaded = 3, + }); + db.Slots.Add(new SlotEntity + { + CreatorId = 1, + SlotId = 4, + AuthorLabels = "LABEL_Funny", + FirstUploaded = 4, + }); + + await db.SaveChangesAsync(); + + LoginResult loginResult = await this.Authenticate(); + HttpResponseMessage response = + await this.AuthenticatedRequest("/LITTLEBIGPLANETPS3_XML/slots?pageStart=0&pageSize=10&labelFilter0=LABEL_Funny", + loginResult.AuthTicket); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; + + Assert.Equal(expectedStatusCode, response.StatusCode); + string body = await response.Content.ReadAsStringAsync(); + + object? deserialized = LighthouseSerializer + .GetSerializer(typeof(GameUserSlotList), new XmlRootAttribute("slots")) + .Deserialize(new StringReader(body)); + Assert.NotNull(deserialized); + Assert.IsType(deserialized); + + GameUserSlotList slotResponse = (GameUserSlotList)deserialized; + + const int expectedCount = 2; + + Assert.Equal(expectedCount, slotResponse.Slots.Count); + Assert.True(slotResponse.Slots.TrueForAll(s => s.AuthorLabels.Contains("LABEL_Funny"))); + } + +[Fact] + public async Task NewestSlots_ShouldReturnEmpty_WhenAuthorLabelsDontMatch() + { + DatabaseContext db = await IntegrationHelper.GetIntegrationDatabase(); + + db.Users.Add(new UserEntity + { + UserId = 1, + }); + + db.Slots.Add(new SlotEntity + { + CreatorId = 1, + SlotId = 1, + AuthorLabels = "LABEL_SinglePlayer,LABEL_Quick,LABEL_Funny", + FirstUploaded = 1, + }); + db.Slots.Add(new SlotEntity + { + CreatorId = 1, + SlotId = 2, + AuthorLabels = "LABEL_SinglePlayer", + FirstUploaded = 2, + }); + db.Slots.Add(new SlotEntity + { + CreatorId = 1, + SlotId = 3, + AuthorLabels = "LABEL_Quick", + FirstUploaded = 3, + }); + db.Slots.Add(new SlotEntity + { + CreatorId = 1, + SlotId = 4, + AuthorLabels = "LABEL_Funny", + FirstUploaded = 4, + }); + + await db.SaveChangesAsync(); + + LoginResult loginResult = await this.Authenticate(); + HttpResponseMessage response = + await this.AuthenticatedRequest("/LITTLEBIGPLANETPS3_XML/slots?pageStart=0&pageSize=10&labelFilter0=LABEL_Funny&labelFilter1=LABEL_Quick&labelFilter2=LABEL_Gallery", + loginResult.AuthTicket); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; + + Assert.Equal(expectedStatusCode, response.StatusCode); + string body = await response.Content.ReadAsStringAsync(); + + object? deserialized = LighthouseSerializer + .GetSerializer(typeof(GameUserSlotList), new XmlRootAttribute("slots")) + .Deserialize(new StringReader(body)); + Assert.NotNull(deserialized); + Assert.IsType(deserialized); + + GameUserSlotList slotResponse = (GameUserSlotList)deserialized; + + Assert.Empty(slotResponse.Slots); + } + + [XmlRoot("slots")] + public class GameUserSlotList + { + [XmlElement("slot")] + public List Slots { get; set; } = new(); + + [XmlAttribute("total")] + public int Total { get; set; } + + [XmlAttribute("hint_start")] + public int HintStart { get; set; } + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests.GameApiTests/Integration/SlotTests.cs b/ProjectLighthouse.Tests.GameApiTests/Integration/SlotTests.cs index 56e506bc..5265648e 100644 --- a/ProjectLighthouse.Tests.GameApiTests/Integration/SlotTests.cs +++ b/ProjectLighthouse.Tests.GameApiTests/Integration/SlotTests.cs @@ -1,67 +1,67 @@ -using System.Net; -using System.Net.Http; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Servers.GameServer.Startup; -using LBPUnion.ProjectLighthouse.Tests.Helpers; -using LBPUnion.ProjectLighthouse.Tests.Integration; -using LBPUnion.ProjectLighthouse.Types.Entities.Level; -using LBPUnion.ProjectLighthouse.Types.Entities.Profile; -using LBPUnion.ProjectLighthouse.Types.Users; -using Xunit; - -namespace ProjectLighthouse.Tests.GameApiTests.Integration; - -[Trait("Category", "Integration")] -public class SlotTests : LighthouseServerTest -{ - [Fact] - public async Task ShouldOnlyShowUsersLevels() - { - await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); - - UserEntity userA = await this.CreateRandomUser(); - UserEntity userB = await this.CreateRandomUser(); - - SlotEntity slotA = new() - { - CreatorId = userA.UserId, - Name = "slotA", - ResourceCollection = "", - }; - - SlotEntity slotB = new() - { - CreatorId = userB.UserId, - Name = "slotB", - ResourceCollection = "", - }; - - database.Slots.Add(slotA); - database.Slots.Add(slotB); - - await database.SaveChangesAsync(); - - LoginResult loginResult = await this.Authenticate(); - - HttpResponseMessage respMessageA = await this.AuthenticatedRequest - ($"/LITTLEBIGPLANETPS3_XML/slots/by?u={userA.Username}&pageStart=1&pageSize=1", loginResult.AuthTicket); - HttpResponseMessage respMessageB = await this.AuthenticatedRequest - ($"/LITTLEBIGPLANETPS3_XML/slots/by?u={userB.Username}&pageStart=1&pageSize=1", loginResult.AuthTicket); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; - - Assert.Equal(expectedStatusCode, respMessageA.StatusCode); - Assert.Equal(expectedStatusCode, respMessageB.StatusCode); - - string respA = await respMessageA.Content.ReadAsStringAsync(); - string respB = await respMessageB.Content.ReadAsStringAsync(); - - Assert.NotNull(respA); - Assert.NotNull(respB); - - Assert.NotEqual(respA, respB); - Assert.DoesNotContain(respA, "slotB"); - Assert.DoesNotContain(respB, "slotA"); - } +using System.Net; +using System.Net.Http; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Startup; +using LBPUnion.ProjectLighthouse.Tests.Helpers; +using LBPUnion.ProjectLighthouse.Tests.Integration; +using LBPUnion.ProjectLighthouse.Types.Entities.Level; +using LBPUnion.ProjectLighthouse.Types.Entities.Profile; +using LBPUnion.ProjectLighthouse.Types.Users; +using Xunit; + +namespace ProjectLighthouse.Tests.GameApiTests.Integration; + +[Trait("Category", "Integration")] +public class SlotTests : LighthouseServerTest +{ + [Fact] + public async Task ShouldOnlyShowUsersLevels() + { + await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); + + UserEntity userA = await this.CreateRandomUser(); + UserEntity userB = await this.CreateRandomUser(); + + SlotEntity slotA = new() + { + CreatorId = userA.UserId, + Name = "slotA", + ResourceCollection = "", + }; + + SlotEntity slotB = new() + { + CreatorId = userB.UserId, + Name = "slotB", + ResourceCollection = "", + }; + + database.Slots.Add(slotA); + database.Slots.Add(slotB); + + await database.SaveChangesAsync(); + + LoginResult loginResult = await this.Authenticate(); + + HttpResponseMessage respMessageA = await this.AuthenticatedRequest + ($"/LITTLEBIGPLANETPS3_XML/slots/by?u={userA.Username}&pageStart=1&pageSize=1", loginResult.AuthTicket); + HttpResponseMessage respMessageB = await this.AuthenticatedRequest + ($"/LITTLEBIGPLANETPS3_XML/slots/by?u={userB.Username}&pageStart=1&pageSize=1", loginResult.AuthTicket); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; + + Assert.Equal(expectedStatusCode, respMessageA.StatusCode); + Assert.Equal(expectedStatusCode, respMessageB.StatusCode); + + string respA = await respMessageA.Content.ReadAsStringAsync(); + string respB = await respMessageB.Content.ReadAsStringAsync(); + + Assert.NotNull(respA); + Assert.NotNull(respB); + + Assert.NotEqual(respA, respB); + Assert.DoesNotContain(respA, "slotB"); + Assert.DoesNotContain(respB, "slotA"); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests.GameApiTests/Integration/UploadTests.cs b/ProjectLighthouse.Tests.GameApiTests/Integration/UploadTests.cs index 9e3c90c1..8694b463 100644 --- a/ProjectLighthouse.Tests.GameApiTests/Integration/UploadTests.cs +++ b/ProjectLighthouse.Tests.GameApiTests/Integration/UploadTests.cs @@ -1,92 +1,92 @@ -using System; -using System.IO; -using System.Net; -using System.Net.Http; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Servers.GameServer.Startup; -using LBPUnion.ProjectLighthouse.Tests.Helpers; -using LBPUnion.ProjectLighthouse.Tests.Integration; -using LBPUnion.ProjectLighthouse.Types.Users; -using Xunit; - -namespace ProjectLighthouse.Tests.GameApiTests.Integration; - -[Trait("Category", "Integration")] -public class UploadTests : LighthouseServerTest -{ - public UploadTests() - { - string assetsDirectory = Path.Combine(Environment.CurrentDirectory, "r"); - if (Directory.Exists(assetsDirectory)) Directory.Delete(assetsDirectory, true); - } - - [Fact] - public async Task ShouldNotAcceptScript() - { - await IntegrationHelper.GetIntegrationDatabase(); - - LoginResult loginResult = await this.Authenticate(); - - HttpResponseMessage response = await this.AuthenticatedUploadFileEndpointRequest("ExampleFiles/TestScript.ff", loginResult.AuthTicket); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.Conflict; - - Assert.Equal(expectedStatusCode, response.StatusCode); - } - - [Fact] - public async Task ShouldNotAcceptFarc() - { - await IntegrationHelper.GetIntegrationDatabase(); - - LoginResult loginResult = await this.Authenticate(); - - HttpResponseMessage response = await this.AuthenticatedUploadFileEndpointRequest("ExampleFiles/TestFarc.farc", loginResult.AuthTicket); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.Conflict; - - Assert.Equal(expectedStatusCode, response.StatusCode); - } - - [Fact] - public async Task ShouldNotAcceptGarbage() - { - await IntegrationHelper.GetIntegrationDatabase(); - - LoginResult loginResult = await this.Authenticate(); - - HttpResponseMessage response = await this.AuthenticatedUploadFileEndpointRequest("ExampleFiles/TestGarbage.bin", loginResult.AuthTicket); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.Conflict; - - Assert.Equal(expectedStatusCode, response.StatusCode); - } - - [Fact] - public async Task ShouldAcceptTexture() - { - await IntegrationHelper.GetIntegrationDatabase(); - - LoginResult loginResult = await this.Authenticate(); - - HttpResponseMessage response = await this.AuthenticatedUploadFileEndpointRequest("ExampleFiles/TestTexture.tex", loginResult.AuthTicket); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; - - Assert.Equal(expectedStatusCode, response.StatusCode); - } - - [Fact] - public async Task ShouldAcceptLevel() - { - await IntegrationHelper.GetIntegrationDatabase(); - - LoginResult loginResult = await this.Authenticate(); - - HttpResponseMessage response = await this.AuthenticatedUploadFileEndpointRequest("ExampleFiles/TestLevel.lvl", loginResult.AuthTicket); - - const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; - - Assert.Equal(expectedStatusCode, response.StatusCode); - } +using System; +using System.IO; +using System.Net; +using System.Net.Http; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Startup; +using LBPUnion.ProjectLighthouse.Tests.Helpers; +using LBPUnion.ProjectLighthouse.Tests.Integration; +using LBPUnion.ProjectLighthouse.Types.Users; +using Xunit; + +namespace ProjectLighthouse.Tests.GameApiTests.Integration; + +[Trait("Category", "Integration")] +public class UploadTests : LighthouseServerTest +{ + public UploadTests() + { + string assetsDirectory = Path.Combine(Environment.CurrentDirectory, "r"); + if (Directory.Exists(assetsDirectory)) Directory.Delete(assetsDirectory, true); + } + + [Fact] + public async Task ShouldNotAcceptScript() + { + await IntegrationHelper.GetIntegrationDatabase(); + + LoginResult loginResult = await this.Authenticate(); + + HttpResponseMessage response = await this.AuthenticatedUploadFileEndpointRequest("ExampleFiles/TestScript.ff", loginResult.AuthTicket); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.Conflict; + + Assert.Equal(expectedStatusCode, response.StatusCode); + } + + [Fact] + public async Task ShouldNotAcceptFarc() + { + await IntegrationHelper.GetIntegrationDatabase(); + + LoginResult loginResult = await this.Authenticate(); + + HttpResponseMessage response = await this.AuthenticatedUploadFileEndpointRequest("ExampleFiles/TestFarc.farc", loginResult.AuthTicket); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.Conflict; + + Assert.Equal(expectedStatusCode, response.StatusCode); + } + + [Fact] + public async Task ShouldNotAcceptGarbage() + { + await IntegrationHelper.GetIntegrationDatabase(); + + LoginResult loginResult = await this.Authenticate(); + + HttpResponseMessage response = await this.AuthenticatedUploadFileEndpointRequest("ExampleFiles/TestGarbage.bin", loginResult.AuthTicket); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.Conflict; + + Assert.Equal(expectedStatusCode, response.StatusCode); + } + + [Fact] + public async Task ShouldAcceptTexture() + { + await IntegrationHelper.GetIntegrationDatabase(); + + LoginResult loginResult = await this.Authenticate(); + + HttpResponseMessage response = await this.AuthenticatedUploadFileEndpointRequest("ExampleFiles/TestTexture.tex", loginResult.AuthTicket); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; + + Assert.Equal(expectedStatusCode, response.StatusCode); + } + + [Fact] + public async Task ShouldAcceptLevel() + { + await IntegrationHelper.GetIntegrationDatabase(); + + LoginResult loginResult = await this.Authenticate(); + + HttpResponseMessage response = await this.AuthenticatedUploadFileEndpointRequest("ExampleFiles/TestLevel.lvl", loginResult.AuthTicket); + + const HttpStatusCode expectedStatusCode = HttpStatusCode.OK; + + Assert.Equal(expectedStatusCode, response.StatusCode); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests.GameApiTests/ProjectLighthouse.Tests.GameApiTests.csproj b/ProjectLighthouse.Tests.GameApiTests/ProjectLighthouse.Tests.GameApiTests.csproj index 60b47519..b0330ce8 100644 --- a/ProjectLighthouse.Tests.GameApiTests/ProjectLighthouse.Tests.GameApiTests.csproj +++ b/ProjectLighthouse.Tests.GameApiTests/ProjectLighthouse.Tests.GameApiTests.csproj @@ -1,34 +1,34 @@ - - - - net8.0 - enable - - false - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - - - - - - + + + + net8.0 + enable + + false + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + + diff --git a/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/CommentControllerTests.cs b/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/CommentControllerTests.cs index e6be7b40..eaf6c577 100644 --- a/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/CommentControllerTests.cs +++ b/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/CommentControllerTests.cs @@ -1,231 +1,231 @@ -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Configuration; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers; -using LBPUnion.ProjectLighthouse.Tests.Helpers; -using LBPUnion.ProjectLighthouse.Types.Entities.Level; -using LBPUnion.ProjectLighthouse.Types.Entities.Profile; -using LBPUnion.ProjectLighthouse.Types.Levels; -using Microsoft.AspNetCore.Mvc; -using Xunit; - -namespace ProjectLighthouse.Tests.GameApiTests.Unit.Controllers; - -[Trait("Category", "Unit")] -public class CommentControllerTests -{ - [Fact] - public async Task PostComment_ShouldPostProfileComment_WhenBodyIsValid() - { - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); - - CommentController commentController = new(dbMock); - commentController.SetupTestController("test"); - - const string expectedCommentMessage = "test"; - - IActionResult result = await commentController.PostComment("unittest", null, 0); - - Assert.IsType(result); - CommentEntity? comment = dbMock.Comments.FirstOrDefault(); - Assert.NotNull(comment); - Assert.Equal(expectedCommentMessage, comment.Message); - } - - [Fact] - public async Task PostComment_ShouldCensorComment_WhenFilterEnabled() - { - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); - - CommentController commentController = new(dbMock); - commentController.SetupTestController("zamn"); - - CensorConfiguration.Instance.FilteredWordList = new List - { - "zamn", - }; - CensorConfiguration.Instance.UserInputFilterMode = FilterMode.Asterisks; - const string expectedCommentMessage = "****"; - - IActionResult result = await commentController.PostComment("unittest", null, 0); - - - Assert.IsType(result); - CommentEntity? comment = dbMock.Comments.FirstOrDefault(); - Assert.NotNull(comment); - Assert.Equal(expectedCommentMessage, comment.Message); - } - - [Fact] - public async Task PostComment_ShouldCensorComment_WhenFilterDisabled() - { - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); - - CommentController commentController = new(dbMock); - commentController.SetupTestController("zamn"); - - CensorConfiguration.Instance.FilteredWordList = new List - { - "zamn", - }; - CensorConfiguration.Instance.UserInputFilterMode = FilterMode.None; - - IActionResult result = await commentController.PostComment("unittest", null, 0); - - const string expectedCommentMessage = "zamn"; - - Assert.IsType(result); - CommentEntity? comment = dbMock.Comments.FirstOrDefault(); - Assert.NotNull(comment); - Assert.Equal(expectedCommentMessage, comment.Message); - } - - [Fact] - public async Task PostComment_ShouldPostUserLevelComment_WhenBodyIsValid() - { - List slots = new() - { - new SlotEntity - { - SlotId = 1, - CreatorId = 1, - Type = SlotType.User, - }, - }; - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(slots); - - CommentController commentController = new(dbMock); - commentController.SetupTestController("test"); - - const string expectedCommentMessage = "test"; - - IActionResult result = await commentController.PostComment(null, "user", 1); - - Assert.IsType(result); - CommentEntity? comment = dbMock.Comments.FirstOrDefault(); - Assert.NotNull(comment); - Assert.Equal(expectedCommentMessage, comment.Message); - } - - [Fact] - public async Task PostComment_ShouldPostDeveloperLevelComment_WhenBodyIsValid() - { - List slots = new() - { - new SlotEntity - { - SlotId = 1, - InternalSlotId = 12345, - CreatorId = 1, - Type = SlotType.Developer, - }, - }; - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(slots); - - CommentController commentController = new(dbMock); - commentController.SetupTestController("test"); - - const string expectedCommentMessage = "test"; - - IActionResult result = await commentController.PostComment(null, "developer", 12345); - - Assert.IsType(result); - CommentEntity? comment = dbMock.Comments.FirstOrDefault(); - Assert.NotNull(comment); - Assert.Equal(expectedCommentMessage, comment.Message); - } - - [Fact] - public async Task PostComment_ShouldNotPostProfileComment_WhenTargetProfileInvalid() - { - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); - - CommentController commentController = new(dbMock); - commentController.SetupTestController("test"); - - IActionResult result = await commentController.PostComment("unittest2", null, 0); - - Assert.IsType(result); - } - - [Fact] - public async Task PostComment_ShouldNotPostUserLevelComment_WhenLevelInvalid() - { - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); - - CommentController commentController = new(dbMock); - commentController.SetupTestController("test"); - - IActionResult result = await commentController.PostComment(null, "user", 1); - - Assert.IsType(result); - } - - [Fact] - public async Task PostComment_ShouldNotPostComment_WhenBodyIsEmpty() - { - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); - - CommentController commentController = new(dbMock); - commentController.SetupTestController(""); - - IActionResult result = await commentController.PostComment("unittest", null, 0); - - Assert.IsType(result); - } - - [Fact] - public async Task PostComment_ShouldNotPostComment_WhenBodyIsInvalid() - { - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); - - CommentController commentController = new(dbMock); - commentController.SetupTestController(""); - - IActionResult result = await commentController.PostComment("unittest", null, 0); - - Assert.IsType(result); - } - - [Fact] - public async Task PostComment_ShouldFail_WhenSlotTypeIsInvalid() - { - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); - - CommentController commentController = new(dbMock); - commentController.SetupTestController("test"); - - IActionResult result = await commentController.PostComment(null, "banana", 0); - - Assert.IsType(result); - } - - [Fact] - public async Task PostComment_ShouldFail_WhenAllArgumentsAreEmpty() - { - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); - - CommentController commentController = new(dbMock); - commentController.SetupTestController("test"); - - IActionResult result = await commentController.PostComment(null, null, 0); - - Assert.IsType(result); - } - - [Fact] - public async Task PostComment_ShouldFail_WhenSlotTypeAndUsernameAreProvided() - { - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); - - CommentController commentController = new(dbMock); - commentController.SetupTestController("test"); - - IActionResult result = await commentController.PostComment("unittest", "user", 10); - - Assert.IsType(result); - } - +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Configuration; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers; +using LBPUnion.ProjectLighthouse.Tests.Helpers; +using LBPUnion.ProjectLighthouse.Types.Entities.Level; +using LBPUnion.ProjectLighthouse.Types.Entities.Profile; +using LBPUnion.ProjectLighthouse.Types.Levels; +using Microsoft.AspNetCore.Mvc; +using Xunit; + +namespace ProjectLighthouse.Tests.GameApiTests.Unit.Controllers; + +[Trait("Category", "Unit")] +public class CommentControllerTests +{ + [Fact] + public async Task PostComment_ShouldPostProfileComment_WhenBodyIsValid() + { + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); + + CommentController commentController = new(dbMock); + commentController.SetupTestController("test"); + + const string expectedCommentMessage = "test"; + + IActionResult result = await commentController.PostComment("unittest", null, 0); + + Assert.IsType(result); + CommentEntity? comment = dbMock.Comments.FirstOrDefault(); + Assert.NotNull(comment); + Assert.Equal(expectedCommentMessage, comment.Message); + } + + [Fact] + public async Task PostComment_ShouldCensorComment_WhenFilterEnabled() + { + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); + + CommentController commentController = new(dbMock); + commentController.SetupTestController("zamn"); + + CensorConfiguration.Instance.FilteredWordList = new List + { + "zamn", + }; + CensorConfiguration.Instance.UserInputFilterMode = FilterMode.Asterisks; + const string expectedCommentMessage = "****"; + + IActionResult result = await commentController.PostComment("unittest", null, 0); + + + Assert.IsType(result); + CommentEntity? comment = dbMock.Comments.FirstOrDefault(); + Assert.NotNull(comment); + Assert.Equal(expectedCommentMessage, comment.Message); + } + + [Fact] + public async Task PostComment_ShouldCensorComment_WhenFilterDisabled() + { + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); + + CommentController commentController = new(dbMock); + commentController.SetupTestController("zamn"); + + CensorConfiguration.Instance.FilteredWordList = new List + { + "zamn", + }; + CensorConfiguration.Instance.UserInputFilterMode = FilterMode.None; + + IActionResult result = await commentController.PostComment("unittest", null, 0); + + const string expectedCommentMessage = "zamn"; + + Assert.IsType(result); + CommentEntity? comment = dbMock.Comments.FirstOrDefault(); + Assert.NotNull(comment); + Assert.Equal(expectedCommentMessage, comment.Message); + } + + [Fact] + public async Task PostComment_ShouldPostUserLevelComment_WhenBodyIsValid() + { + List slots = new() + { + new SlotEntity + { + SlotId = 1, + CreatorId = 1, + Type = SlotType.User, + }, + }; + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(slots); + + CommentController commentController = new(dbMock); + commentController.SetupTestController("test"); + + const string expectedCommentMessage = "test"; + + IActionResult result = await commentController.PostComment(null, "user", 1); + + Assert.IsType(result); + CommentEntity? comment = dbMock.Comments.FirstOrDefault(); + Assert.NotNull(comment); + Assert.Equal(expectedCommentMessage, comment.Message); + } + + [Fact] + public async Task PostComment_ShouldPostDeveloperLevelComment_WhenBodyIsValid() + { + List slots = new() + { + new SlotEntity + { + SlotId = 1, + InternalSlotId = 12345, + CreatorId = 1, + Type = SlotType.Developer, + }, + }; + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(slots); + + CommentController commentController = new(dbMock); + commentController.SetupTestController("test"); + + const string expectedCommentMessage = "test"; + + IActionResult result = await commentController.PostComment(null, "developer", 12345); + + Assert.IsType(result); + CommentEntity? comment = dbMock.Comments.FirstOrDefault(); + Assert.NotNull(comment); + Assert.Equal(expectedCommentMessage, comment.Message); + } + + [Fact] + public async Task PostComment_ShouldNotPostProfileComment_WhenTargetProfileInvalid() + { + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); + + CommentController commentController = new(dbMock); + commentController.SetupTestController("test"); + + IActionResult result = await commentController.PostComment("unittest2", null, 0); + + Assert.IsType(result); + } + + [Fact] + public async Task PostComment_ShouldNotPostUserLevelComment_WhenLevelInvalid() + { + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); + + CommentController commentController = new(dbMock); + commentController.SetupTestController("test"); + + IActionResult result = await commentController.PostComment(null, "user", 1); + + Assert.IsType(result); + } + + [Fact] + public async Task PostComment_ShouldNotPostComment_WhenBodyIsEmpty() + { + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); + + CommentController commentController = new(dbMock); + commentController.SetupTestController(""); + + IActionResult result = await commentController.PostComment("unittest", null, 0); + + Assert.IsType(result); + } + + [Fact] + public async Task PostComment_ShouldNotPostComment_WhenBodyIsInvalid() + { + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); + + CommentController commentController = new(dbMock); + commentController.SetupTestController(""); + + IActionResult result = await commentController.PostComment("unittest", null, 0); + + Assert.IsType(result); + } + + [Fact] + public async Task PostComment_ShouldFail_WhenSlotTypeIsInvalid() + { + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); + + CommentController commentController = new(dbMock); + commentController.SetupTestController("test"); + + IActionResult result = await commentController.PostComment(null, "banana", 0); + + Assert.IsType(result); + } + + [Fact] + public async Task PostComment_ShouldFail_WhenAllArgumentsAreEmpty() + { + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); + + CommentController commentController = new(dbMock); + commentController.SetupTestController("test"); + + IActionResult result = await commentController.PostComment(null, null, 0); + + Assert.IsType(result); + } + + [Fact] + public async Task PostComment_ShouldFail_WhenSlotTypeAndUsernameAreProvided() + { + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); + + CommentController commentController = new(dbMock); + commentController.SetupTestController("test"); + + IActionResult result = await commentController.PostComment("unittest", "user", 10); + + Assert.IsType(result); + } + } \ No newline at end of file diff --git a/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/ControllerExtensionTests.cs b/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/ControllerExtensionTests.cs index 4a00ab68..df32d889 100644 --- a/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/ControllerExtensionTests.cs +++ b/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/ControllerExtensionTests.cs @@ -1,445 +1,445 @@ -using LBPUnion.ProjectLighthouse.Filter; -using LBPUnion.ProjectLighthouse.Filter.Filters; -using LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers.Slots; -using LBPUnion.ProjectLighthouse.Servers.GameServer.Extensions; -using LBPUnion.ProjectLighthouse.Tests.Helpers; -using LBPUnion.ProjectLighthouse.Types.Entities.Token; -using LBPUnion.ProjectLighthouse.Types.Users; -using Microsoft.AspNetCore.Http; -using Xunit; - -namespace ProjectLighthouse.Tests.GameApiTests.Unit.Controllers; - -[Trait("Category", "Unit")] -public class ControllerExtensionTests -{ - [Fact] - public void GetDefaultFilters_ShouldReturnFilterBuilder() - { - SlotQueryBuilder queryBuilder = new SlotsController(null!).GetDefaultFilters(MockHelper.GetUnitTestToken()); - - Assert.NotEmpty(queryBuilder.GetFilters(typeof(GameVersionFilter))); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(HiddenSlotFilter))); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(SlotTypeFilter))); - } - - [Fact] - public void FilterFromRequest_ShouldAddExcludeLbp1Filter_WhenTokenNotLbp1() - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = GameVersion.LittleBigPlanet2; - SlotsController controller = new(null!) - { - ControllerContext = - { - HttpContext = new DefaultHttpContext - { - Request = - { - QueryString = new QueryString(), - }, - }, - }, - }; - - SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); - - Assert.NotEmpty(queryBuilder.GetFilters(typeof(ExcludeLBP1OnlyFilter))); - } - - [Fact] - public void FilterFromRequest_ShouldReturnFilters_WhenQueryEmpty() - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = GameVersion.LittleBigPlanet2; - SlotsController controller = new(null!) - { - ControllerContext = - { - HttpContext = new DefaultHttpContext - { - Request = - { - QueryString = new QueryString(), - }, - }, - }, - }; - - SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); - - Assert.NotEmpty(queryBuilder.GetFilters(typeof(GameVersionFilter))); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(ExcludeLBP1OnlyFilter))); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(SubLevelFilter))); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(HiddenSlotFilter))); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(SlotTypeFilter))); - } - - [Fact] - public void FilterFromRequest_ShouldAddLabelFilter_WhenAuthorLabelPresent() - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = GameVersion.LittleBigPlanet2; - SlotsController controller = new(null!) - { - ControllerContext = - { - HttpContext = new DefaultHttpContext - { - Request = - { - QueryString = new QueryString("?labelFilter0=LABEL_TEST"), - }, - }, - }, - }; - - SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(AuthorLabelFilter))); - } - - [Fact] - public void FilterFromRequest_ShouldAddPlayerCountFilter_WhenPlayersPresent() - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = GameVersion.LittleBigPlanet2; - SlotsController controller = new(null!) - { - ControllerContext = - { - HttpContext = new DefaultHttpContext - { - Request = - { - QueryString = new QueryString("?players=1"), - }, - }, - }, - }; - - SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(PlayerCountFilter))); - } - - [Fact] - public void FilterFromRequest_ShouldAddTextFilter_WhenTextFilterPresent() - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = GameVersion.LittleBigPlanet2; - SlotsController controller = new(null!) - { - ControllerContext = - { - HttpContext = new DefaultHttpContext - { - Request = - { - QueryString = new QueryString("?textFilter=test"), - }, - }, - }, - }; - - SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(TextFilter))); - } - - [Fact] - public void FilterFromRequest_ShouldAddFirstUploadedFilter_WhenDateFilterPresent() - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = GameVersion.LittleBigPlanet2; - SlotsController controller = new(null!) - { - ControllerContext = - { - HttpContext = new DefaultHttpContext - { - Request = - { - QueryString = new QueryString("?dateFilterType=thisWeek"), - }, - }, - }, - }; - - SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(FirstUploadedFilter))); - } - - [Fact] - public void FilterFromRequest_ShouldNotAddFirstUploadedFilter_WhenDateFilterInvalid() - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = GameVersion.LittleBigPlanet2; - SlotsController controller = new(null!) - { - ControllerContext = - { - HttpContext = new DefaultHttpContext - { - Request = - { - QueryString = new QueryString("?dateFilterType=thisMillenium"), - }, - }, - }, - }; - - SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); - Assert.Empty(queryBuilder.GetFilters(typeof(FirstUploadedFilter))); - } - - [Fact] - public void FilterFromRequest_ShouldAddExcludeMoveFilter_WhenMoveEqualsFalse() - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = GameVersion.LittleBigPlanet2; - SlotsController controller = new(null!) - { - ControllerContext = - { - HttpContext = new DefaultHttpContext - { - Request = - { - QueryString = new QueryString("?move=false"), - }, - }, - }, - }; - - SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(ExcludeMovePackFilter))); - } - - [Fact] - public void FilterFromRequest_ShouldAddMoveFilter_WhenMoveEqualsOnly() - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = GameVersion.LittleBigPlanet2; - SlotsController controller = new(null!) - { - ControllerContext = - { - HttpContext = new DefaultHttpContext - { - Request = - { - QueryString = new QueryString("?move=only"), - }, - }, - }, - }; - - SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(MovePackFilter))); - } - - [Fact] - public void FilterFromRequest_ShouldAddCrossControlFilter_WhenCrossControlEqualsTrue() - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = GameVersion.LittleBigPlanet2; - SlotsController controller = new(null!) - { - ControllerContext = - { - HttpContext = new DefaultHttpContext - { - Request = - { - QueryString = new QueryString("?crosscontrol=true"), - }, - }, - }, - }; - - SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(CrossControlFilter))); - } - - [Fact] - public void FilterFromRequest_ShouldAddExcludeCrossControlFilter_WhenCrossControlNotTrue() - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = GameVersion.LittleBigPlanet2; - SlotsController controller = new(null!) - { - ControllerContext = - { - HttpContext = new DefaultHttpContext - { - Request = - { - QueryString = new QueryString("?crosscontrol=false"), - }, - }, - }, - }; - - SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(ExcludeCrossControlFilter))); - } - - [Fact] - public void FilterFromRequest_ShouldAddExcludeCrossControlFilter_WhenCrossControlMissing() - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = GameVersion.LittleBigPlanet2; - SlotsController controller = new(null!) - { - ControllerContext = - { - HttpContext = new DefaultHttpContext - { - Request = - { - QueryString = new QueryString(), - }, - }, - }, - }; - - SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(ExcludeCrossControlFilter))); - } - - [Fact] - public void FilterFromRequest_ShouldAddAdventureFilter_WhenAdventureEqualsAllMust() - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = GameVersion.LittleBigPlanet3; - SlotsController controller = new(null!) - { - ControllerContext = - { - HttpContext = new DefaultHttpContext - { - Request = - { - QueryString = new QueryString("?adventure=allMust"), - }, - }, - }, - }; - - SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(AdventureFilter))); - } - - [Fact] - public void FilterFromRequest_ShouldAddExcludeAdventureFilter_WhenAdventureEqualsNoneCan() - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = GameVersion.LittleBigPlanet3; - SlotsController controller = new(null!) - { - ControllerContext = - { - HttpContext = new DefaultHttpContext - { - Request = - { - QueryString = new QueryString("?adventure=noneCan"), - }, - }, - }, - }; - - SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(ExcludeAdventureFilter))); - } - - [Fact] - public void FilterFromRequest_ShouldAddMovePackFilter_WhenMoveEqualsAllMust() - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = GameVersion.LittleBigPlanet3; - SlotsController controller = new(null!) - { - ControllerContext = - { - HttpContext = new DefaultHttpContext - { - Request = - { - QueryString = new QueryString("?move=allMust"), - }, - }, - }, - }; - - SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(MovePackFilter))); - } - - [Fact] - public void FilterFromRequest_ShouldAddExcludeMoveFilter_WhenMoveEqualsNoneCan() - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = GameVersion.LittleBigPlanet3; - SlotsController controller = new(null!) - { - ControllerContext = - { - HttpContext = new DefaultHttpContext - { - Request = - { - QueryString = new QueryString("?move=noneCan"), - }, - }, - }, - }; - - SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(ExcludeMovePackFilter))); - } - - [Fact] - public void FilterFromRequest_ShouldAddGameVersionListFilter_WhenGameFilterIsPresent() - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = GameVersion.LittleBigPlanet3; - SlotsController controller = new(null!) - { - ControllerContext = - { - HttpContext = new DefaultHttpContext - { - Request = - { - QueryString = new QueryString("?gameFilter[]=lbp1&gameFilter[]=lbp3"), - }, - }, - }, - }; - - SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(GameVersionListFilter))); - } - - [Fact] - public void FilterFromRequest_ShouldAddResultTypeFilter_WhenResultTypeIsPresent() - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = GameVersion.LittleBigPlanet3; - SlotsController controller = new(null!) - { - ControllerContext = - { - HttpContext = new DefaultHttpContext - { - Request = - { - QueryString = new QueryString("?resultType[]=slot&resultType[]=playlist"), - }, - }, - }, - }; - - SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); - Assert.NotEmpty(queryBuilder.GetFilters(typeof(ResultTypeFilter))); - } +using LBPUnion.ProjectLighthouse.Filter; +using LBPUnion.ProjectLighthouse.Filter.Filters; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers.Slots; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Extensions; +using LBPUnion.ProjectLighthouse.Tests.Helpers; +using LBPUnion.ProjectLighthouse.Types.Entities.Token; +using LBPUnion.ProjectLighthouse.Types.Users; +using Microsoft.AspNetCore.Http; +using Xunit; + +namespace ProjectLighthouse.Tests.GameApiTests.Unit.Controllers; + +[Trait("Category", "Unit")] +public class ControllerExtensionTests +{ + [Fact] + public void GetDefaultFilters_ShouldReturnFilterBuilder() + { + SlotQueryBuilder queryBuilder = new SlotsController(null!).GetDefaultFilters(MockHelper.GetUnitTestToken()); + + Assert.NotEmpty(queryBuilder.GetFilters(typeof(GameVersionFilter))); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(HiddenSlotFilter))); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(SlotTypeFilter))); + } + + [Fact] + public void FilterFromRequest_ShouldAddExcludeLbp1Filter_WhenTokenNotLbp1() + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = GameVersion.LittleBigPlanet2; + SlotsController controller = new(null!) + { + ControllerContext = + { + HttpContext = new DefaultHttpContext + { + Request = + { + QueryString = new QueryString(), + }, + }, + }, + }; + + SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); + + Assert.NotEmpty(queryBuilder.GetFilters(typeof(ExcludeLBP1OnlyFilter))); + } + + [Fact] + public void FilterFromRequest_ShouldReturnFilters_WhenQueryEmpty() + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = GameVersion.LittleBigPlanet2; + SlotsController controller = new(null!) + { + ControllerContext = + { + HttpContext = new DefaultHttpContext + { + Request = + { + QueryString = new QueryString(), + }, + }, + }, + }; + + SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); + + Assert.NotEmpty(queryBuilder.GetFilters(typeof(GameVersionFilter))); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(ExcludeLBP1OnlyFilter))); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(SubLevelFilter))); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(HiddenSlotFilter))); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(SlotTypeFilter))); + } + + [Fact] + public void FilterFromRequest_ShouldAddLabelFilter_WhenAuthorLabelPresent() + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = GameVersion.LittleBigPlanet2; + SlotsController controller = new(null!) + { + ControllerContext = + { + HttpContext = new DefaultHttpContext + { + Request = + { + QueryString = new QueryString("?labelFilter0=LABEL_TEST"), + }, + }, + }, + }; + + SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(AuthorLabelFilter))); + } + + [Fact] + public void FilterFromRequest_ShouldAddPlayerCountFilter_WhenPlayersPresent() + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = GameVersion.LittleBigPlanet2; + SlotsController controller = new(null!) + { + ControllerContext = + { + HttpContext = new DefaultHttpContext + { + Request = + { + QueryString = new QueryString("?players=1"), + }, + }, + }, + }; + + SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(PlayerCountFilter))); + } + + [Fact] + public void FilterFromRequest_ShouldAddTextFilter_WhenTextFilterPresent() + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = GameVersion.LittleBigPlanet2; + SlotsController controller = new(null!) + { + ControllerContext = + { + HttpContext = new DefaultHttpContext + { + Request = + { + QueryString = new QueryString("?textFilter=test"), + }, + }, + }, + }; + + SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(TextFilter))); + } + + [Fact] + public void FilterFromRequest_ShouldAddFirstUploadedFilter_WhenDateFilterPresent() + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = GameVersion.LittleBigPlanet2; + SlotsController controller = new(null!) + { + ControllerContext = + { + HttpContext = new DefaultHttpContext + { + Request = + { + QueryString = new QueryString("?dateFilterType=thisWeek"), + }, + }, + }, + }; + + SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(FirstUploadedFilter))); + } + + [Fact] + public void FilterFromRequest_ShouldNotAddFirstUploadedFilter_WhenDateFilterInvalid() + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = GameVersion.LittleBigPlanet2; + SlotsController controller = new(null!) + { + ControllerContext = + { + HttpContext = new DefaultHttpContext + { + Request = + { + QueryString = new QueryString("?dateFilterType=thisMillenium"), + }, + }, + }, + }; + + SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); + Assert.Empty(queryBuilder.GetFilters(typeof(FirstUploadedFilter))); + } + + [Fact] + public void FilterFromRequest_ShouldAddExcludeMoveFilter_WhenMoveEqualsFalse() + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = GameVersion.LittleBigPlanet2; + SlotsController controller = new(null!) + { + ControllerContext = + { + HttpContext = new DefaultHttpContext + { + Request = + { + QueryString = new QueryString("?move=false"), + }, + }, + }, + }; + + SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(ExcludeMovePackFilter))); + } + + [Fact] + public void FilterFromRequest_ShouldAddMoveFilter_WhenMoveEqualsOnly() + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = GameVersion.LittleBigPlanet2; + SlotsController controller = new(null!) + { + ControllerContext = + { + HttpContext = new DefaultHttpContext + { + Request = + { + QueryString = new QueryString("?move=only"), + }, + }, + }, + }; + + SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(MovePackFilter))); + } + + [Fact] + public void FilterFromRequest_ShouldAddCrossControlFilter_WhenCrossControlEqualsTrue() + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = GameVersion.LittleBigPlanet2; + SlotsController controller = new(null!) + { + ControllerContext = + { + HttpContext = new DefaultHttpContext + { + Request = + { + QueryString = new QueryString("?crosscontrol=true"), + }, + }, + }, + }; + + SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(CrossControlFilter))); + } + + [Fact] + public void FilterFromRequest_ShouldAddExcludeCrossControlFilter_WhenCrossControlNotTrue() + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = GameVersion.LittleBigPlanet2; + SlotsController controller = new(null!) + { + ControllerContext = + { + HttpContext = new DefaultHttpContext + { + Request = + { + QueryString = new QueryString("?crosscontrol=false"), + }, + }, + }, + }; + + SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(ExcludeCrossControlFilter))); + } + + [Fact] + public void FilterFromRequest_ShouldAddExcludeCrossControlFilter_WhenCrossControlMissing() + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = GameVersion.LittleBigPlanet2; + SlotsController controller = new(null!) + { + ControllerContext = + { + HttpContext = new DefaultHttpContext + { + Request = + { + QueryString = new QueryString(), + }, + }, + }, + }; + + SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(ExcludeCrossControlFilter))); + } + + [Fact] + public void FilterFromRequest_ShouldAddAdventureFilter_WhenAdventureEqualsAllMust() + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = GameVersion.LittleBigPlanet3; + SlotsController controller = new(null!) + { + ControllerContext = + { + HttpContext = new DefaultHttpContext + { + Request = + { + QueryString = new QueryString("?adventure=allMust"), + }, + }, + }, + }; + + SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(AdventureFilter))); + } + + [Fact] + public void FilterFromRequest_ShouldAddExcludeAdventureFilter_WhenAdventureEqualsNoneCan() + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = GameVersion.LittleBigPlanet3; + SlotsController controller = new(null!) + { + ControllerContext = + { + HttpContext = new DefaultHttpContext + { + Request = + { + QueryString = new QueryString("?adventure=noneCan"), + }, + }, + }, + }; + + SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(ExcludeAdventureFilter))); + } + + [Fact] + public void FilterFromRequest_ShouldAddMovePackFilter_WhenMoveEqualsAllMust() + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = GameVersion.LittleBigPlanet3; + SlotsController controller = new(null!) + { + ControllerContext = + { + HttpContext = new DefaultHttpContext + { + Request = + { + QueryString = new QueryString("?move=allMust"), + }, + }, + }, + }; + + SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(MovePackFilter))); + } + + [Fact] + public void FilterFromRequest_ShouldAddExcludeMoveFilter_WhenMoveEqualsNoneCan() + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = GameVersion.LittleBigPlanet3; + SlotsController controller = new(null!) + { + ControllerContext = + { + HttpContext = new DefaultHttpContext + { + Request = + { + QueryString = new QueryString("?move=noneCan"), + }, + }, + }, + }; + + SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(ExcludeMovePackFilter))); + } + + [Fact] + public void FilterFromRequest_ShouldAddGameVersionListFilter_WhenGameFilterIsPresent() + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = GameVersion.LittleBigPlanet3; + SlotsController controller = new(null!) + { + ControllerContext = + { + HttpContext = new DefaultHttpContext + { + Request = + { + QueryString = new QueryString("?gameFilter[]=lbp1&gameFilter[]=lbp3"), + }, + }, + }, + }; + + SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(GameVersionListFilter))); + } + + [Fact] + public void FilterFromRequest_ShouldAddResultTypeFilter_WhenResultTypeIsPresent() + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = GameVersion.LittleBigPlanet3; + SlotsController controller = new(null!) + { + ControllerContext = + { + HttpContext = new DefaultHttpContext + { + Request = + { + QueryString = new QueryString("?resultType[]=slot&resultType[]=playlist"), + }, + }, + }, + }; + + SlotQueryBuilder queryBuilder = controller.FilterFromRequest(token); + Assert.NotEmpty(queryBuilder.GetFilters(typeof(ResultTypeFilter))); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/MessageControllerTests.cs b/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/MessageControllerTests.cs index a0b42a0a..7e923ce4 100644 --- a/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/MessageControllerTests.cs +++ b/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/MessageControllerTests.cs @@ -1,277 +1,277 @@ -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Configuration; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Mail; -using LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers; -using LBPUnion.ProjectLighthouse.Tests.Helpers; -using LBPUnion.ProjectLighthouse.Types.Entities.Profile; -using LBPUnion.ProjectLighthouse.Types.Mail; -using Microsoft.AspNetCore.Mvc; -using Moq; -using Xunit; - -namespace ProjectLighthouse.Tests.GameApiTests.Unit.Controllers; - -[Trait("Category", "Unit")] -public class MessageControllerTests -{ - [Fact] - public void Eula_ShouldReturnLicense_WhenConfigEmpty() - { - MessageController messageController = new(null!); - messageController.SetupTestController(); - - ServerConfiguration.Instance.EulaText = ""; - - const string expected = @" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see ." + "\n"; - - IActionResult result = messageController.Eula(); - - string eulaMsg = result.CastTo(); - Assert.Equal(expected, eulaMsg); - } - - [Fact] - public void Eula_ShouldReturnLicenseAndConfigString_WhenConfigNotEmpty() - { - MessageController messageController = new(null!); - messageController.SetupTestController(); - - ServerConfiguration.Instance.EulaText = "unit test eula text"; - - const string expected = @" -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Affero General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU Affero General Public License for more details. - -You should have received a copy of the GNU Affero General Public License -along with this program. If not, see ." + "\nunit test eula text"; - - IActionResult result = messageController.Eula(); - - string eulaMsg = result.CastTo(); - Assert.Equal(expected, eulaMsg); - } - - [Fact] - public async Task Announcement_WithVariables_ShouldBeResolved() - { - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); - MessageController messageController = new(dbMock); - messageController.SetupTestController(); - - ServerConfiguration.Instance.AnnounceText = "you are now logged in as %user (id: %id)"; - - const string expected = "you are now logged in as unittest (id: 1)"; - - IActionResult result = await messageController.Announce(); - - string announceMsg = result.CastTo(); - Assert.Equal(expected, announceMsg); - } - - [Fact] - public async Task Announcement_WithEmptyString_ShouldBeEmpty() - { - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); - MessageController messageController = new(dbMock); - messageController.SetupTestController(); - - ServerConfiguration.Instance.AnnounceText = ""; - - const string expected = ""; - - IActionResult result = await messageController.Announce(); - - string announceMsg = result.CastTo(); - Assert.Equal(expected, announceMsg); - } - - [Fact] - public async Task Filter_ShouldNotCensor_WhenCensorDisabled() - { - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); - - const string request = "unit test message"; - MessageController messageController = new(dbMock); - messageController.SetupTestController(request); - - CensorConfiguration.Instance.UserInputFilterMode = FilterMode.None; - - const string expectedBody = "unit test message"; - - IActionResult result = await messageController.Filter(new NullMailService()); - - string filteredMessage = result.CastTo(); - Assert.Equal(expectedBody, filteredMessage); - } - - [Fact] - public async Task Filter_ShouldCensor_WhenCensorEnabled() - { - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); - - const string request = "unit test message bruh"; - MessageController messageController = new(dbMock); - messageController.SetupTestController(request); - - CensorConfiguration.Instance.UserInputFilterMode = FilterMode.Asterisks; - CensorConfiguration.Instance.FilteredWordList = new List - { - "bruh", - }; - - const string expectedBody = "unit test message ****"; - - IActionResult result = await messageController.Filter(new NullMailService()); - - string filteredMessage = result.CastTo(); - Assert.Equal(expectedBody, filteredMessage); - } - - private static Mock getMailServiceMock() - { - Mock mailMock = new(); - mailMock.Setup(x => x.SendEmailAsync(It.IsAny(), It.IsAny(), It.IsAny())) - .Returns(Task.FromResult(true)); - return mailMock; - } - - [Fact] - public async Task Filter_ShouldNotSendEmail_WhenMailDisabled() - { - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); - Mock mailMock = getMailServiceMock(); - const string request = "/setemail unittest@unittest.com"; - MessageController messageController = new(dbMock); - messageController.SetupTestController(request); - - ServerConfiguration.Instance.Mail.MailEnabled = false; - CensorConfiguration.Instance.FilteredWordList = new List(); - - const string expected = "/setemail unittest@unittest.com"; - - IActionResult result = await messageController.Filter(mailMock.Object); - - string filteredMessage = result.CastTo(); - Assert.Equal(expected, filteredMessage); - } - - [Fact] - public async Task Filter_ShouldSendEmail_WhenMailEnabled_AndEmailNotTaken() - { - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); - - Mock mailMock = getMailServiceMock(); - - const string request = "/setemail unittest@unittest.com"; - - MessageController messageController = new(dbMock); - messageController.SetupTestController(request); - - ServerConfiguration.Instance.Mail.MailEnabled = true; - - const string expectedEmail = "unittest@unittest.com"; - - IActionResult result = await messageController.Filter(mailMock.Object); - - Assert.IsType(result); - Assert.Equal(expectedEmail, dbMock.Users.First().EmailAddress); - mailMock.Verify(x => x.SendEmailAsync(It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); - } - - [Fact] - public async Task Filter_ShouldNotSendEmail_WhenMailEnabled_AndEmailTaken() - { - List users = new() - { - new UserEntity - { - UserId = 2, - EmailAddress = "unittest@unittest.com", - EmailAddressVerified = false, - }, - }; - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(users); - Mock mailMock = getMailServiceMock(); - - const string request = "/setemail unittest@unittest.com"; - - MessageController messageController = new(dbMock); - messageController.SetupTestController(request); - - ServerConfiguration.Instance.Mail.MailEnabled = true; - - IActionResult result = await messageController.Filter(mailMock.Object); - - Assert.IsType(result); - mailMock.Verify(x => x.SendEmailAsync(It.IsAny(), It.IsAny(), It.IsAny()), Times.Never); - } - - [Fact] - public async Task Filter_ShouldNotSendEmail_WhenMailEnabled_AndEmailAlreadyVerified() - { - UserEntity unitTestUser = MockHelper.GetUnitTestUser(); - unitTestUser.EmailAddressVerified = true; - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(new List - { - unitTestUser, - }); - - Mock mailMock = getMailServiceMock(); - - const string request = "/setemail unittest@unittest.com"; - - MessageController messageController = new(dbMock); - messageController.SetupTestController(request); - - ServerConfiguration.Instance.Mail.MailEnabled = true; - - IActionResult result = await messageController.Filter(mailMock.Object); - - Assert.IsType(result); - mailMock.Verify(x => x.SendEmailAsync(It.IsAny(), It.IsAny(), It.IsAny()), Times.Never); - } - - [Fact] - public async Task Filter_ShouldNotSendEmail_WhenMailEnabled_AndEmailFormatInvalid() - { - UserEntity unitTestUser = MockHelper.GetUnitTestUser(); - unitTestUser.EmailAddressVerified = true; - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); - - Mock mailMock = getMailServiceMock(); - - const string request = "/setemail unittestinvalidemail@@@"; - - MessageController messageController = new(dbMock); - messageController.SetupTestController(request); - - ServerConfiguration.Instance.Mail.MailEnabled = true; - - IActionResult result = await messageController.Filter(mailMock.Object); - - Assert.IsType(result); - mailMock.Verify(x => x.SendEmailAsync(It.IsAny(), It.IsAny(), It.IsAny()), Times.Never); - } +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Configuration; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Mail; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers; +using LBPUnion.ProjectLighthouse.Tests.Helpers; +using LBPUnion.ProjectLighthouse.Types.Entities.Profile; +using LBPUnion.ProjectLighthouse.Types.Mail; +using Microsoft.AspNetCore.Mvc; +using Moq; +using Xunit; + +namespace ProjectLighthouse.Tests.GameApiTests.Unit.Controllers; + +[Trait("Category", "Unit")] +public class MessageControllerTests +{ + [Fact] + public void Eula_ShouldReturnLicense_WhenConfigEmpty() + { + MessageController messageController = new(null!); + messageController.SetupTestController(); + + ServerConfiguration.Instance.EulaText = ""; + + const string expected = @" +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see ." + "\n"; + + IActionResult result = messageController.Eula(); + + string eulaMsg = result.CastTo(); + Assert.Equal(expected, eulaMsg); + } + + [Fact] + public void Eula_ShouldReturnLicenseAndConfigString_WhenConfigNotEmpty() + { + MessageController messageController = new(null!); + messageController.SetupTestController(); + + ServerConfiguration.Instance.EulaText = "unit test eula text"; + + const string expected = @" +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see ." + "\nunit test eula text"; + + IActionResult result = messageController.Eula(); + + string eulaMsg = result.CastTo(); + Assert.Equal(expected, eulaMsg); + } + + [Fact] + public async Task Announcement_WithVariables_ShouldBeResolved() + { + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); + MessageController messageController = new(dbMock); + messageController.SetupTestController(); + + ServerConfiguration.Instance.AnnounceText = "you are now logged in as %user (id: %id)"; + + const string expected = "you are now logged in as unittest (id: 1)"; + + IActionResult result = await messageController.Announce(); + + string announceMsg = result.CastTo(); + Assert.Equal(expected, announceMsg); + } + + [Fact] + public async Task Announcement_WithEmptyString_ShouldBeEmpty() + { + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); + MessageController messageController = new(dbMock); + messageController.SetupTestController(); + + ServerConfiguration.Instance.AnnounceText = ""; + + const string expected = ""; + + IActionResult result = await messageController.Announce(); + + string announceMsg = result.CastTo(); + Assert.Equal(expected, announceMsg); + } + + [Fact] + public async Task Filter_ShouldNotCensor_WhenCensorDisabled() + { + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); + + const string request = "unit test message"; + MessageController messageController = new(dbMock); + messageController.SetupTestController(request); + + CensorConfiguration.Instance.UserInputFilterMode = FilterMode.None; + + const string expectedBody = "unit test message"; + + IActionResult result = await messageController.Filter(new NullMailService()); + + string filteredMessage = result.CastTo(); + Assert.Equal(expectedBody, filteredMessage); + } + + [Fact] + public async Task Filter_ShouldCensor_WhenCensorEnabled() + { + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); + + const string request = "unit test message bruh"; + MessageController messageController = new(dbMock); + messageController.SetupTestController(request); + + CensorConfiguration.Instance.UserInputFilterMode = FilterMode.Asterisks; + CensorConfiguration.Instance.FilteredWordList = new List + { + "bruh", + }; + + const string expectedBody = "unit test message ****"; + + IActionResult result = await messageController.Filter(new NullMailService()); + + string filteredMessage = result.CastTo(); + Assert.Equal(expectedBody, filteredMessage); + } + + private static Mock getMailServiceMock() + { + Mock mailMock = new(); + mailMock.Setup(x => x.SendEmailAsync(It.IsAny(), It.IsAny(), It.IsAny())) + .Returns(Task.FromResult(true)); + return mailMock; + } + + [Fact] + public async Task Filter_ShouldNotSendEmail_WhenMailDisabled() + { + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); + Mock mailMock = getMailServiceMock(); + const string request = "/setemail unittest@unittest.com"; + MessageController messageController = new(dbMock); + messageController.SetupTestController(request); + + ServerConfiguration.Instance.Mail.MailEnabled = false; + CensorConfiguration.Instance.FilteredWordList = new List(); + + const string expected = "/setemail unittest@unittest.com"; + + IActionResult result = await messageController.Filter(mailMock.Object); + + string filteredMessage = result.CastTo(); + Assert.Equal(expected, filteredMessage); + } + + [Fact] + public async Task Filter_ShouldSendEmail_WhenMailEnabled_AndEmailNotTaken() + { + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); + + Mock mailMock = getMailServiceMock(); + + const string request = "/setemail unittest@unittest.com"; + + MessageController messageController = new(dbMock); + messageController.SetupTestController(request); + + ServerConfiguration.Instance.Mail.MailEnabled = true; + + const string expectedEmail = "unittest@unittest.com"; + + IActionResult result = await messageController.Filter(mailMock.Object); + + Assert.IsType(result); + Assert.Equal(expectedEmail, dbMock.Users.First().EmailAddress); + mailMock.Verify(x => x.SendEmailAsync(It.IsAny(), It.IsAny(), It.IsAny()), Times.Once); + } + + [Fact] + public async Task Filter_ShouldNotSendEmail_WhenMailEnabled_AndEmailTaken() + { + List users = new() + { + new UserEntity + { + UserId = 2, + EmailAddress = "unittest@unittest.com", + EmailAddressVerified = false, + }, + }; + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(users); + Mock mailMock = getMailServiceMock(); + + const string request = "/setemail unittest@unittest.com"; + + MessageController messageController = new(dbMock); + messageController.SetupTestController(request); + + ServerConfiguration.Instance.Mail.MailEnabled = true; + + IActionResult result = await messageController.Filter(mailMock.Object); + + Assert.IsType(result); + mailMock.Verify(x => x.SendEmailAsync(It.IsAny(), It.IsAny(), It.IsAny()), Times.Never); + } + + [Fact] + public async Task Filter_ShouldNotSendEmail_WhenMailEnabled_AndEmailAlreadyVerified() + { + UserEntity unitTestUser = MockHelper.GetUnitTestUser(); + unitTestUser.EmailAddressVerified = true; + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(new List + { + unitTestUser, + }); + + Mock mailMock = getMailServiceMock(); + + const string request = "/setemail unittest@unittest.com"; + + MessageController messageController = new(dbMock); + messageController.SetupTestController(request); + + ServerConfiguration.Instance.Mail.MailEnabled = true; + + IActionResult result = await messageController.Filter(mailMock.Object); + + Assert.IsType(result); + mailMock.Verify(x => x.SendEmailAsync(It.IsAny(), It.IsAny(), It.IsAny()), Times.Never); + } + + [Fact] + public async Task Filter_ShouldNotSendEmail_WhenMailEnabled_AndEmailFormatInvalid() + { + UserEntity unitTestUser = MockHelper.GetUnitTestUser(); + unitTestUser.EmailAddressVerified = true; + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(); + + Mock mailMock = getMailServiceMock(); + + const string request = "/setemail unittestinvalidemail@@@"; + + MessageController messageController = new(dbMock); + messageController.SetupTestController(request); + + ServerConfiguration.Instance.Mail.MailEnabled = true; + + IActionResult result = await messageController.Filter(mailMock.Object); + + Assert.IsType(result); + mailMock.Verify(x => x.SendEmailAsync(It.IsAny(), It.IsAny(), It.IsAny()), Times.Never); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/ReviewControllerTests.cs b/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/ReviewControllerTests.cs index d6eb94f8..de990fe6 100644 --- a/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/ReviewControllerTests.cs +++ b/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/ReviewControllerTests.cs @@ -1,100 +1,100 @@ -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers.Slots; -using LBPUnion.ProjectLighthouse.Tests.Helpers; -using LBPUnion.ProjectLighthouse.Types.Entities.Level; -using LBPUnion.ProjectLighthouse.Types.Entities.Token; -using LBPUnion.ProjectLighthouse.Types.Serialization; -using LBPUnion.ProjectLighthouse.Types.Users; -using Microsoft.AspNetCore.Mvc; -using Xunit; - -namespace ProjectLighthouse.Tests.GameApiTests.Unit.Controllers; - -[Trait("Category", "Unit")] -public class ReviewControllerTests -{ - private static async Task InsertTestData(DatabaseContext database) - { - database.Slots.Add(new SlotEntity - { - SlotId = 1, - CreatorId = 1, - GameVersion = GameVersion.LittleBigPlanet3, - }); - - database.Slots.Add(new SlotEntity - { - SlotId = 2, - CreatorId = 1, - GameVersion = GameVersion.LittleBigPlanet2, - }); - - database.Reviews.Add(new ReviewEntity - { - ReviewId = 1, - ReviewerId = 1, - SlotId = 1, - }); - - database.Reviews.Add(new ReviewEntity - { - ReviewId = 2, - ReviewerId = 1, - SlotId = 2, - }); - await database.SaveChangesAsync(); - } - - [Theory] - [InlineData(GameVersion.LittleBigPlanet2, 1)] - [InlineData(GameVersion.LittleBigPlanet3, 2)] - public async Task ReviewsBy_ShouldNotList_HigherGameVersions(GameVersion version, int expected) - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = version; - DatabaseContext database = await MockHelper.GetTestDatabase(new List - { - token, - }); - - await InsertTestData(database); - - ReviewController controller = new(database); - controller.SetupTestController(token); - - IActionResult response = await controller.ReviewsBy("unittest"); - ReviewResponse review = response.CastTo(); - - Assert.Equal(expected, review.Reviews.Count); - Assert.True(review.Reviews.All(r => database.Slots.FirstOrDefault(s => s.SlotId == r.Slot.SlotId)?.GameVersion <= version)); - } - - [Theory] - [InlineData(GameVersion.LittleBigPlanet2, 2, 1)] - [InlineData(GameVersion.LittleBigPlanet2, 1, 0)] - [InlineData(GameVersion.LittleBigPlanet3, 2, 1)] - [InlineData(GameVersion.LittleBigPlanet3, 1, 1)] - public async Task ReviewsFor_ShouldNotList_HigherGameVersions(GameVersion version, int slotId, int expected) - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = version; - DatabaseContext database = await MockHelper.GetTestDatabase(new List - { - token, - }); - - await InsertTestData(database); - - ReviewController controller = new(database); - controller.SetupTestController(token); - - IActionResult response = await controller.ReviewsFor(slotId); - ReviewResponse review = response.CastTo(); - - Assert.Equal(expected, review.Reviews.Count); - Assert.True(review.Reviews.All(r => database.Slots.FirstOrDefault(s => s.SlotId == r.Slot.SlotId)?.GameVersion <= version)); - } +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers.Slots; +using LBPUnion.ProjectLighthouse.Tests.Helpers; +using LBPUnion.ProjectLighthouse.Types.Entities.Level; +using LBPUnion.ProjectLighthouse.Types.Entities.Token; +using LBPUnion.ProjectLighthouse.Types.Serialization; +using LBPUnion.ProjectLighthouse.Types.Users; +using Microsoft.AspNetCore.Mvc; +using Xunit; + +namespace ProjectLighthouse.Tests.GameApiTests.Unit.Controllers; + +[Trait("Category", "Unit")] +public class ReviewControllerTests +{ + private static async Task InsertTestData(DatabaseContext database) + { + database.Slots.Add(new SlotEntity + { + SlotId = 1, + CreatorId = 1, + GameVersion = GameVersion.LittleBigPlanet3, + }); + + database.Slots.Add(new SlotEntity + { + SlotId = 2, + CreatorId = 1, + GameVersion = GameVersion.LittleBigPlanet2, + }); + + database.Reviews.Add(new ReviewEntity + { + ReviewId = 1, + ReviewerId = 1, + SlotId = 1, + }); + + database.Reviews.Add(new ReviewEntity + { + ReviewId = 2, + ReviewerId = 1, + SlotId = 2, + }); + await database.SaveChangesAsync(); + } + + [Theory] + [InlineData(GameVersion.LittleBigPlanet2, 1)] + [InlineData(GameVersion.LittleBigPlanet3, 2)] + public async Task ReviewsBy_ShouldNotList_HigherGameVersions(GameVersion version, int expected) + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = version; + DatabaseContext database = await MockHelper.GetTestDatabase(new List + { + token, + }); + + await InsertTestData(database); + + ReviewController controller = new(database); + controller.SetupTestController(token); + + IActionResult response = await controller.ReviewsBy("unittest"); + ReviewResponse review = response.CastTo(); + + Assert.Equal(expected, review.Reviews.Count); + Assert.True(review.Reviews.All(r => database.Slots.FirstOrDefault(s => s.SlotId == r.Slot.SlotId)?.GameVersion <= version)); + } + + [Theory] + [InlineData(GameVersion.LittleBigPlanet2, 2, 1)] + [InlineData(GameVersion.LittleBigPlanet2, 1, 0)] + [InlineData(GameVersion.LittleBigPlanet3, 2, 1)] + [InlineData(GameVersion.LittleBigPlanet3, 1, 1)] + public async Task ReviewsFor_ShouldNotList_HigherGameVersions(GameVersion version, int slotId, int expected) + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = version; + DatabaseContext database = await MockHelper.GetTestDatabase(new List + { + token, + }); + + await InsertTestData(database); + + ReviewController controller = new(database); + controller.SetupTestController(token); + + IActionResult response = await controller.ReviewsFor(slotId); + ReviewResponse review = response.CastTo(); + + Assert.Equal(expected, review.Reviews.Count); + Assert.True(review.Reviews.All(r => database.Slots.FirstOrDefault(s => s.SlotId == r.Slot.SlotId)?.GameVersion <= version)); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/ScoreControllerTests.cs b/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/ScoreControllerTests.cs index 96dd547a..f94649e5 100644 --- a/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/ScoreControllerTests.cs +++ b/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/ScoreControllerTests.cs @@ -1,161 +1,161 @@ -using System.Linq; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers.Slots; -using LBPUnion.ProjectLighthouse.Tests.Helpers; -using LBPUnion.ProjectLighthouse.Types.Entities.Level; -using Microsoft.AspNetCore.Mvc; -using Xunit; - -namespace ProjectLighthouse.Tests.GameApiTests.Unit.Controllers; - -[Trait("Category", "Unit")] -public class ScoreControllerTests -{ - [Fact] - public async Task SubmitScore_ShouldSubmitValidScore_WhenNoExistingScore() - { - DatabaseContext database = await MockHelper.GetTestDatabase(); - - SlotEntity slot = new() - { - CreatorId = 1, - SlotId = 1, - }; - database.Slots.Add(slot); - await database.SaveChangesAsync(); - - ScoreController scoreController = new(database); - const string xmlBody = """ - - 1 - 10 - unittest - - """; - scoreController.SetupTestController(xmlBody); - IActionResult result = await scoreController.SubmitScore("user", 1, 0); - Assert.IsType(result); - Assert.NotNull(database.Scores.FirstOrDefault(s => s.Type == 1 && s.SlotId == 1 && s.UserId == 1)); - } - - [Fact] - public async Task SubmitScore_ShouldUpdateScore_WhenBetterThanExistingScore() - { - DatabaseContext database = await MockHelper.GetTestDatabase(); - - SlotEntity slot = new() - { - CreatorId = 1, - SlotId = 1, - }; - database.Slots.Add(slot); - - ScoreEntity score = new() - { - SlotId = 1, - Type = 1, - UserId = 1, - Points = 5, - Timestamp = 0, - }; - database.Scores.Add(score); - await database.SaveChangesAsync(); - - ScoreController scoreController = new(database); - const string xmlBody = """ - - 1 - 10 - unittest - - """; - scoreController.SetupTestController(xmlBody); - IActionResult result = await scoreController.SubmitScore("user", 1, 0); - Assert.IsType(result); - ScoreEntity? newScore = database.Scores.FirstOrDefault(s => s.Type == 1 && s.SlotId == 1 && s.UserId == 1); - Assert.NotNull(newScore); - Assert.NotEqual(0, newScore.Timestamp); - Assert.Equal(10, newScore.Points); - } - - [Fact] - public async Task SubmitScore_ShouldNotUpdateScore_WhenEqualToExistingScore() - { - DatabaseContext database = await MockHelper.GetTestDatabase(); - - SlotEntity slot = new() - { - CreatorId = 1, - SlotId = 1, - }; - database.Slots.Add(slot); - - ScoreEntity score = new() - { - SlotId = 1, - Type = 1, - UserId = 1, - Points = 10, - Timestamp = 0, - }; - database.Scores.Add(score); - await database.SaveChangesAsync(); - - ScoreController scoreController = new(database); - const string xmlBody = """ - - 1 - 10 - unittest - - """; - scoreController.SetupTestController(xmlBody); - IActionResult result = await scoreController.SubmitScore("user", 1, 0); - Assert.IsType(result); - ScoreEntity? newScore = database.Scores.FirstOrDefault(s => s.Type == 1 && s.SlotId == 1 && s.UserId == 1); - Assert.NotNull(newScore); - Assert.Equal(0, newScore.Timestamp); - Assert.Equal(10, newScore.Points); - } - - [Fact] - public async Task SubmitScore_ShouldNotUpdateScore_WhenLessThanExistingScore() - { - DatabaseContext database = await MockHelper.GetTestDatabase(); - - SlotEntity slot = new() - { - CreatorId = 1, - SlotId = 1, - }; - database.Slots.Add(slot); - - ScoreEntity score = new() - { - SlotId = 1, - Type = 1, - UserId = 1, - Points = 10, - Timestamp = 0, - }; - database.Scores.Add(score); - await database.SaveChangesAsync(); - - ScoreController scoreController = new(database); - const string xmlBody = """ - - 1 - 5 - unittest - - """; - scoreController.SetupTestController(xmlBody); - IActionResult result = await scoreController.SubmitScore("user", 1, 0); - Assert.IsType(result); - ScoreEntity? newScore = database.Scores.FirstOrDefault(s => s.Type == 1 && s.SlotId == 1 && s.UserId == 1); - Assert.NotNull(newScore); - Assert.Equal(0, newScore.Timestamp); - Assert.Equal(10, newScore.Points); - } +using System.Linq; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers.Slots; +using LBPUnion.ProjectLighthouse.Tests.Helpers; +using LBPUnion.ProjectLighthouse.Types.Entities.Level; +using Microsoft.AspNetCore.Mvc; +using Xunit; + +namespace ProjectLighthouse.Tests.GameApiTests.Unit.Controllers; + +[Trait("Category", "Unit")] +public class ScoreControllerTests +{ + [Fact] + public async Task SubmitScore_ShouldSubmitValidScore_WhenNoExistingScore() + { + DatabaseContext database = await MockHelper.GetTestDatabase(); + + SlotEntity slot = new() + { + CreatorId = 1, + SlotId = 1, + }; + database.Slots.Add(slot); + await database.SaveChangesAsync(); + + ScoreController scoreController = new(database); + const string xmlBody = """ + + 1 + 10 + unittest + + """; + scoreController.SetupTestController(xmlBody); + IActionResult result = await scoreController.SubmitScore("user", 1, 0); + Assert.IsType(result); + Assert.NotNull(database.Scores.FirstOrDefault(s => s.Type == 1 && s.SlotId == 1 && s.UserId == 1)); + } + + [Fact] + public async Task SubmitScore_ShouldUpdateScore_WhenBetterThanExistingScore() + { + DatabaseContext database = await MockHelper.GetTestDatabase(); + + SlotEntity slot = new() + { + CreatorId = 1, + SlotId = 1, + }; + database.Slots.Add(slot); + + ScoreEntity score = new() + { + SlotId = 1, + Type = 1, + UserId = 1, + Points = 5, + Timestamp = 0, + }; + database.Scores.Add(score); + await database.SaveChangesAsync(); + + ScoreController scoreController = new(database); + const string xmlBody = """ + + 1 + 10 + unittest + + """; + scoreController.SetupTestController(xmlBody); + IActionResult result = await scoreController.SubmitScore("user", 1, 0); + Assert.IsType(result); + ScoreEntity? newScore = database.Scores.FirstOrDefault(s => s.Type == 1 && s.SlotId == 1 && s.UserId == 1); + Assert.NotNull(newScore); + Assert.NotEqual(0, newScore.Timestamp); + Assert.Equal(10, newScore.Points); + } + + [Fact] + public async Task SubmitScore_ShouldNotUpdateScore_WhenEqualToExistingScore() + { + DatabaseContext database = await MockHelper.GetTestDatabase(); + + SlotEntity slot = new() + { + CreatorId = 1, + SlotId = 1, + }; + database.Slots.Add(slot); + + ScoreEntity score = new() + { + SlotId = 1, + Type = 1, + UserId = 1, + Points = 10, + Timestamp = 0, + }; + database.Scores.Add(score); + await database.SaveChangesAsync(); + + ScoreController scoreController = new(database); + const string xmlBody = """ + + 1 + 10 + unittest + + """; + scoreController.SetupTestController(xmlBody); + IActionResult result = await scoreController.SubmitScore("user", 1, 0); + Assert.IsType(result); + ScoreEntity? newScore = database.Scores.FirstOrDefault(s => s.Type == 1 && s.SlotId == 1 && s.UserId == 1); + Assert.NotNull(newScore); + Assert.Equal(0, newScore.Timestamp); + Assert.Equal(10, newScore.Points); + } + + [Fact] + public async Task SubmitScore_ShouldNotUpdateScore_WhenLessThanExistingScore() + { + DatabaseContext database = await MockHelper.GetTestDatabase(); + + SlotEntity slot = new() + { + CreatorId = 1, + SlotId = 1, + }; + database.Slots.Add(slot); + + ScoreEntity score = new() + { + SlotId = 1, + Type = 1, + UserId = 1, + Points = 10, + Timestamp = 0, + }; + database.Scores.Add(score); + await database.SaveChangesAsync(); + + ScoreController scoreController = new(database); + const string xmlBody = """ + + 1 + 5 + unittest + + """; + scoreController.SetupTestController(xmlBody); + IActionResult result = await scoreController.SubmitScore("user", 1, 0); + Assert.IsType(result); + ScoreEntity? newScore = database.Scores.FirstOrDefault(s => s.Type == 1 && s.SlotId == 1 && s.UserId == 1); + Assert.NotNull(newScore); + Assert.Equal(0, newScore.Timestamp); + Assert.Equal(10, newScore.Points); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/SlotControllerTests.cs b/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/SlotControllerTests.cs index 7408fcf5..dbfb765a 100644 --- a/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/SlotControllerTests.cs +++ b/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/SlotControllerTests.cs @@ -1,556 +1,556 @@ -using System.Collections.Generic; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Helpers; -using LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers.Slots; -using LBPUnion.ProjectLighthouse.Tests.Helpers; -using LBPUnion.ProjectLighthouse.Types.Entities.Level; -using LBPUnion.ProjectLighthouse.Types.Entities.Profile; -using LBPUnion.ProjectLighthouse.Types.Entities.Token; -using LBPUnion.ProjectLighthouse.Types.Levels; -using LBPUnion.ProjectLighthouse.Types.Matchmaking.Rooms; -using LBPUnion.ProjectLighthouse.Types.Serialization; -using LBPUnion.ProjectLighthouse.Types.Users; -using Microsoft.AspNetCore.Mvc; -using Xunit; - -namespace ProjectLighthouse.Tests.GameApiTests.Unit.Controllers; - -[Trait("Category", "Unit")] -public class SlotControllerTests -{ - #region SlotsBy - [Fact] - public async Task SlotsBy_ShouldReturnNotFound_WhenUserInvalid() - { - DatabaseContext db = await MockHelper.GetTestDatabase(); - SlotsController slotsController = new(db); - slotsController.SetupTestController(); - - IActionResult result = await slotsController.SlotsBy("bytest"); - - Assert.IsType(result); - } - - [Fact] - public async Task SlotsBy_ShouldFetchLevelsByUser() - { - List slots = new() - { - new SlotEntity - { - SlotId = 1, - CreatorId = 2, - }, - new SlotEntity - { - SlotId = 2, - CreatorId = 2, - }, - new SlotEntity - { - SlotId = 3, - CreatorId = 3, - }, - }; - List users = new() - { - new UserEntity - { - Username = "bytest", - UserId = 2, - }, - new UserEntity - { - Username = "user3", - UserId = 3, - }, - }; - DatabaseContext db = await MockHelper.GetTestDatabase(slots, users); - SlotsController slotsController = new(db); - slotsController.SetupTestController(); - - IActionResult result = await slotsController.SlotsBy("bytest"); - - const int expectedElements = 2; - HashSet expectedSlotIds = new(){1, 2,}; - - GenericSlotResponse slotResponse = result.CastTo(); - Assert.Equal(expectedElements, slotResponse.Slots.Count); - Assert.Equal(expectedSlotIds, slotResponse.Slots.OfType().Select(s => s.SlotId).ToHashSet()); - } - - [Fact] - public async Task SlotsBy_ResultsAreOrderedByFirstUploadedTimestampAscending() - { - List slots = new() - { - new SlotEntity - { - SlotId = 1, - CreatorId = 2, - FirstUploaded = 3, - }, - new SlotEntity - { - SlotId = 2, - CreatorId = 2, - FirstUploaded = 1, - }, - new SlotEntity - { - SlotId = 3, - CreatorId = 2, - FirstUploaded = 2, - }, - }; - List users = new() - { - new UserEntity - { - Username = "bytest", - UserId = 2, - }, - }; - DatabaseContext db = await MockHelper.GetTestDatabase(slots, users); - SlotsController slotsController = new(db); - slotsController.SetupTestController(); - - IActionResult result = await slotsController.SlotsBy("bytest"); - - const int expectedElements = 3; - const int expectedFirstSlotId = 2; - const int expectedSecondSlotId = 3; - const int expectedThirdSlotId = 1; - - GenericSlotResponse slotResponse = result.CastTo(); - Assert.Equal(expectedElements, slotResponse.Slots.Count); - - Assert.Equal(expectedFirstSlotId, ((GameUserSlot)slotResponse.Slots[0]).SlotId); - Assert.Equal(expectedSecondSlotId, ((GameUserSlot)slotResponse.Slots[1]).SlotId); - Assert.Equal(expectedThirdSlotId, ((GameUserSlot)slotResponse.Slots[2]).SlotId); - } - #endregion - - #region UserSlot - [Fact] - public async Task UserSlot_ShouldFetch_WhenSlotIsValid() - { - List slots = new() - { - new SlotEntity - { - CreatorId = 1, - SlotId = 2, - }, - }; - DatabaseContext db = await MockHelper.GetTestDatabase(slots); - SlotsController slotsController = new(db); - slotsController.SetupTestController(); - - IActionResult result = await slotsController.UserSlot(2); - - Assert.IsType(result); - } - - [Fact] - public async Task UserSlot_ShouldNotFetch_WhenGameVersionMismatch() - { - List slots = new() - { - new SlotEntity - { - CreatorId = 1, - SlotId = 2, - GameVersion = GameVersion.LittleBigPlanet2, - }, - }; - DatabaseContext db = await MockHelper.GetTestDatabase(slots); - SlotsController slotsController = new(db); - slotsController.SetupTestController(); - - IActionResult result = await slotsController.UserSlot(2); - - Assert.IsType(result); - } - - [Fact] - public async Task UserSlot_ShouldFetch_WhenGameVersionEqual() - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = GameVersion.LittleBigPlanetVita; - List tokens = new() - { - token, - }; - List slots = new() - { - new SlotEntity - { - SlotId = 2, - CreatorId = 1, - GameVersion = GameVersion.LittleBigPlanetVita, - }, - }; - DatabaseContext db = await MockHelper.GetTestDatabase(slots, tokens); - SlotsController slotsController = new(db); - slotsController.SetupTestController(token); - - IActionResult result = await slotsController.UserSlot(2); - - Assert.IsType(result); - } - - [Fact] - public async Task UserSlot_ShouldFetch_WhenGameVersionIsGreater() - { - GameTokenEntity token = MockHelper.GetUnitTestToken(); - token.GameVersion = GameVersion.LittleBigPlanet3; - List tokens = new() - { - token, - }; - List slots = new() - { - new SlotEntity - { - SlotId = 2, - CreatorId = 1, - GameVersion = GameVersion.LittleBigPlanet1, - }, - }; - DatabaseContext db = await MockHelper.GetTestDatabase(slots, tokens); - SlotsController slotsController = new(db); - slotsController.SetupTestController(token); - - IActionResult result = await slotsController.UserSlot(2); - - Assert.IsType(result); - } - - [Fact] - public async Task UserSlot_ShouldReturnNotFound_WhenSlotDoesNotExist() - { - DatabaseContext db = await MockHelper.GetTestDatabase(); - SlotsController slotsController = new(db); - slotsController.SetupTestController(); - - IActionResult result = await slotsController.UserSlot(20); - - Assert.IsType(result); - } - - [Fact] - public async Task UserSlot_ShouldFetch_WhenSlotIsNotSubLevel() - { - List slots = new() - { - new SlotEntity - { - SlotId = 27, - CreatorId = 1, - SubLevel = false, - }, - }; - DatabaseContext db = await MockHelper.GetTestDatabase(slots); - SlotsController slotsController = new(db); - slotsController.SetupTestController(); - - IActionResult result = await slotsController.UserSlot(27); - - Assert.IsType(result); - } - - [Fact] - public async Task UserSlot_ShouldNotFetch_WhenSlotIsHidden() - { - List slots = new() - { - new SlotEntity - { - SlotId = 27, - CreatorId = 1, - Hidden = true, - }, - }; - DatabaseContext db = await MockHelper.GetTestDatabase(slots); - SlotsController slotsController = new(db); - slotsController.SetupTestController(); - - IActionResult result = await slotsController.UserSlot(27); - - Assert.IsType(result); - } - - [Fact] - public async Task UserSlot_ShouldNotFetch_WhenSlotIsWrongType() - { - List slots = new() - { - new SlotEntity - { - SlotId = 27, - CreatorId = 1, - Type = SlotType.Developer, - }, - }; - DatabaseContext db = await MockHelper.GetTestDatabase(slots); - SlotsController slotsController = new(db); - slotsController.SetupTestController(); - - IActionResult result = await slotsController.UserSlot(27); - - Assert.IsType(result); - } - - [Fact] - public async Task UserSlot_ShouldFetch_WhenSlotIsSubLevel() - { - List slots = new() - { - new SlotEntity - { - SlotId = 27, - CreatorId = 1, - SubLevel = true, - }, - }; - DatabaseContext db = await MockHelper.GetTestDatabase(slots); - SlotsController slotsController = new(db); - slotsController.SetupTestController(); - - IActionResult result = await slotsController.UserSlot(27); - - Assert.IsType(result); - } - #endregion - - #region DeveloperSlot - [Fact] - public async Task DeveloperSlot_ShouldFetch_WhenSlotIdIsValid() - { - List slots = new() - { - new SlotEntity - { - SlotId = 1, - CreatorId = 1, - InternalSlotId = 25, - Type = SlotType.Developer, - }, - }; - DatabaseContext db = await MockHelper.GetTestDatabase(slots); - SlotsController controller = new(db); - controller.SetupTestController(); - - IActionResult result = await controller.DeveloperSlot(25); - Assert.IsType(result); - } - - [Fact] - public async Task DeveloperSlot_ShouldFetch_WhenSlotIdIsInvalid() - { - DatabaseContext db = await MockHelper.GetTestDatabase(); - SlotsController controller = new(db); - controller.SetupTestController(); - - IActionResult result = await controller.DeveloperSlot(26); - Assert.IsType(result); - } - #endregion - - #region BusiestLevels - - // Rather than trying to mock a singleton - // we just make the unit tests take turns - private static readonly Mutex roomMutex = new(false); - - private static async Task AddRoom(int slotId, SlotType type, params int[] playerIds) - { - await RoomHelper.Rooms.AddAsync(new Room - { - PlayerIds = new List(playerIds), - Slot = new RoomSlot - { - SlotId = slotId, - SlotType = type, - }, - }); - } - - [Fact] - public async Task BusiestLevels_ShouldReturnSlots_OrderedByRoomCount() - { - roomMutex.WaitOne(); - try - { - DatabaseContext db = await MockHelper.GetTestDatabase(new List - { - new() - { - SlotId = 1, - CreatorId = 1, - Type = SlotType.User, - }, - new() - { - SlotId = 2, - CreatorId = 1, - Type = SlotType.User, - }, - new() - { - SlotId = 3, - CreatorId = 1, - Type = SlotType.User, - }, - new() - { - SlotId = 4, - CreatorId = 1, - Type = SlotType.Developer, - InternalSlotId = 10, - }, - }); - SlotsController controller = new(db); - controller.SetupTestController(); - - await AddRoom(1, SlotType.User, 1); - await AddRoom(2, SlotType.User, 2); - await AddRoom(2, SlotType.User, 3); - await AddRoom(3, SlotType.User, 4); - await AddRoom(3, SlotType.User, 5); - await AddRoom(3, SlotType.User, 6); - - await AddRoom(10, SlotType.Developer, 7); - - IActionResult result = await controller.BusiestLevels(); - GenericSlotResponse slotResponse = result.CastTo(); - Assert.Equal(3, slotResponse.Slots.Count); - Assert.IsType(slotResponse.Slots[0]); - Assert.Equal(3, ((GameUserSlot)slotResponse.Slots[0]).SlotId); - Assert.IsType(slotResponse.Slots[1]); - Assert.Equal(2, ((GameUserSlot)slotResponse.Slots[1]).SlotId); - Assert.IsType(slotResponse.Slots[2]); - Assert.Equal(1, ((GameUserSlot)slotResponse.Slots[2]).SlotId); - } - finally - { - roomMutex.ReleaseMutex(); - } - } - - [Fact] - public async Task BusiestLevels_ShouldNotIncludeDeveloperSlots() - { - roomMutex.WaitOne(); - try - { - DatabaseContext db = await MockHelper.GetTestDatabase(new List - { - new() - { - SlotId = 4, - CreatorId = 1, - Type = SlotType.Developer, - InternalSlotId = 10, - }, - }); - SlotsController controller = new(db); - controller.SetupTestController(); - - await AddRoom(10, SlotType.Developer, 1); - - IActionResult result = await controller.BusiestLevels(); - GenericSlotResponse slotResponse = result.CastTo(); - Assert.Empty(slotResponse.Slots); - } - finally - { - roomMutex.ReleaseMutex(); - } - } - - [Fact] - public async Task BusiestLevels_ShouldNotIncludeInvalidSlots() - { - roomMutex.WaitOne(); - try - { - DatabaseContext db = await MockHelper.GetTestDatabase(); - SlotsController controller = new(db); - controller.SetupTestController(); - - await AddRoom(1, SlotType.User, 1); - - IActionResult result = await controller.BusiestLevels(); - GenericSlotResponse slotResponse = result.CastTo(); - Assert.Empty(slotResponse.Slots); - } - finally - { - roomMutex.ReleaseMutex(); - } - } - #endregion - - #region Team Picks - [Fact] - public async Task TeamPick_ShouldOnlyIncludeTeamPickedLevels() - { - DatabaseContext db = await MockHelper.GetTestDatabase(new List - { - new() - { - SlotId = 1, - CreatorId = 1, - TeamPickTime = 1, - }, - new() - { - SlotId = 2, - CreatorId = 1, - TeamPickTime = 0, - }, - }); - SlotsController controller = new(db); - controller.SetupTestController(); - - IActionResult result = await controller.TeamPickedSlots(); - GenericSlotResponse slotResponse = result.CastTo(); - Assert.Single(slotResponse.Slots); - Assert.Equal(1, slotResponse.Slots.OfType().First().SlotId); - } - - [Fact] - public async Task TeamPick_LevelsAreSortedByTimestamp() - { - DatabaseContext db = await MockHelper.GetTestDatabase(new List - { - new() - { - SlotId = 1, - CreatorId = 1, - TeamPickTime = 1, - }, - new() - { - SlotId = 2, - CreatorId = 1, - TeamPickTime = 5, - }, - }); - SlotsController controller = new(db); - controller.SetupTestController(); - - IActionResult result = await controller.TeamPickedSlots(); - - GenericSlotResponse slotResponse = result.CastTo(); - Assert.Equal(2, slotResponse.Slots.Count); - Assert.Equal(2, slotResponse.Slots.OfType().First().SlotId); - Assert.Equal(1, slotResponse.Slots.OfType().Last().SlotId); - } - #endregion -} +using System.Collections.Generic; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Helpers; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers.Slots; +using LBPUnion.ProjectLighthouse.Tests.Helpers; +using LBPUnion.ProjectLighthouse.Types.Entities.Level; +using LBPUnion.ProjectLighthouse.Types.Entities.Profile; +using LBPUnion.ProjectLighthouse.Types.Entities.Token; +using LBPUnion.ProjectLighthouse.Types.Levels; +using LBPUnion.ProjectLighthouse.Types.Matchmaking.Rooms; +using LBPUnion.ProjectLighthouse.Types.Serialization; +using LBPUnion.ProjectLighthouse.Types.Users; +using Microsoft.AspNetCore.Mvc; +using Xunit; + +namespace ProjectLighthouse.Tests.GameApiTests.Unit.Controllers; + +[Trait("Category", "Unit")] +public class SlotControllerTests +{ + #region SlotsBy + [Fact] + public async Task SlotsBy_ShouldReturnNotFound_WhenUserInvalid() + { + DatabaseContext db = await MockHelper.GetTestDatabase(); + SlotsController slotsController = new(db); + slotsController.SetupTestController(); + + IActionResult result = await slotsController.SlotsBy("bytest"); + + Assert.IsType(result); + } + + [Fact] + public async Task SlotsBy_ShouldFetchLevelsByUser() + { + List slots = new() + { + new SlotEntity + { + SlotId = 1, + CreatorId = 2, + }, + new SlotEntity + { + SlotId = 2, + CreatorId = 2, + }, + new SlotEntity + { + SlotId = 3, + CreatorId = 3, + }, + }; + List users = new() + { + new UserEntity + { + Username = "bytest", + UserId = 2, + }, + new UserEntity + { + Username = "user3", + UserId = 3, + }, + }; + DatabaseContext db = await MockHelper.GetTestDatabase(slots, users); + SlotsController slotsController = new(db); + slotsController.SetupTestController(); + + IActionResult result = await slotsController.SlotsBy("bytest"); + + const int expectedElements = 2; + HashSet expectedSlotIds = new(){1, 2,}; + + GenericSlotResponse slotResponse = result.CastTo(); + Assert.Equal(expectedElements, slotResponse.Slots.Count); + Assert.Equal(expectedSlotIds, slotResponse.Slots.OfType().Select(s => s.SlotId).ToHashSet()); + } + + [Fact] + public async Task SlotsBy_ResultsAreOrderedByFirstUploadedTimestampAscending() + { + List slots = new() + { + new SlotEntity + { + SlotId = 1, + CreatorId = 2, + FirstUploaded = 3, + }, + new SlotEntity + { + SlotId = 2, + CreatorId = 2, + FirstUploaded = 1, + }, + new SlotEntity + { + SlotId = 3, + CreatorId = 2, + FirstUploaded = 2, + }, + }; + List users = new() + { + new UserEntity + { + Username = "bytest", + UserId = 2, + }, + }; + DatabaseContext db = await MockHelper.GetTestDatabase(slots, users); + SlotsController slotsController = new(db); + slotsController.SetupTestController(); + + IActionResult result = await slotsController.SlotsBy("bytest"); + + const int expectedElements = 3; + const int expectedFirstSlotId = 2; + const int expectedSecondSlotId = 3; + const int expectedThirdSlotId = 1; + + GenericSlotResponse slotResponse = result.CastTo(); + Assert.Equal(expectedElements, slotResponse.Slots.Count); + + Assert.Equal(expectedFirstSlotId, ((GameUserSlot)slotResponse.Slots[0]).SlotId); + Assert.Equal(expectedSecondSlotId, ((GameUserSlot)slotResponse.Slots[1]).SlotId); + Assert.Equal(expectedThirdSlotId, ((GameUserSlot)slotResponse.Slots[2]).SlotId); + } + #endregion + + #region UserSlot + [Fact] + public async Task UserSlot_ShouldFetch_WhenSlotIsValid() + { + List slots = new() + { + new SlotEntity + { + CreatorId = 1, + SlotId = 2, + }, + }; + DatabaseContext db = await MockHelper.GetTestDatabase(slots); + SlotsController slotsController = new(db); + slotsController.SetupTestController(); + + IActionResult result = await slotsController.UserSlot(2); + + Assert.IsType(result); + } + + [Fact] + public async Task UserSlot_ShouldNotFetch_WhenGameVersionMismatch() + { + List slots = new() + { + new SlotEntity + { + CreatorId = 1, + SlotId = 2, + GameVersion = GameVersion.LittleBigPlanet2, + }, + }; + DatabaseContext db = await MockHelper.GetTestDatabase(slots); + SlotsController slotsController = new(db); + slotsController.SetupTestController(); + + IActionResult result = await slotsController.UserSlot(2); + + Assert.IsType(result); + } + + [Fact] + public async Task UserSlot_ShouldFetch_WhenGameVersionEqual() + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = GameVersion.LittleBigPlanetVita; + List tokens = new() + { + token, + }; + List slots = new() + { + new SlotEntity + { + SlotId = 2, + CreatorId = 1, + GameVersion = GameVersion.LittleBigPlanetVita, + }, + }; + DatabaseContext db = await MockHelper.GetTestDatabase(slots, tokens); + SlotsController slotsController = new(db); + slotsController.SetupTestController(token); + + IActionResult result = await slotsController.UserSlot(2); + + Assert.IsType(result); + } + + [Fact] + public async Task UserSlot_ShouldFetch_WhenGameVersionIsGreater() + { + GameTokenEntity token = MockHelper.GetUnitTestToken(); + token.GameVersion = GameVersion.LittleBigPlanet3; + List tokens = new() + { + token, + }; + List slots = new() + { + new SlotEntity + { + SlotId = 2, + CreatorId = 1, + GameVersion = GameVersion.LittleBigPlanet1, + }, + }; + DatabaseContext db = await MockHelper.GetTestDatabase(slots, tokens); + SlotsController slotsController = new(db); + slotsController.SetupTestController(token); + + IActionResult result = await slotsController.UserSlot(2); + + Assert.IsType(result); + } + + [Fact] + public async Task UserSlot_ShouldReturnNotFound_WhenSlotDoesNotExist() + { + DatabaseContext db = await MockHelper.GetTestDatabase(); + SlotsController slotsController = new(db); + slotsController.SetupTestController(); + + IActionResult result = await slotsController.UserSlot(20); + + Assert.IsType(result); + } + + [Fact] + public async Task UserSlot_ShouldFetch_WhenSlotIsNotSubLevel() + { + List slots = new() + { + new SlotEntity + { + SlotId = 27, + CreatorId = 1, + SubLevel = false, + }, + }; + DatabaseContext db = await MockHelper.GetTestDatabase(slots); + SlotsController slotsController = new(db); + slotsController.SetupTestController(); + + IActionResult result = await slotsController.UserSlot(27); + + Assert.IsType(result); + } + + [Fact] + public async Task UserSlot_ShouldNotFetch_WhenSlotIsHidden() + { + List slots = new() + { + new SlotEntity + { + SlotId = 27, + CreatorId = 1, + Hidden = true, + }, + }; + DatabaseContext db = await MockHelper.GetTestDatabase(slots); + SlotsController slotsController = new(db); + slotsController.SetupTestController(); + + IActionResult result = await slotsController.UserSlot(27); + + Assert.IsType(result); + } + + [Fact] + public async Task UserSlot_ShouldNotFetch_WhenSlotIsWrongType() + { + List slots = new() + { + new SlotEntity + { + SlotId = 27, + CreatorId = 1, + Type = SlotType.Developer, + }, + }; + DatabaseContext db = await MockHelper.GetTestDatabase(slots); + SlotsController slotsController = new(db); + slotsController.SetupTestController(); + + IActionResult result = await slotsController.UserSlot(27); + + Assert.IsType(result); + } + + [Fact] + public async Task UserSlot_ShouldFetch_WhenSlotIsSubLevel() + { + List slots = new() + { + new SlotEntity + { + SlotId = 27, + CreatorId = 1, + SubLevel = true, + }, + }; + DatabaseContext db = await MockHelper.GetTestDatabase(slots); + SlotsController slotsController = new(db); + slotsController.SetupTestController(); + + IActionResult result = await slotsController.UserSlot(27); + + Assert.IsType(result); + } + #endregion + + #region DeveloperSlot + [Fact] + public async Task DeveloperSlot_ShouldFetch_WhenSlotIdIsValid() + { + List slots = new() + { + new SlotEntity + { + SlotId = 1, + CreatorId = 1, + InternalSlotId = 25, + Type = SlotType.Developer, + }, + }; + DatabaseContext db = await MockHelper.GetTestDatabase(slots); + SlotsController controller = new(db); + controller.SetupTestController(); + + IActionResult result = await controller.DeveloperSlot(25); + Assert.IsType(result); + } + + [Fact] + public async Task DeveloperSlot_ShouldFetch_WhenSlotIdIsInvalid() + { + DatabaseContext db = await MockHelper.GetTestDatabase(); + SlotsController controller = new(db); + controller.SetupTestController(); + + IActionResult result = await controller.DeveloperSlot(26); + Assert.IsType(result); + } + #endregion + + #region BusiestLevels + + // Rather than trying to mock a singleton + // we just make the unit tests take turns + private static readonly Mutex roomMutex = new(false); + + private static async Task AddRoom(int slotId, SlotType type, params int[] playerIds) + { + await RoomHelper.Rooms.AddAsync(new Room + { + PlayerIds = new List(playerIds), + Slot = new RoomSlot + { + SlotId = slotId, + SlotType = type, + }, + }); + } + + [Fact] + public async Task BusiestLevels_ShouldReturnSlots_OrderedByRoomCount() + { + roomMutex.WaitOne(); + try + { + DatabaseContext db = await MockHelper.GetTestDatabase(new List + { + new() + { + SlotId = 1, + CreatorId = 1, + Type = SlotType.User, + }, + new() + { + SlotId = 2, + CreatorId = 1, + Type = SlotType.User, + }, + new() + { + SlotId = 3, + CreatorId = 1, + Type = SlotType.User, + }, + new() + { + SlotId = 4, + CreatorId = 1, + Type = SlotType.Developer, + InternalSlotId = 10, + }, + }); + SlotsController controller = new(db); + controller.SetupTestController(); + + await AddRoom(1, SlotType.User, 1); + await AddRoom(2, SlotType.User, 2); + await AddRoom(2, SlotType.User, 3); + await AddRoom(3, SlotType.User, 4); + await AddRoom(3, SlotType.User, 5); + await AddRoom(3, SlotType.User, 6); + + await AddRoom(10, SlotType.Developer, 7); + + IActionResult result = await controller.BusiestLevels(); + GenericSlotResponse slotResponse = result.CastTo(); + Assert.Equal(3, slotResponse.Slots.Count); + Assert.IsType(slotResponse.Slots[0]); + Assert.Equal(3, ((GameUserSlot)slotResponse.Slots[0]).SlotId); + Assert.IsType(slotResponse.Slots[1]); + Assert.Equal(2, ((GameUserSlot)slotResponse.Slots[1]).SlotId); + Assert.IsType(slotResponse.Slots[2]); + Assert.Equal(1, ((GameUserSlot)slotResponse.Slots[2]).SlotId); + } + finally + { + roomMutex.ReleaseMutex(); + } + } + + [Fact] + public async Task BusiestLevels_ShouldNotIncludeDeveloperSlots() + { + roomMutex.WaitOne(); + try + { + DatabaseContext db = await MockHelper.GetTestDatabase(new List + { + new() + { + SlotId = 4, + CreatorId = 1, + Type = SlotType.Developer, + InternalSlotId = 10, + }, + }); + SlotsController controller = new(db); + controller.SetupTestController(); + + await AddRoom(10, SlotType.Developer, 1); + + IActionResult result = await controller.BusiestLevels(); + GenericSlotResponse slotResponse = result.CastTo(); + Assert.Empty(slotResponse.Slots); + } + finally + { + roomMutex.ReleaseMutex(); + } + } + + [Fact] + public async Task BusiestLevels_ShouldNotIncludeInvalidSlots() + { + roomMutex.WaitOne(); + try + { + DatabaseContext db = await MockHelper.GetTestDatabase(); + SlotsController controller = new(db); + controller.SetupTestController(); + + await AddRoom(1, SlotType.User, 1); + + IActionResult result = await controller.BusiestLevels(); + GenericSlotResponse slotResponse = result.CastTo(); + Assert.Empty(slotResponse.Slots); + } + finally + { + roomMutex.ReleaseMutex(); + } + } + #endregion + + #region Team Picks + [Fact] + public async Task TeamPick_ShouldOnlyIncludeTeamPickedLevels() + { + DatabaseContext db = await MockHelper.GetTestDatabase(new List + { + new() + { + SlotId = 1, + CreatorId = 1, + TeamPickTime = 1, + }, + new() + { + SlotId = 2, + CreatorId = 1, + TeamPickTime = 0, + }, + }); + SlotsController controller = new(db); + controller.SetupTestController(); + + IActionResult result = await controller.TeamPickedSlots(); + GenericSlotResponse slotResponse = result.CastTo(); + Assert.Single(slotResponse.Slots); + Assert.Equal(1, slotResponse.Slots.OfType().First().SlotId); + } + + [Fact] + public async Task TeamPick_LevelsAreSortedByTimestamp() + { + DatabaseContext db = await MockHelper.GetTestDatabase(new List + { + new() + { + SlotId = 1, + CreatorId = 1, + TeamPickTime = 1, + }, + new() + { + SlotId = 2, + CreatorId = 1, + TeamPickTime = 5, + }, + }); + SlotsController controller = new(db); + controller.SetupTestController(); + + IActionResult result = await controller.TeamPickedSlots(); + + GenericSlotResponse slotResponse = result.CastTo(); + Assert.Equal(2, slotResponse.Slots.Count); + Assert.Equal(2, slotResponse.Slots.OfType().First().SlotId); + Assert.Equal(1, slotResponse.Slots.OfType().Last().SlotId); + } + #endregion +} diff --git a/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/StatisticsControllerTests.cs b/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/StatisticsControllerTests.cs index 5335b2cf..532264c2 100644 --- a/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/StatisticsControllerTests.cs +++ b/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/StatisticsControllerTests.cs @@ -1,187 +1,187 @@ -using System.Collections.Generic; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers; -using LBPUnion.ProjectLighthouse.Tests.Helpers; -using LBPUnion.ProjectLighthouse.Types.Entities.Level; -using LBPUnion.ProjectLighthouse.Types.Serialization; -using LBPUnion.ProjectLighthouse.Types.Users; -using Microsoft.AspNetCore.Mvc; -using Xunit; - -namespace ProjectLighthouse.Tests.GameApiTests.Unit.Controllers; - -[Trait("Category", "Unit")] -public class StatisticsControllerTests -{ - [Fact] - public async Task PlanetStats_ShouldReturnCorrectCounts_WhenEmpty() - { - await using DatabaseContext db = await MockHelper.GetTestDatabase(); - - StatisticsController statsController = new(db); - statsController.SetupTestController(); - - const int expectedSlots = 0; - const int expectedTeamPicks = 0; - - IActionResult result = await statsController.PlanetStats(); - - PlanetStatsResponse statsResponse = result.CastTo(); - Assert.Equal(expectedSlots, statsResponse.TotalSlotCount); - Assert.Equal(expectedTeamPicks, statsResponse.TeamPickCount); - } - - [Fact] - public async Task PlanetStats_ShouldReturnCorrectCounts_WhenNotEmpty() - { - List slots = new() - { - new SlotEntity - { - SlotId = 1, - CreatorId = 1, - }, - new SlotEntity - { - SlotId = 2, - CreatorId = 1, - }, - new SlotEntity - { - SlotId = 3, - CreatorId = 1, - TeamPickTime = 1, - }, - }; - await using DatabaseContext db = await MockHelper.GetTestDatabase(slots); - - StatisticsController statsController = new(db); - statsController.SetupTestController(); - - const int expectedSlots = 3; - const int expectedTeamPicks = 1; - - IActionResult result = await statsController.PlanetStats(); - - PlanetStatsResponse statsResponse = result.CastTo(); - Assert.Equal(expectedSlots, statsResponse.TotalSlotCount); - Assert.Equal(expectedTeamPicks, statsResponse.TeamPickCount); - } - - [Fact] - public async Task PlanetStats_ShouldReturnCorrectCounts_WhenSlotsAreIncompatibleGameVersion() - { - List slots = new() - { - new SlotEntity - { - SlotId = 1, - CreatorId = 1, - GameVersion = GameVersion.LittleBigPlanet2, - }, - new SlotEntity - { - SlotId = 2, - CreatorId = 1, - GameVersion = GameVersion.LittleBigPlanet2, - }, - new SlotEntity - { - SlotId = 3, - CreatorId = 1, - TeamPickTime = 1, - GameVersion = GameVersion.LittleBigPlanet2, - }, - }; - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(slots); - - StatisticsController statsController = new(dbMock); - statsController.SetupTestController(); - - const int expectedSlots = 0; - const int expectedTeamPicks = 0; - - IActionResult result = await statsController.PlanetStats(); - - PlanetStatsResponse statsResponse = result.CastTo(); - Assert.Equal(expectedSlots, statsResponse.TotalSlotCount); - Assert.Equal(expectedTeamPicks, statsResponse.TeamPickCount); - } - - [Fact] - public async Task TotalLevelCount_ShouldReturnCorrectCount_WhenSlotsAreCompatible() - { - List slots = new() - { - new SlotEntity - { - SlotId = 1, - CreatorId = 1, - GameVersion = GameVersion.LittleBigPlanet1, - }, - new SlotEntity - { - SlotId = 2, - CreatorId = 1, - GameVersion = GameVersion.LittleBigPlanet1, - }, - new SlotEntity - { - SlotId = 3, - CreatorId = 1, - TeamPickTime = 1, - GameVersion = GameVersion.LittleBigPlanet1, - }, - }; - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(slots); - - StatisticsController statsController = new(dbMock); - statsController.SetupTestController(); - - const string expectedTotal = "3"; - - IActionResult result = await statsController.TotalLevelCount(); - - string totalSlotsResponse = result.CastTo(); - Assert.Equal(expectedTotal, totalSlotsResponse); - } - - [Fact] - public async Task TotalLevelCount_ShouldReturnCorrectCount_WhenSlotsAreNotCompatible() - { - List slots = new() - { - new SlotEntity - { - SlotId = 1, - CreatorId = 1, - GameVersion = GameVersion.LittleBigPlanet2, - }, - new SlotEntity - { - SlotId = 2, - CreatorId = 1, - GameVersion = GameVersion.LittleBigPlanet2, - }, - new SlotEntity - { - SlotId = 3, - CreatorId = 1, - TeamPickTime = 1, - GameVersion = GameVersion.LittleBigPlanet2, - }, - }; - await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(slots); - - StatisticsController statsController = new(dbMock); - statsController.SetupTestController(); - - const string expectedTotal = "0"; - - IActionResult result = await statsController.TotalLevelCount(); - - string totalSlots = result.CastTo(); - Assert.Equal(expectedTotal, totalSlots); - } +using System.Collections.Generic; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers; +using LBPUnion.ProjectLighthouse.Tests.Helpers; +using LBPUnion.ProjectLighthouse.Types.Entities.Level; +using LBPUnion.ProjectLighthouse.Types.Serialization; +using LBPUnion.ProjectLighthouse.Types.Users; +using Microsoft.AspNetCore.Mvc; +using Xunit; + +namespace ProjectLighthouse.Tests.GameApiTests.Unit.Controllers; + +[Trait("Category", "Unit")] +public class StatisticsControllerTests +{ + [Fact] + public async Task PlanetStats_ShouldReturnCorrectCounts_WhenEmpty() + { + await using DatabaseContext db = await MockHelper.GetTestDatabase(); + + StatisticsController statsController = new(db); + statsController.SetupTestController(); + + const int expectedSlots = 0; + const int expectedTeamPicks = 0; + + IActionResult result = await statsController.PlanetStats(); + + PlanetStatsResponse statsResponse = result.CastTo(); + Assert.Equal(expectedSlots, statsResponse.TotalSlotCount); + Assert.Equal(expectedTeamPicks, statsResponse.TeamPickCount); + } + + [Fact] + public async Task PlanetStats_ShouldReturnCorrectCounts_WhenNotEmpty() + { + List slots = new() + { + new SlotEntity + { + SlotId = 1, + CreatorId = 1, + }, + new SlotEntity + { + SlotId = 2, + CreatorId = 1, + }, + new SlotEntity + { + SlotId = 3, + CreatorId = 1, + TeamPickTime = 1, + }, + }; + await using DatabaseContext db = await MockHelper.GetTestDatabase(slots); + + StatisticsController statsController = new(db); + statsController.SetupTestController(); + + const int expectedSlots = 3; + const int expectedTeamPicks = 1; + + IActionResult result = await statsController.PlanetStats(); + + PlanetStatsResponse statsResponse = result.CastTo(); + Assert.Equal(expectedSlots, statsResponse.TotalSlotCount); + Assert.Equal(expectedTeamPicks, statsResponse.TeamPickCount); + } + + [Fact] + public async Task PlanetStats_ShouldReturnCorrectCounts_WhenSlotsAreIncompatibleGameVersion() + { + List slots = new() + { + new SlotEntity + { + SlotId = 1, + CreatorId = 1, + GameVersion = GameVersion.LittleBigPlanet2, + }, + new SlotEntity + { + SlotId = 2, + CreatorId = 1, + GameVersion = GameVersion.LittleBigPlanet2, + }, + new SlotEntity + { + SlotId = 3, + CreatorId = 1, + TeamPickTime = 1, + GameVersion = GameVersion.LittleBigPlanet2, + }, + }; + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(slots); + + StatisticsController statsController = new(dbMock); + statsController.SetupTestController(); + + const int expectedSlots = 0; + const int expectedTeamPicks = 0; + + IActionResult result = await statsController.PlanetStats(); + + PlanetStatsResponse statsResponse = result.CastTo(); + Assert.Equal(expectedSlots, statsResponse.TotalSlotCount); + Assert.Equal(expectedTeamPicks, statsResponse.TeamPickCount); + } + + [Fact] + public async Task TotalLevelCount_ShouldReturnCorrectCount_WhenSlotsAreCompatible() + { + List slots = new() + { + new SlotEntity + { + SlotId = 1, + CreatorId = 1, + GameVersion = GameVersion.LittleBigPlanet1, + }, + new SlotEntity + { + SlotId = 2, + CreatorId = 1, + GameVersion = GameVersion.LittleBigPlanet1, + }, + new SlotEntity + { + SlotId = 3, + CreatorId = 1, + TeamPickTime = 1, + GameVersion = GameVersion.LittleBigPlanet1, + }, + }; + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(slots); + + StatisticsController statsController = new(dbMock); + statsController.SetupTestController(); + + const string expectedTotal = "3"; + + IActionResult result = await statsController.TotalLevelCount(); + + string totalSlotsResponse = result.CastTo(); + Assert.Equal(expectedTotal, totalSlotsResponse); + } + + [Fact] + public async Task TotalLevelCount_ShouldReturnCorrectCount_WhenSlotsAreNotCompatible() + { + List slots = new() + { + new SlotEntity + { + SlotId = 1, + CreatorId = 1, + GameVersion = GameVersion.LittleBigPlanet2, + }, + new SlotEntity + { + SlotId = 2, + CreatorId = 1, + GameVersion = GameVersion.LittleBigPlanet2, + }, + new SlotEntity + { + SlotId = 3, + CreatorId = 1, + TeamPickTime = 1, + GameVersion = GameVersion.LittleBigPlanet2, + }, + }; + await using DatabaseContext dbMock = await MockHelper.GetTestDatabase(slots); + + StatisticsController statsController = new(dbMock); + statsController.SetupTestController(); + + const string expectedTotal = "0"; + + IActionResult result = await statsController.TotalLevelCount(); + + string totalSlots = result.CastTo(); + Assert.Equal(expectedTotal, totalSlots); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/StatusControllerTests.cs b/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/StatusControllerTests.cs index c2d5c944..bf6f626f 100644 --- a/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/StatusControllerTests.cs +++ b/ProjectLighthouse.Tests.GameApiTests/Unit/Controllers/StatusControllerTests.cs @@ -1,23 +1,23 @@ -using LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers; -using LBPUnion.ProjectLighthouse.Tests.Helpers; -using Microsoft.AspNetCore.Mvc; -using Xunit; - -namespace ProjectLighthouse.Tests.GameApiTests.Unit.Controllers; - -[Trait("Category", "Unit")] -public class StatusControllerTests -{ - [Fact] - public void Status_ShouldReturnOk() - { - StatusController statusController = new() - { - ControllerContext = MockHelper.GetMockControllerContext(), - }; - - IActionResult result = statusController.GetStatus(); - - Assert.IsType(result); - } +using LBPUnion.ProjectLighthouse.Servers.GameServer.Controllers; +using LBPUnion.ProjectLighthouse.Tests.Helpers; +using Microsoft.AspNetCore.Mvc; +using Xunit; + +namespace ProjectLighthouse.Tests.GameApiTests.Unit.Controllers; + +[Trait("Category", "Unit")] +public class StatusControllerTests +{ + [Fact] + public void Status_ShouldReturnOk() + { + StatusController statusController = new() + { + ControllerContext = MockHelper.GetMockControllerContext(), + }; + + IActionResult result = statusController.GetStatus(); + + Assert.IsType(result); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests.GameApiTests/bin/Debug/net8.0/CoverletSourceRootsMapping_ProjectLighthouse.Tests.GameApiTests b/ProjectLighthouse.Tests.GameApiTests/bin/Debug/net8.0/CoverletSourceRootsMapping_ProjectLighthouse.Tests.GameApiTests new file mode 100644 index 0000000000000000000000000000000000000000..a17fa206d3687a49d6f2d5070fdd9331338b9aa4 GIT binary patch literal 3842 zcmezW&z-@FA%?++!HFS&L4m=TL4m=a!H>a*!IQy{!IeRQ!I2?|!I{B>!IL43!4 +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("ProjectLighthouse.Tests.GameApiTests")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+509240db396eac0c69bd7ed8e09b71f630a8de72")] +[assembly: System.Reflection.AssemblyProductAttribute("ProjectLighthouse.Tests.GameApiTests")] +[assembly: System.Reflection.AssemblyTitleAttribute("ProjectLighthouse.Tests.GameApiTests")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/ProjectLighthouse.Tests.GameApiTests/obj/Debug/net8.0/ProjectLighthouse.Tests.GameApiTests.AssemblyInfoInputs.cache b/ProjectLighthouse.Tests.GameApiTests/obj/Debug/net8.0/ProjectLighthouse.Tests.GameApiTests.AssemblyInfoInputs.cache new file mode 100644 index 00000000..58d9495e --- /dev/null +++ b/ProjectLighthouse.Tests.GameApiTests/obj/Debug/net8.0/ProjectLighthouse.Tests.GameApiTests.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +c3ee125177a364af52566ca8c97497fe46e4fe23e03e9c737cf2fd1caaaee833 diff --git a/ProjectLighthouse.Tests.GameApiTests/obj/Debug/net8.0/ProjectLighthouse.Tests.GameApiTests.GeneratedMSBuildEditorConfig.editorconfig b/ProjectLighthouse.Tests.GameApiTests/obj/Debug/net8.0/ProjectLighthouse.Tests.GameApiTests.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..8d48a581 --- /dev/null +++ b/ProjectLighthouse.Tests.GameApiTests/obj/Debug/net8.0/ProjectLighthouse.Tests.GameApiTests.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,15 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = ProjectLighthouse.Tests.GameApiTests +build_property.ProjectDir = G:\LBP 3 ONLINE ARCHIVE\LBP 3 ONLINE SITE RECREACTION\ProjectLighthouse\ProjectLighthouse.Tests.GameApiTests\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.EffectiveAnalysisLevelStyle = 8.0 +build_property.EnableCodeStyleSeverity = diff --git a/ProjectLighthouse.Tests.GameApiTests/obj/Debug/net8.0/ProjectLighthouse.Tests.GameApiTests.assets.cache b/ProjectLighthouse.Tests.GameApiTests/obj/Debug/net8.0/ProjectLighthouse.Tests.GameApiTests.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..0b8af314956b484d6a374996f9afb9cee27729fb GIT binary patch literal 107408 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 z z&SoSRAn$CZ+m2==`;m7v(_tqwlFi6FnQ69z8Oc869n1vFHOTH<(snK**@e7wnNB;F zk!(lau}p)V%1AaL?^Gsq<`147%19<6?@*@k&SWH8k#{B&s#PH?uoA%w`cSv#V(dsp zvH^KVay)@WR}dSZ!+)giL`Jd`c_%WV`EP7?!dDuidXtD9$ViSr-hoW5oySPVBkw#0 zwfTuZ01kC`ZGLVpp54Z{ZxSs^g>?16_wa%GNuU*T$Xky=8~9%`FfhDgU|@L7z`*c^ zfq~&I0|Uc51_p-r3=9k(7#J8nGB7ZFVqjqS%)r3#g@J+LD+2=qZ9I~aigel}XuT|W z%NuCtG*KS;M!+NAp&t1G^~g_}c_bC*-L6D=Jd(w zc_cfZB9Cwp@CY~5BRo)#@Y2j91vwOXgpYtn_@N#VfOSsw(##_zl$F3z1Uw=Q^@t4ABeIMnod!!v z@~XKzrRcT^ckx~K^?cJLn;gS!z4 zJ(>k;%LV!D7*JbMjev*Lp&mkROOi14ONxhZHzrB(kOlz{X+k}O+@_?Fhj2G4N%4>t z0S{?IJ%rr0q>+bkH!ex>kPZP4=|Vk(+{UDlhj2GCN%4>#0T1azJ%rrWq>+bkH#SM} zkO2V?8A3gT+~%Z_hj2GKN%4>o0S_5NJ%rr$q>+bkH$F-6kO=_~nL<5;+y-qUeyWv} zVjFKGloUUi5%7~a)KAE5Q5r=O?#3u79*bcK2o zxvfikZxU?wlIl%20^W3odK0+?OnYw7@EKjDTOmp?*bfvD3@1gc|Rp`Za=pUn8M@MQ+DWBC|Xq{>W|I?RY}|Lq2~S z)PRp7;J;|7|BxH-wD%wG20W?$iy`2@Sg8MyTkf>?AMTbrss4*2;JFUAMUm~ss2kM;J;+3|BxH$wD%wGMmnkfOCjLDRH*-uTj#X* zAMVyUss2kN;Jjfc?A5I5A`2%)0>22I8d72#5d6hG`&gn zWB~zB7D7FV+~%g2Cvmp9N%dqA0Z$e~J&D}d?jpXh0o`{CIsqDVoid^8(@|R3p!1~R zXHbLA7DQZoj510N+Q|%BF^ql(cnKDNfmRBaLj8l>xF(_SB-=m4T}Vun*UE5stsINj zXcSc_odrsxsse|9Dxv;C?kCVFs!;qx#i**n;k9ZkUZYV|q4awwjj9?P{;7rf2f52b zqo_jh4;7=T4u{w3v3QL}QH9clqco}-aQLSY>L29Z8;zn0#XnSxswNy>YsTU=8buXK zZ3R;YiFJEAm-Dir@vF{;{dc�a*Ju<~C>?7`qpAake>$Q5LGDx2D5_BW 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 D;Lg_~ literal 0 HcmV?d00001 diff --git a/ProjectLighthouse.Tests.GameApiTests/obj/Debug/net8.0/ProjectLighthouse.Tests.GameApiTests.csproj.AssemblyReference.cache b/ProjectLighthouse.Tests.GameApiTests/obj/Debug/net8.0/ProjectLighthouse.Tests.GameApiTests.csproj.AssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..4e1b4ed86dcd0474fbf21a0f7dd7e2e0f67662ce GIT binary patch literal 26296 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 literal 0 HcmV?d00001 diff --git a/ProjectLighthouse.Tests.GameApiTests/obj/ProjectLighthouse.Tests.GameApiTests.csproj.nuget.dgspec.json b/ProjectLighthouse.Tests.GameApiTests/obj/ProjectLighthouse.Tests.GameApiTests.csproj.nuget.dgspec.json new file mode 100644 index 00000000..fda05e89 --- /dev/null +++ b/ProjectLighthouse.Tests.GameApiTests/obj/ProjectLighthouse.Tests.GameApiTests.csproj.nuget.dgspec.json @@ -0,0 +1,555 @@ +{ + "format": 1, + "restore": { + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests.GameApiTests\\ProjectLighthouse.Tests.GameApiTests.csproj": {} + }, + "projects": { + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Localization\\ProjectLighthouse.Localization.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Localization\\ProjectLighthouse.Localization.csproj", + "projectName": "ProjectLighthouse.Localization", + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Localization\\ProjectLighthouse.Localization.csproj", + "packagesPath": "C:\\Users\\Faisa\\.nuget\\packages\\", + "outputPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Localization\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Faisa\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.300" + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.NETCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.WindowsDesktop.App.Ref", + "version": "[8.0.19, 8.0.19]" + } + ], + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" + } + } + }, + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Servers.GameServer\\ProjectLighthouse.Servers.GameServer.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Servers.GameServer\\ProjectLighthouse.Servers.GameServer.csproj", + "projectName": "LBPUnion.ProjectLighthouse.Servers.GameServer", + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Servers.GameServer\\ProjectLighthouse.Servers.GameServer.csproj", + "packagesPath": "C:\\Users\\Faisa\\.nuget\\packages\\", + "outputPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Servers.GameServer\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Faisa\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\ProjectLighthouse.csproj": { + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\ProjectLighthouse.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.300" + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.NETCore.App.Host.win-x64", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.NETCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.WindowsDesktop.App.Ref", + "version": "[8.0.19, 8.0.19]" + } + ], + "frameworkReferences": { + "Microsoft.AspNetCore.App": { + "privateAssets": "none" + }, + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" + } + } + }, + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests.GameApiTests\\ProjectLighthouse.Tests.GameApiTests.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests.GameApiTests\\ProjectLighthouse.Tests.GameApiTests.csproj", + "projectName": "ProjectLighthouse.Tests.GameApiTests", + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests.GameApiTests\\ProjectLighthouse.Tests.GameApiTests.csproj", + "packagesPath": "C:\\Users\\Faisa\\.nuget\\packages\\", + "outputPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests.GameApiTests\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Faisa\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Servers.GameServer\\ProjectLighthouse.Servers.GameServer.csproj": { + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Servers.GameServer\\ProjectLighthouse.Servers.GameServer.csproj" + }, + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests\\ProjectLighthouse.Tests.csproj": { + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests\\ProjectLighthouse.Tests.csproj" + }, + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\ProjectLighthouse.csproj": { + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\ProjectLighthouse.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.300" + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "JetBrains.Annotations": { + "target": "Package", + "version": "[2024.3.0, )" + }, + "Microsoft.AspNetCore.Mvc.Testing": { + "target": "Package", + "version": "[8.0.18, )" + }, + "Microsoft.EntityFrameworkCore.Design": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[8.0.18, )" + }, + "Microsoft.NET.Test.Sdk": { + "target": "Package", + "version": "[17.14.1, )" + }, + "coverlet.collector": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[6.0.4, )" + }, + "xunit": { + "target": "Package", + "version": "[2.9.3, )" + }, + "xunit.runner.visualstudio": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[3.1.1, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.NETCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.WindowsDesktop.App.Ref", + "version": "[8.0.19, 8.0.19]" + } + ], + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" + } + } + }, + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests\\ProjectLighthouse.Tests.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests\\ProjectLighthouse.Tests.csproj", + "projectName": "LBPUnion.ProjectLighthouse.Tests", + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests\\ProjectLighthouse.Tests.csproj", + "packagesPath": "C:\\Users\\Faisa\\.nuget\\packages\\", + "outputPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Faisa\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\ProjectLighthouse.csproj": { + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\ProjectLighthouse.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.300" + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "JetBrains.Annotations": { + "target": "Package", + "version": "[2024.3.0, )" + }, + "Microsoft.AspNetCore.Mvc.Testing": { + "target": "Package", + "version": "[8.0.18, )" + }, + "Microsoft.EntityFrameworkCore.Design": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[8.0.18, )" + }, + "Microsoft.EntityFrameworkCore.Sqlite": { + "target": "Package", + "version": "[8.0.6, )" + }, + "Microsoft.NET.Test.Sdk": { + "target": "Package", + "version": "[17.14.1, )" + }, + "Moq": { + "target": "Package", + "version": "[4.20.72, )" + }, + "coverlet.collector": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[6.0.4, )" + }, + "xunit": { + "target": "Package", + "version": "[2.9.3, )" + }, + "xunit.runner.visualstudio": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[3.1.1, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.NETCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.WindowsDesktop.App.Ref", + "version": "[8.0.19, 8.0.19]" + } + ], + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" + } + } + }, + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\ProjectLighthouse.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\ProjectLighthouse.csproj", + "projectName": "LBPUnion.ProjectLighthouse", + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\ProjectLighthouse.csproj", + "packagesPath": "C:\\Users\\Faisa\\.nuget\\packages\\", + "outputPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Faisa\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Localization\\ProjectLighthouse.Localization.csproj": { + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Localization\\ProjectLighthouse.Localization.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.300" + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "BCrypt.Net-Next": { + "target": "Package", + "version": "[4.0.3, )" + }, + "BouncyCastle.Cryptography": { + "target": "Package", + "version": "[2.6.1, )" + }, + "Discord.Net.Webhook": { + "target": "Package", + "version": "[3.17.4, )" + }, + "DistributedLock.MySql": { + "target": "Package", + "version": "[1.0.2, )" + }, + "GitInfo": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[3.5.0, )" + }, + "JetBrains.Annotations": { + "target": "Package", + "version": "[2024.3.0, )" + }, + "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": { + "target": "Package", + "version": "[8.0.18, )" + }, + "Microsoft.EntityFrameworkCore": { + "target": "Package", + "version": "[8.0.18, )" + }, + "Microsoft.EntityFrameworkCore.Design": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[8.0.18, )" + }, + "Pfim": { + "target": "Package", + "version": "[0.11.3, )" + }, + "Pomelo.EntityFrameworkCore.MySql": { + "target": "Package", + "version": "[8.0.2, )" + }, + "Redis.OM": { + "target": "Package", + "version": "[1.0.1, )" + }, + "SharpZipLib": { + "target": "Package", + "version": "[1.4.2, )" + }, + "SixLabors.ImageSharp": { + "target": "Package", + "version": "[3.1.10, )" + }, + "Swashbuckle.AspNetCore": { + "target": "Package", + "version": "[9.0.3, )" + }, + "YamlDotNet": { + "target": "Package", + "version": "[16.3.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.NETCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.WindowsDesktop.App.Ref", + "version": "[8.0.19, 8.0.19]" + } + ], + "frameworkReferences": { + "Microsoft.AspNetCore.App": { + "privateAssets": "none" + }, + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/ProjectLighthouse.Tests.GameApiTests/obj/ProjectLighthouse.Tests.GameApiTests.csproj.nuget.g.props b/ProjectLighthouse.Tests.GameApiTests/obj/ProjectLighthouse.Tests.GameApiTests.csproj.nuget.g.props new file mode 100644 index 00000000..553d7b2b --- /dev/null +++ b/ProjectLighthouse.Tests.GameApiTests/obj/ProjectLighthouse.Tests.GameApiTests.csproj.nuget.g.props @@ -0,0 +1,30 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\Faisa\.nuget\packages\ + PackageReference + 6.14.0 + + + + + + + + + + + + + + + + C:\Users\Faisa\.nuget\packages\xunit.analyzers\1.18.0 + C:\Users\Faisa\.nuget\packages\microsoft.extensions.apidescription.server\8.0.0 + C:\Users\Faisa\.nuget\packages\microsoft.codeanalysis.analyzers\3.3.3 + + \ No newline at end of file diff --git a/ProjectLighthouse.Tests.GameApiTests/obj/ProjectLighthouse.Tests.GameApiTests.csproj.nuget.g.targets b/ProjectLighthouse.Tests.GameApiTests/obj/ProjectLighthouse.Tests.GameApiTests.csproj.nuget.g.targets new file mode 100644 index 00000000..954eb47a --- /dev/null +++ b/ProjectLighthouse.Tests.GameApiTests/obj/ProjectLighthouse.Tests.GameApiTests.csproj.nuget.g.targets @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ProjectLighthouse.Tests.GameApiTests/obj/project.assets.json b/ProjectLighthouse.Tests.GameApiTests/obj/project.assets.json new file mode 100644 index 00000000..0bbac01d --- /dev/null +++ b/ProjectLighthouse.Tests.GameApiTests/obj/project.assets.json @@ -0,0 +1,5944 @@ +{ + "version": 3, + "targets": { + "net8.0": { + "BCrypt.Net-Next/4.0.3": { + "type": "package", + "compile": { + "lib/net6.0/BCrypt.Net-Next.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/BCrypt.Net-Next.dll": { + "related": ".xml" + } + } + }, + "BouncyCastle.Cryptography/2.6.1": { + "type": "package", + "compile": { + "lib/net6.0/BouncyCastle.Cryptography.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/BouncyCastle.Cryptography.dll": { + "related": ".xml" + } + } + }, + "Castle.Core/5.1.1": { + "type": "package", + "dependencies": { + "System.Diagnostics.EventLog": "6.0.0" + }, + "compile": { + "lib/net6.0/Castle.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Castle.Core.dll": { + "related": ".xml" + } + } + }, + "coverlet.collector/6.0.4": { + "type": "package", + "build": { + "build/netstandard2.0/coverlet.collector.targets": {} + } + }, + "Discord.Net.Core/3.17.4": { + "type": "package", + "dependencies": { + "Newtonsoft.Json": "13.0.3", + "System.Collections.Immutable": "8.0.0", + "System.Interactive.Async": "6.0.1", + "System.ValueTuple": "4.5.0" + }, + "compile": { + "lib/net8.0/Discord.Net.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Discord.Net.Core.dll": { + "related": ".xml" + } + } + }, + "Discord.Net.Rest/3.17.4": { + "type": "package", + "dependencies": { + "Discord.Net.Core": "3.17.4" + }, + "compile": { + "lib/net8.0/Discord.Net.Rest.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Discord.Net.Rest.dll": { + "related": ".xml" + } + } + }, + "Discord.Net.Webhook/3.17.4": { + "type": "package", + "dependencies": { + "Discord.Net.Core": "3.17.4", + "Discord.Net.Rest": "3.17.4" + }, + "compile": { + "lib/net8.0/Discord.Net.Webhook.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Discord.Net.Webhook.dll": { + "related": ".xml" + } + } + }, + "DistributedLock.Core/1.0.6": { + "type": "package", + "compile": { + "lib/net8.0/DistributedLock.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/DistributedLock.Core.dll": { + "related": ".xml" + } + } + }, + "DistributedLock.MySql/1.0.2": { + "type": "package", + "dependencies": { + "DistributedLock.Core": "[1.0.6, 1.1.0)", + "MySqlConnector": "2.3.5" + }, + "compile": { + "lib/netstandard2.1/DistributedLock.MySql.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/DistributedLock.MySql.dll": { + "related": ".xml" + } + } + }, + "Humanizer.Core/2.14.1": { + "type": "package", + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Humanizer.dll": { + "related": ".xml" + } + } + }, + "JetBrains.Annotations/2024.3.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/JetBrains.Annotations.dll": { + "related": ".deps.json;.xml" + } + }, + "runtime": { + "lib/netstandard2.0/JetBrains.Annotations.dll": { + "related": ".deps.json;.xml" + } + } + }, + "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore/8.0.18": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "8.0.18" + }, + "compile": { + "lib/net8.0/Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.dll": { + "related": ".xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Microsoft.AspNetCore.Mvc.Testing/8.0.18": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.TestHost": "8.0.18", + "Microsoft.Extensions.DependencyModel": "8.0.2", + "Microsoft.Extensions.Hosting": "8.0.1" + }, + "compile": { + "lib/net8.0/Microsoft.AspNetCore.Mvc.Testing.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.Mvc.Testing.dll": { + "related": ".xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ], + "build": { + "buildTransitive/net8.0/Microsoft.AspNetCore.Mvc.Testing.targets": {} + } + }, + "Microsoft.AspNetCore.TestHost/8.0.18": { + "type": "package", + "dependencies": { + "System.IO.Pipelines": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.AspNetCore.TestHost.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.TestHost.dll": { + "related": ".xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Microsoft.Bcl.AsyncInterfaces/8.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + } + }, + "Microsoft.CodeAnalysis.Analyzers/3.3.3": { + "type": "package", + "build": { + "build/_._": {} + } + }, + "Microsoft.CodeAnalysis.Common/4.5.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.3.3", + "System.Collections.Immutable": "6.0.0", + "System.Reflection.Metadata": "6.0.1", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encoding.CodePages": "6.0.0" + }, + "compile": { + "lib/netcoreapp3.1/_._": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/4.5.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Common": "[4.5.0]" + }, + "compile": { + "lib/netcoreapp3.1/_._": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces/4.5.0": { + "type": "package", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.CSharp": "[4.5.0]", + "Microsoft.CodeAnalysis.Common": "[4.5.0]", + "Microsoft.CodeAnalysis.Workspaces.Common": "[4.5.0]" + }, + "compile": { + "lib/netcoreapp3.1/_._": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.Workspaces.Common/4.5.0": { + "type": "package", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.Bcl.AsyncInterfaces": "6.0.0", + "Microsoft.CodeAnalysis.Common": "[4.5.0]", + "System.Composition": "6.0.0", + "System.IO.Pipelines": "6.0.3", + "System.Threading.Channels": "6.0.0" + }, + "compile": { + "lib/netcoreapp3.1/_._": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeCoverage/17.14.1": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {} + }, + "runtime": { + "lib/net8.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {} + }, + "build": { + "build/netstandard2.0/Microsoft.CodeCoverage.props": {}, + "build/netstandard2.0/Microsoft.CodeCoverage.targets": {} + } + }, + "Microsoft.Data.Sqlite.Core/8.0.6": { + "type": "package", + "dependencies": { + "SQLitePCLRaw.core": "2.1.6" + }, + "compile": { + "lib/net8.0/Microsoft.Data.Sqlite.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Data.Sqlite.dll": { + "related": ".xml" + } + } + }, + "Microsoft.EntityFrameworkCore/8.0.18": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "8.0.18", + "Microsoft.EntityFrameworkCore.Analyzers": "8.0.18", + "Microsoft.Extensions.Caching.Memory": "8.0.1", + "Microsoft.Extensions.Logging": "8.0.1" + }, + "compile": { + "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props": {} + } + }, + "Microsoft.EntityFrameworkCore.Abstractions/8.0.18": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.EntityFrameworkCore.Analyzers/8.0.18": { + "type": "package", + "compile": { + "lib/netstandard2.0/_._": {} + }, + "runtime": { + "lib/netstandard2.0/_._": {} + } + }, + "Microsoft.EntityFrameworkCore.Design/8.0.18": { + "type": "package", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.CSharp.Workspaces": "4.5.0", + "Microsoft.EntityFrameworkCore.Relational": "8.0.18", + "Microsoft.Extensions.DependencyModel": "8.0.2", + "Mono.TextTemplating": "2.2.1" + }, + "compile": { + "lib/net8.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Design.dll": { + "related": ".xml" + } + }, + "build": { + "build/net8.0/Microsoft.EntityFrameworkCore.Design.props": {} + } + }, + "Microsoft.EntityFrameworkCore.Relational/8.0.18": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore": "8.0.18", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": { + "related": ".xml" + } + } + }, + "Microsoft.EntityFrameworkCore.Sqlite/8.0.6": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore.Sqlite.Core": "8.0.6", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.6" + }, + "compile": { + "lib/net8.0/_._": {} + }, + "runtime": { + "lib/net8.0/_._": {} + } + }, + "Microsoft.EntityFrameworkCore.Sqlite.Core/8.0.6": { + "type": "package", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "8.0.6", + "Microsoft.EntityFrameworkCore.Relational": "8.0.6", + "Microsoft.Extensions.DependencyModel": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Sqlite.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Sqlite.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Extensions.ApiDescription.Server/8.0.0": { + "type": "package", + "build": { + "build/_._": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/_._": {} + } + }, + "Microsoft.Extensions.Caching.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Caching.Memory/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.Binder/8.0.2": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets": {} + } + }, + "Microsoft.Extensions.Configuration.CommandLine/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.FileExtensions/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.Json/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "8.0.1", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.Json.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.UserSecrets/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Json": "8.0.1", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.props": {}, + "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.targets": {} + } + }, + "Microsoft.Extensions.DependencyInjection/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.DependencyModel/8.0.2": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyModel.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyModel.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Diagnostics/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", + "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Diagnostics.Abstractions/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.FileProviders.Physical/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileSystemGlobbing": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.FileSystemGlobbing/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Hosting/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.2", + "Microsoft.Extensions.Configuration.CommandLine": "8.0.0", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "8.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "8.0.1", + "Microsoft.Extensions.Configuration.Json": "8.0.1", + "Microsoft.Extensions.Configuration.UserSecrets": "8.0.1", + "Microsoft.Extensions.DependencyInjection": "8.0.1", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Diagnostics": "8.0.1", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", + "Microsoft.Extensions.Logging": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging.Configuration": "8.0.1", + "Microsoft.Extensions.Logging.Console": "8.0.1", + "Microsoft.Extensions.Logging.Debug": "8.0.1", + "Microsoft.Extensions.Logging.EventLog": "8.0.1", + "Microsoft.Extensions.Logging.EventSource": "8.0.1", + "Microsoft.Extensions.Options": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Hosting.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Hosting.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Hosting.Abstractions/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.Abstractions/8.0.2": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets": {} + } + }, + "Microsoft.Extensions.Logging.Configuration/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.2", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.Console/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging.Configuration": "8.0.1", + "Microsoft.Extensions.Options": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Console.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Console.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.Debug/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Debug.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Debug.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.EventLog/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2", + "System.Diagnostics.EventLog": "8.0.1" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.EventSource/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Options/8.0.2": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/Microsoft.Extensions.Options.targets": {} + } + }, + "Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Primitives/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.NET.Test.Sdk/17.14.1": { + "type": "package", + "dependencies": { + "Microsoft.CodeCoverage": "17.14.1", + "Microsoft.TestPlatform.TestHost": "17.14.1" + }, + "compile": { + "lib/net8.0/_._": {} + }, + "runtime": { + "lib/net8.0/_._": {} + }, + "build": { + "build/net8.0/Microsoft.NET.Test.Sdk.props": {}, + "build/net8.0/Microsoft.NET.Test.Sdk.targets": {} + } + }, + "Microsoft.OpenApi/1.6.23": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.OpenApi.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.OpenApi.dll": { + "related": ".pdb;.xml" + } + } + }, + "Microsoft.TestPlatform.ObjectModel/17.14.1": { + "type": "package", + "dependencies": { + "System.Reflection.Metadata": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {} + }, + "runtime": { + "lib/net8.0/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {} + }, + "resource": { + "lib/net8.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "de" + }, + "lib/net8.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "es" + }, + "lib/net8.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "it" + }, + "lib/net8.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "zh-Hant" + }, + "lib/net8.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.TestPlatform.TestHost/17.14.1": { + "type": "package", + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "17.14.1", + "Newtonsoft.Json": "13.0.3" + }, + "compile": { + "lib/net8.0/Microsoft.TestPlatform.CommunicationUtilities.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.CrossPlatEngine.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.Utilities.dll": {}, + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.Common.dll": {}, + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {}, + "lib/net8.0/testhost.dll": { + "related": ".deps.json" + } + }, + "runtime": { + "lib/net8.0/Microsoft.TestPlatform.CommunicationUtilities.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.CrossPlatEngine.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.Utilities.dll": {}, + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.Common.dll": {}, + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {}, + "lib/net8.0/testhost.dll": { + "related": ".deps.json" + } + }, + "resource": { + "lib/net8.0/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "de" + }, + "lib/net8.0/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "de" + }, + "lib/net8.0/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "es" + }, + "lib/net8.0/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "es" + }, + "lib/net8.0/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "it" + }, + "lib/net8.0/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "it" + }, + "lib/net8.0/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "zh-Hant" + }, + "lib/net8.0/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "zh-Hant" + }, + "lib/net8.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "zh-Hant" + } + }, + "build": { + "build/net8.0/Microsoft.TestPlatform.TestHost.props": {}, + "build/net8.0/Microsoft.TestPlatform.TestHost.targets": {} + } + }, + "Mono.TextTemplating/2.2.1": { + "type": "package", + "dependencies": { + "System.CodeDom": "4.4.0" + }, + "compile": { + "lib/netstandard2.0/_._": {} + }, + "runtime": { + "lib/netstandard2.0/Mono.TextTemplating.dll": {} + } + }, + "Moq/4.20.72": { + "type": "package", + "dependencies": { + "Castle.Core": "5.1.1" + }, + "compile": { + "lib/net6.0/Moq.dll": {} + }, + "runtime": { + "lib/net6.0/Moq.dll": {} + } + }, + "MySqlConnector/2.3.5": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "7.0.1" + }, + "compile": { + "lib/net8.0/MySqlConnector.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/MySqlConnector.dll": { + "related": ".xml" + } + } + }, + "Newtonsoft.Json/13.0.3": { + "type": "package", + "compile": { + "lib/net6.0/Newtonsoft.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Newtonsoft.Json.dll": { + "related": ".xml" + } + } + }, + "Pfim/0.11.3": { + "type": "package", + "compile": { + "lib/netstandard2.0/Pfim.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Pfim.dll": {} + } + }, + "Pipelines.Sockets.Unofficial/2.2.8": { + "type": "package", + "dependencies": { + "System.IO.Pipelines": "5.0.1" + }, + "compile": { + "lib/net5.0/Pipelines.Sockets.Unofficial.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net5.0/Pipelines.Sockets.Unofficial.dll": { + "related": ".xml" + } + } + }, + "Pomelo.EntityFrameworkCore.MySql/8.0.2": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "[8.0.2, 8.0.999]", + "MySqlConnector": "2.3.5" + }, + "compile": { + "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll": { + "related": ".xml" + } + } + }, + "Redis.OM/1.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "Newtonsoft.Json": "13.0.1", + "StackExchange.Redis": "2.7.17", + "System.Text.Json": "8.0.5", + "Ulid": "1.2.6" + }, + "compile": { + "lib/netstandard2.0/Redis.OM.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Redis.OM.dll": { + "related": ".xml" + } + } + }, + "SharpZipLib/1.4.2": { + "type": "package", + "compile": { + "lib/net6.0/ICSharpCode.SharpZipLib.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net6.0/ICSharpCode.SharpZipLib.dll": { + "related": ".pdb;.xml" + } + } + }, + "SixLabors.ImageSharp/3.1.10": { + "type": "package", + "compile": { + "lib/net6.0/SixLabors.ImageSharp.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/SixLabors.ImageSharp.dll": { + "related": ".xml" + } + }, + "build": { + "build/_._": {} + } + }, + "SQLitePCLRaw.bundle_e_sqlite3/2.1.6": { + "type": "package", + "dependencies": { + "SQLitePCLRaw.lib.e_sqlite3": "2.1.6", + "SQLitePCLRaw.provider.e_sqlite3": "2.1.6" + }, + "compile": { + "lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll": {} + }, + "runtime": { + "lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll": {} + } + }, + "SQLitePCLRaw.core/2.1.6": { + "type": "package", + "dependencies": { + "System.Memory": "4.5.3" + }, + "compile": { + "lib/netstandard2.0/SQLitePCLRaw.core.dll": {} + }, + "runtime": { + "lib/netstandard2.0/SQLitePCLRaw.core.dll": {} + } + }, + "SQLitePCLRaw.lib.e_sqlite3/2.1.6": { + "type": "package", + "compile": { + "lib/netstandard2.0/_._": {} + }, + "runtime": { + "lib/netstandard2.0/_._": {} + }, + "build": { + "buildTransitive/net8.0/SQLitePCLRaw.lib.e_sqlite3.targets": {} + }, + "runtimeTargets": { + "runtimes/browser-wasm/nativeassets/net8.0/e_sqlite3.a": { + "assetType": "native", + "rid": "browser-wasm" + }, + "runtimes/linux-arm/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-arm" + }, + "runtimes/linux-arm64/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-arm64" + }, + "runtimes/linux-armel/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-armel" + }, + "runtimes/linux-mips64/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-mips64" + }, + "runtimes/linux-musl-arm/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-musl-arm" + }, + "runtimes/linux-musl-arm64/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-musl-arm64" + }, + "runtimes/linux-musl-x64/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-musl-x64" + }, + "runtimes/linux-ppc64le/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-ppc64le" + }, + "runtimes/linux-s390x/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-s390x" + }, + "runtimes/linux-x64/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-x64" + }, + "runtimes/linux-x86/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-x86" + }, + "runtimes/maccatalyst-arm64/native/libe_sqlite3.dylib": { + "assetType": "native", + "rid": "maccatalyst-arm64" + }, + "runtimes/maccatalyst-x64/native/libe_sqlite3.dylib": { + "assetType": "native", + "rid": "maccatalyst-x64" + }, + "runtimes/osx-arm64/native/libe_sqlite3.dylib": { + "assetType": "native", + "rid": "osx-arm64" + }, + "runtimes/osx-x64/native/libe_sqlite3.dylib": { + "assetType": "native", + "rid": "osx-x64" + }, + "runtimes/win-arm/native/e_sqlite3.dll": { + "assetType": "native", + "rid": "win-arm" + }, + "runtimes/win-arm64/native/e_sqlite3.dll": { + "assetType": "native", + "rid": "win-arm64" + }, + "runtimes/win-x64/native/e_sqlite3.dll": { + "assetType": "native", + "rid": "win-x64" + }, + "runtimes/win-x86/native/e_sqlite3.dll": { + "assetType": "native", + "rid": "win-x86" + } + } + }, + "SQLitePCLRaw.provider.e_sqlite3/2.1.6": { + "type": "package", + "dependencies": { + "SQLitePCLRaw.core": "2.1.6" + }, + "compile": { + "lib/net6.0/SQLitePCLRaw.provider.e_sqlite3.dll": {} + }, + "runtime": { + "lib/net6.0/SQLitePCLRaw.provider.e_sqlite3.dll": {} + } + }, + "StackExchange.Redis/2.7.17": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "6.0.0", + "Pipelines.Sockets.Unofficial": "2.2.8" + }, + "compile": { + "lib/net6.0/StackExchange.Redis.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/StackExchange.Redis.dll": { + "related": ".xml" + } + } + }, + "Swashbuckle.AspNetCore/9.0.3": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "8.0.0", + "Swashbuckle.AspNetCore.Swagger": "9.0.3", + "Swashbuckle.AspNetCore.SwaggerGen": "9.0.3", + "Swashbuckle.AspNetCore.SwaggerUI": "9.0.3" + }, + "build": { + "build/_._": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/_._": {} + } + }, + "Swashbuckle.AspNetCore.Swagger/9.0.3": { + "type": "package", + "dependencies": { + "Microsoft.OpenApi": "1.6.23" + }, + "compile": { + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { + "related": ".pdb;.xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Swashbuckle.AspNetCore.SwaggerGen/9.0.3": { + "type": "package", + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "9.0.3" + }, + "compile": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { + "related": ".pdb;.xml" + } + } + }, + "Swashbuckle.AspNetCore.SwaggerUI/9.0.3": { + "type": "package", + "compile": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { + "related": ".pdb;.xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "System.CodeDom/4.4.0": { + "type": "package", + "compile": { + "ref/netstandard2.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.CodeDom.dll": {} + } + }, + "System.Collections.Immutable/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Collections.Immutable.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Collections.Immutable.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Composition/6.0.0": { + "type": "package", + "dependencies": { + "System.Composition.AttributedModel": "6.0.0", + "System.Composition.Convention": "6.0.0", + "System.Composition.Hosting": "6.0.0", + "System.Composition.Runtime": "6.0.0", + "System.Composition.TypedParts": "6.0.0" + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Composition.AttributedModel/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Composition.AttributedModel.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Composition.Convention/6.0.0": { + "type": "package", + "dependencies": { + "System.Composition.AttributedModel": "6.0.0" + }, + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Composition.Convention.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Composition.Hosting/6.0.0": { + "type": "package", + "dependencies": { + "System.Composition.Runtime": "6.0.0" + }, + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Composition.Hosting.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Composition.Runtime/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Composition.Runtime.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Composition.TypedParts/6.0.0": { + "type": "package", + "dependencies": { + "System.Composition.AttributedModel": "6.0.0", + "System.Composition.Hosting": "6.0.0", + "System.Composition.Runtime": "6.0.0" + }, + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Composition.TypedParts.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Diagnostics.EventLog/8.0.1": { + "type": "package", + "compile": { + "lib/net8.0/System.Diagnostics.EventLog.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Diagnostics.EventLog.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll": { + "assetType": "runtime", + "rid": "win" + }, + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Interactive.Async/6.0.1": { + "type": "package", + "dependencies": { + "System.Linq.Async": "6.0.1" + }, + "compile": { + "lib/net6.0/System.Interactive.Async.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Interactive.Async.dll": { + "related": ".xml" + } + } + }, + "System.IO.Pipelines/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.IO.Pipelines.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.IO.Pipelines.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Linq.Async/6.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "6.0.0" + }, + "compile": { + "ref/net6.0/System.Linq.Async.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Linq.Async.dll": { + "related": ".xml" + } + } + }, + "System.Memory/4.5.3": { + "type": "package", + "compile": { + "ref/netcoreapp2.1/_._": {} + }, + "runtime": { + "lib/netcoreapp2.1/_._": {} + } + }, + "System.Reflection.Metadata/8.0.0": { + "type": "package", + "dependencies": { + "System.Collections.Immutable": "8.0.0" + }, + "compile": { + "lib/net8.0/System.Reflection.Metadata.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Reflection.Metadata.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Text.Encoding.CodePages/6.0.0": { + "type": "package", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + }, + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Text.Encoding.CodePages.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/net6.0/System.Text.Encoding.CodePages.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Text.Json/8.0.5": { + "type": "package", + "compile": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/System.Text.Json.targets": {} + } + }, + "System.Threading.Channels/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Threading.Channels.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.ValueTuple/4.5.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, + "Ulid/1.2.6": { + "type": "package", + "compile": { + "lib/net5.0/Ulid.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net5.0/Ulid.dll": { + "related": ".xml" + } + } + }, + "xunit/2.9.3": { + "type": "package", + "dependencies": { + "xunit.analyzers": "1.18.0", + "xunit.assert": "2.9.3", + "xunit.core": "[2.9.3]" + } + }, + "xunit.abstractions/2.0.3": { + "type": "package", + "compile": { + "lib/netstandard2.0/xunit.abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/xunit.abstractions.dll": { + "related": ".xml" + } + } + }, + "xunit.analyzers/1.18.0": { + "type": "package" + }, + "xunit.assert/2.9.3": { + "type": "package", + "compile": { + "lib/net6.0/xunit.assert.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/xunit.assert.dll": { + "related": ".xml" + } + } + }, + "xunit.core/2.9.3": { + "type": "package", + "dependencies": { + "xunit.extensibility.core": "[2.9.3]", + "xunit.extensibility.execution": "[2.9.3]" + }, + "build": { + "build/xunit.core.props": {}, + "build/xunit.core.targets": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/xunit.core.props": {}, + "buildMultiTargeting/xunit.core.targets": {} + } + }, + "xunit.extensibility.core/2.9.3": { + "type": "package", + "dependencies": { + "xunit.abstractions": "2.0.3" + }, + "compile": { + "lib/netstandard1.1/xunit.core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.1/xunit.core.dll": { + "related": ".xml" + } + } + }, + "xunit.extensibility.execution/2.9.3": { + "type": "package", + "dependencies": { + "xunit.extensibility.core": "[2.9.3]" + }, + "compile": { + "lib/netstandard1.1/xunit.execution.dotnet.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.1/xunit.execution.dotnet.dll": { + "related": ".xml" + } + } + }, + "xunit.runner.visualstudio/3.1.1": { + "type": "package", + "compile": { + "lib/net8.0/_._": {} + }, + "runtime": { + "lib/net8.0/_._": {} + }, + "build": { + "build/net8.0/xunit.runner.visualstudio.props": {} + } + }, + "YamlDotNet/16.3.0": { + "type": "package", + "compile": { + "lib/net8.0/YamlDotNet.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/YamlDotNet.dll": { + "related": ".xml" + } + } + }, + "LBPUnion.ProjectLighthouse/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "dependencies": { + "BCrypt.Net-Next": "4.0.3", + "BouncyCastle.Cryptography": "2.6.1", + "Discord.Net.Webhook": "3.17.4", + "DistributedLock.MySql": "1.0.2", + "JetBrains.Annotations": "2024.3.0", + "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "8.0.18", + "Microsoft.EntityFrameworkCore": "8.0.18", + "Pfim": "0.11.3", + "Pomelo.EntityFrameworkCore.MySql": "8.0.2", + "ProjectLighthouse.Localization": "1.0.0", + "Redis.OM": "1.0.1", + "SharpZipLib": "1.4.2", + "SixLabors.ImageSharp": "3.1.10", + "Swashbuckle.AspNetCore": "9.0.3", + "YamlDotNet": "16.3.0" + }, + "compile": { + "bin/placeholder/LBPUnion.ProjectLighthouse.dll": {} + }, + "runtime": { + "bin/placeholder/LBPUnion.ProjectLighthouse.dll": {} + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "LBPUnion.ProjectLighthouse.Servers.GameServer/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "dependencies": { + "LBPUnion.ProjectLighthouse": "1.0.0" + }, + "compile": { + "bin/placeholder/LBPUnion.ProjectLighthouse.Servers.GameServer.dll": {} + }, + "runtime": { + "bin/placeholder/LBPUnion.ProjectLighthouse.Servers.GameServer.dll": {} + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "LBPUnion.ProjectLighthouse.Tests/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "dependencies": { + "JetBrains.Annotations": "2024.3.0", + "LBPUnion.ProjectLighthouse": "1.0.0", + "Microsoft.AspNetCore.Mvc.Testing": "8.0.18", + "Microsoft.EntityFrameworkCore.Sqlite": "8.0.6", + "Microsoft.NET.Test.Sdk": "17.14.1", + "Moq": "4.20.72", + "xunit": "2.9.3" + }, + "compile": { + "bin/placeholder/LBPUnion.ProjectLighthouse.Tests.dll": {} + }, + "runtime": { + "bin/placeholder/LBPUnion.ProjectLighthouse.Tests.dll": {} + } + }, + "ProjectLighthouse.Localization/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "compile": { + "bin/placeholder/ProjectLighthouse.Localization.dll": {} + }, + "runtime": { + "bin/placeholder/ProjectLighthouse.Localization.dll": {} + } + } + } + }, + "libraries": { + "BCrypt.Net-Next/4.0.3": { + "sha512": "W+U9WvmZQgi5cX6FS5GDtDoPzUCV4LkBLkywq/kRZhuDwcbavOzcDAr3LXJFqHUi952Yj3LEYoWW0jbEUQChsA==", + "type": "package", + "path": "bcrypt.net-next/4.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "bcrypt.net-next.4.0.3.nupkg.sha512", + "bcrypt.net-next.nuspec", + "ico.png", + "lib/net20/BCrypt.Net-Next.dll", + "lib/net20/BCrypt.Net-Next.xml", + "lib/net35/BCrypt.Net-Next.dll", + "lib/net35/BCrypt.Net-Next.xml", + "lib/net462/BCrypt.Net-Next.dll", + "lib/net462/BCrypt.Net-Next.xml", + "lib/net472/BCrypt.Net-Next.dll", + "lib/net472/BCrypt.Net-Next.xml", + "lib/net48/BCrypt.Net-Next.dll", + "lib/net48/BCrypt.Net-Next.xml", + "lib/net5.0/BCrypt.Net-Next.dll", + "lib/net5.0/BCrypt.Net-Next.xml", + "lib/net6.0/BCrypt.Net-Next.dll", + "lib/net6.0/BCrypt.Net-Next.xml", + "lib/netstandard2.0/BCrypt.Net-Next.dll", + "lib/netstandard2.0/BCrypt.Net-Next.xml", + "lib/netstandard2.1/BCrypt.Net-Next.dll", + "lib/netstandard2.1/BCrypt.Net-Next.xml", + "readme.md" + ] + }, + "BouncyCastle.Cryptography/2.6.1": { + "sha512": "vZsG2YILhthgRqO+ZVgRff4ZFKKTl0v7kqaVBLCtRvpREhfBP33pcWrdA3PRYgWuFL1RxiUFvjMUHTdBZlJcoA==", + "type": "package", + "path": "bouncycastle.cryptography/2.6.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.md", + "README.md", + "bouncycastle.cryptography.2.6.1.nupkg.sha512", + "bouncycastle.cryptography.nuspec", + "lib/net461/BouncyCastle.Cryptography.dll", + "lib/net461/BouncyCastle.Cryptography.xml", + "lib/net6.0/BouncyCastle.Cryptography.dll", + "lib/net6.0/BouncyCastle.Cryptography.xml", + "lib/netstandard2.0/BouncyCastle.Cryptography.dll", + "lib/netstandard2.0/BouncyCastle.Cryptography.xml", + "packageIcon.png" + ] + }, + "Castle.Core/5.1.1": { + "sha512": "rpYtIczkzGpf+EkZgDr9CClTdemhsrwA/W5hMoPjLkRFnXzH44zDLoovXeKtmxb1ykXK9aJVODSpiJml8CTw2g==", + "type": "package", + "path": "castle.core/5.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ASL - Apache Software Foundation License.txt", + "CHANGELOG.md", + "LICENSE", + "castle-logo.png", + "castle.core.5.1.1.nupkg.sha512", + "castle.core.nuspec", + "lib/net462/Castle.Core.dll", + "lib/net462/Castle.Core.xml", + "lib/net6.0/Castle.Core.dll", + "lib/net6.0/Castle.Core.xml", + "lib/netstandard2.0/Castle.Core.dll", + "lib/netstandard2.0/Castle.Core.xml", + "lib/netstandard2.1/Castle.Core.dll", + "lib/netstandard2.1/Castle.Core.xml", + "readme.txt" + ] + }, + "coverlet.collector/6.0.4": { + "sha512": "lkhqpF8Pu2Y7IiN7OntbsTtdbpR1syMsm2F3IgX6ootA4ffRqWL5jF7XipHuZQTdVuWG/gVAAcf8mjk8Tz0xPg==", + "type": "package", + "path": "coverlet.collector/6.0.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "VSTestIntegration.md", + "build/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "build/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "build/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", + "build/netstandard2.0/Microsoft.Extensions.DependencyModel.dll", + "build/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "build/netstandard2.0/Microsoft.TestPlatform.CoreUtilities.dll", + "build/netstandard2.0/Microsoft.TestPlatform.PlatformAbstractions.dll", + "build/netstandard2.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "build/netstandard2.0/Mono.Cecil.Mdb.dll", + "build/netstandard2.0/Mono.Cecil.Pdb.dll", + "build/netstandard2.0/Mono.Cecil.Rocks.dll", + "build/netstandard2.0/Mono.Cecil.dll", + "build/netstandard2.0/Newtonsoft.Json.dll", + "build/netstandard2.0/NuGet.Frameworks.dll", + "build/netstandard2.0/NuGet.Versioning.dll", + "build/netstandard2.0/System.Buffers.dll", + "build/netstandard2.0/System.Collections.Immutable.dll", + "build/netstandard2.0/System.Memory.dll", + "build/netstandard2.0/System.Numerics.Vectors.dll", + "build/netstandard2.0/System.Reflection.Metadata.dll", + "build/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "build/netstandard2.0/System.Text.Encodings.Web.dll", + "build/netstandard2.0/System.Text.Json.dll", + "build/netstandard2.0/System.Threading.Tasks.Extensions.dll", + "build/netstandard2.0/coverlet.collector.deps.json", + "build/netstandard2.0/coverlet.collector.dll", + "build/netstandard2.0/coverlet.collector.pdb", + "build/netstandard2.0/coverlet.collector.targets", + "build/netstandard2.0/coverlet.core.dll", + "build/netstandard2.0/coverlet.core.pdb", + "build/netstandard2.0/coverlet.core.xml", + "build/netstandard2.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "coverlet-icon.png", + "coverlet.collector.6.0.4.nupkg.sha512", + "coverlet.collector.nuspec" + ] + }, + "Discord.Net.Core/3.17.4": { + "sha512": "tMCilkXI6Gqqn6ipyysyuv3qHUNY1LNUbEpRHF6Q5jqW0Tckvu/EuZ2r/1xJatxvC8EoohIA05Dq3N3rrRlxBQ==", + "type": "package", + "path": "discord.net.core/3.17.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "NUGET_README.md", + "PackageLogo.png", + "discord.net.core.3.17.4.nupkg.sha512", + "discord.net.core.nuspec", + "lib/net461/Discord.Net.Core.dll", + "lib/net461/Discord.Net.Core.xml", + "lib/net5.0/Discord.Net.Core.dll", + "lib/net5.0/Discord.Net.Core.xml", + "lib/net6.0/Discord.Net.Core.dll", + "lib/net6.0/Discord.Net.Core.xml", + "lib/net8.0/Discord.Net.Core.dll", + "lib/net8.0/Discord.Net.Core.xml", + "lib/net9.0/Discord.Net.Core.dll", + "lib/net9.0/Discord.Net.Core.xml", + "lib/netstandard2.0/Discord.Net.Core.dll", + "lib/netstandard2.0/Discord.Net.Core.xml", + "lib/netstandard2.1/Discord.Net.Core.dll", + "lib/netstandard2.1/Discord.Net.Core.xml" + ] + }, + "Discord.Net.Rest/3.17.4": { + "sha512": "j3YRvFY9Rd0cCPQpRbTb12fGdcO41Cg0haKSZ/6fqHy1WEzZcKRpU8wC9a9e6yIwc5Gi0jrqYAQ/jvXartOqlg==", + "type": "package", + "path": "discord.net.rest/3.17.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "NUGET_README.md", + "PackageLogo.png", + "discord.net.rest.3.17.4.nupkg.sha512", + "discord.net.rest.nuspec", + "lib/net461/Discord.Net.Rest.dll", + "lib/net461/Discord.Net.Rest.xml", + "lib/net5.0/Discord.Net.Rest.dll", + "lib/net5.0/Discord.Net.Rest.xml", + "lib/net6.0/Discord.Net.Rest.dll", + "lib/net6.0/Discord.Net.Rest.xml", + "lib/net8.0/Discord.Net.Rest.dll", + "lib/net8.0/Discord.Net.Rest.xml", + "lib/net9.0/Discord.Net.Rest.dll", + "lib/net9.0/Discord.Net.Rest.xml", + "lib/netstandard2.0/Discord.Net.Rest.dll", + "lib/netstandard2.0/Discord.Net.Rest.xml", + "lib/netstandard2.1/Discord.Net.Rest.dll", + "lib/netstandard2.1/Discord.Net.Rest.xml" + ] + }, + "Discord.Net.Webhook/3.17.4": { + "sha512": "NGr75To1uxeyMEPsR4lo5+m/d2ALGzsgAUBCv/27tBU5G0Ss9fjaemPumcQtXO1uJSBQallxreWsn/LfMQHc5A==", + "type": "package", + "path": "discord.net.webhook/3.17.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "NUGET_README.md", + "PackageLogo.png", + "discord.net.webhook.3.17.4.nupkg.sha512", + "discord.net.webhook.nuspec", + "lib/net5.0/Discord.Net.Webhook.dll", + "lib/net5.0/Discord.Net.Webhook.xml", + "lib/net6.0/Discord.Net.Webhook.dll", + "lib/net6.0/Discord.Net.Webhook.xml", + "lib/net8.0/Discord.Net.Webhook.dll", + "lib/net8.0/Discord.Net.Webhook.xml", + "lib/net9.0/Discord.Net.Webhook.dll", + "lib/net9.0/Discord.Net.Webhook.xml", + "lib/netstandard2.0/Discord.Net.Webhook.dll", + "lib/netstandard2.0/Discord.Net.Webhook.xml", + "lib/netstandard2.1/Discord.Net.Webhook.dll", + "lib/netstandard2.1/Discord.Net.Webhook.xml" + ] + }, + "DistributedLock.Core/1.0.6": { + "sha512": "WFAz6x82K+4uiByDk1Qz2lmcm2FrOyCzZjNauzbLeHPou6Ur2C9Ig7d6vxP7/kKvzSrrQoW6k3pUOOcikb9Jgw==", + "type": "package", + "path": "distributedlock.core/1.0.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "distributedlock.core.1.0.6.nupkg.sha512", + "distributedlock.core.nuspec", + "lib/net462/DistributedLock.Core.dll", + "lib/net462/DistributedLock.Core.xml", + "lib/net8.0/DistributedLock.Core.dll", + "lib/net8.0/DistributedLock.Core.xml", + "lib/netstandard2.0/DistributedLock.Core.dll", + "lib/netstandard2.0/DistributedLock.Core.xml", + "lib/netstandard2.1/DistributedLock.Core.dll", + "lib/netstandard2.1/DistributedLock.Core.xml", + "package.readme.md" + ] + }, + "DistributedLock.MySql/1.0.2": { + "sha512": "1FIaBNM1/EmFeKc9qFNGf+8D/g3ZyBXoGYp0j+DQqKdfJJ500m45zYR4PWFsy1RYUL3E8VNnSvGpxUhB6OKrww==", + "type": "package", + "path": "distributedlock.mysql/1.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "distributedlock.mysql.1.0.2.nupkg.sha512", + "distributedlock.mysql.nuspec", + "lib/net462/DistributedLock.MySql.dll", + "lib/net462/DistributedLock.MySql.xml", + "lib/netstandard2.0/DistributedLock.MySql.dll", + "lib/netstandard2.0/DistributedLock.MySql.xml", + "lib/netstandard2.1/DistributedLock.MySql.dll", + "lib/netstandard2.1/DistributedLock.MySql.xml", + "package.readme.md" + ] + }, + "Humanizer.Core/2.14.1": { + "sha512": "lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==", + "type": "package", + "path": "humanizer.core/2.14.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.2.14.1.nupkg.sha512", + "humanizer.core.nuspec", + "lib/net6.0/Humanizer.dll", + "lib/net6.0/Humanizer.xml", + "lib/netstandard1.0/Humanizer.dll", + "lib/netstandard1.0/Humanizer.xml", + "lib/netstandard2.0/Humanizer.dll", + "lib/netstandard2.0/Humanizer.xml", + "logo.png" + ] + }, + "JetBrains.Annotations/2024.3.0": { + "sha512": "ox5pkeLQXjvJdyAB4b2sBYAlqZGLh3PjSnP1bQNVx72ONuTJ9+34/+Rq91Fc0dG29XG9RgZur9+NcP4riihTug==", + "type": "package", + "path": "jetbrains.annotations/2024.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "icon.png", + "jetbrains.annotations.2024.3.0.nupkg.sha512", + "jetbrains.annotations.nuspec", + "lib/net20/JetBrains.Annotations.dll", + "lib/net20/JetBrains.Annotations.xml", + "lib/netstandard1.0/JetBrains.Annotations.deps.json", + "lib/netstandard1.0/JetBrains.Annotations.dll", + "lib/netstandard1.0/JetBrains.Annotations.xml", + "lib/netstandard2.0/JetBrains.Annotations.deps.json", + "lib/netstandard2.0/JetBrains.Annotations.dll", + "lib/netstandard2.0/JetBrains.Annotations.xml", + "lib/portable40-net40+sl5+win8+wp8+wpa81/JetBrains.Annotations.dll", + "lib/portable40-net40+sl5+win8+wp8+wpa81/JetBrains.Annotations.xml", + "readme.md" + ] + }, + "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore/8.0.18": { + "sha512": "H4GKNR5eGHpK5yovhsO3BvOfzKlSv8DVclVYi1JLN5wfei+HAbskbi9nMGGamgtqgVXX1RAAduGKGQWlWGlfKw==", + "type": "package", + "path": "microsoft.aspnetcore.diagnostics.entityframeworkcore/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net8.0/Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.dll", + "lib/net8.0/Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.xml", + "microsoft.aspnetcore.diagnostics.entityframeworkcore.8.0.18.nupkg.sha512", + "microsoft.aspnetcore.diagnostics.entityframeworkcore.nuspec" + ] + }, + "Microsoft.AspNetCore.Mvc.Testing/8.0.18": { + "sha512": "QfMWUySY4rtLkzdqT/i431ZA+iydEc1pEZoFDpkpu8U9Lc6RlOoZvK4oBU47G+TxqNcHz4omf0JrCqpfL1wq6g==", + "type": "package", + "path": "microsoft.aspnetcore.mvc.testing/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "build/net8.0/Microsoft.AspNetCore.Mvc.Testing.targets", + "buildTransitive/net8.0/Microsoft.AspNetCore.Mvc.Testing.targets", + "lib/net8.0/Microsoft.AspNetCore.Mvc.Testing.dll", + "lib/net8.0/Microsoft.AspNetCore.Mvc.Testing.xml", + "microsoft.aspnetcore.mvc.testing.8.0.18.nupkg.sha512", + "microsoft.aspnetcore.mvc.testing.nuspec", + "tasks/netstandard2.0/Microsoft.AspNetCore.Mvc.Testing.Tasks.dll" + ] + }, + "Microsoft.AspNetCore.TestHost/8.0.18": { + "sha512": "ofyg3Go9hNptZkZt6MXS2W8LTe+ayceXOebf3XTxywGHn9rbtg/cwXjwcMZ3e6On2p1eSEBtHUmdi6YWplXuSQ==", + "type": "package", + "path": "microsoft.aspnetcore.testhost/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net8.0/Microsoft.AspNetCore.TestHost.dll", + "lib/net8.0/Microsoft.AspNetCore.TestHost.xml", + "microsoft.aspnetcore.testhost.8.0.18.nupkg.sha512", + "microsoft.aspnetcore.testhost.nuspec" + ] + }, + "Microsoft.Bcl.AsyncInterfaces/8.0.0": { + "sha512": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==", + "type": "package", + "path": "microsoft.bcl.asyncinterfaces/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Bcl.AsyncInterfaces.targets", + "buildTransitive/net462/_._", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", + "microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512", + "microsoft.bcl.asyncinterfaces.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.CodeAnalysis.Analyzers/3.3.3": { + "sha512": "j/rOZtLMVJjrfLRlAMckJLPW/1rze9MT1yfWqSIbUPGRu1m1P0fuo9PmqapwsmePfGB5PJrudQLvmUOAMF0DqQ==", + "type": "package", + "path": "microsoft.codeanalysis.analyzers/3.3.3", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "analyzers/dotnet/cs/Microsoft.CodeAnalysis.Analyzers.dll", + "analyzers/dotnet/cs/Microsoft.CodeAnalysis.CSharp.Analyzers.dll", + "analyzers/dotnet/cs/cs/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/de/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/es/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/fr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/it/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ja/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ko/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/pl/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/pt-BR/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ru/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/tr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/zh-Hans/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/zh-Hant/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/Microsoft.CodeAnalysis.Analyzers.dll", + "analyzers/dotnet/vb/Microsoft.CodeAnalysis.VisualBasic.Analyzers.dll", + "analyzers/dotnet/vb/cs/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/de/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/es/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/fr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/it/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ja/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ko/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/pl/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/pt-BR/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ru/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/tr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/zh-Hans/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/zh-Hant/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "build/Microsoft.CodeAnalysis.Analyzers.props", + "build/Microsoft.CodeAnalysis.Analyzers.targets", + "build/config/analysislevel_2_9_8_all.editorconfig", + "build/config/analysislevel_2_9_8_default.editorconfig", + "build/config/analysislevel_2_9_8_minimum.editorconfig", + "build/config/analysislevel_2_9_8_none.editorconfig", + "build/config/analysislevel_2_9_8_recommended.editorconfig", + "build/config/analysislevel_3_3_all.editorconfig", + "build/config/analysislevel_3_3_default.editorconfig", + "build/config/analysislevel_3_3_minimum.editorconfig", + "build/config/analysislevel_3_3_none.editorconfig", + "build/config/analysislevel_3_3_recommended.editorconfig", + "build/config/analysislevel_3_all.editorconfig", + "build/config/analysislevel_3_default.editorconfig", + "build/config/analysislevel_3_minimum.editorconfig", + "build/config/analysislevel_3_none.editorconfig", + "build/config/analysislevel_3_recommended.editorconfig", + "build/config/analysislevelcorrectness_2_9_8_all.editorconfig", + "build/config/analysislevelcorrectness_2_9_8_default.editorconfig", + "build/config/analysislevelcorrectness_2_9_8_minimum.editorconfig", + "build/config/analysislevelcorrectness_2_9_8_none.editorconfig", + "build/config/analysislevelcorrectness_2_9_8_recommended.editorconfig", + "build/config/analysislevelcorrectness_3_3_all.editorconfig", + "build/config/analysislevelcorrectness_3_3_default.editorconfig", + "build/config/analysislevelcorrectness_3_3_minimum.editorconfig", + "build/config/analysislevelcorrectness_3_3_none.editorconfig", + "build/config/analysislevelcorrectness_3_3_recommended.editorconfig", + "build/config/analysislevelcorrectness_3_all.editorconfig", + "build/config/analysislevelcorrectness_3_default.editorconfig", + "build/config/analysislevelcorrectness_3_minimum.editorconfig", + "build/config/analysislevelcorrectness_3_none.editorconfig", + "build/config/analysislevelcorrectness_3_recommended.editorconfig", + "build/config/analysislevellibrary_2_9_8_all.editorconfig", + "build/config/analysislevellibrary_2_9_8_default.editorconfig", + "build/config/analysislevellibrary_2_9_8_minimum.editorconfig", + "build/config/analysislevellibrary_2_9_8_none.editorconfig", + "build/config/analysislevellibrary_2_9_8_recommended.editorconfig", + "build/config/analysislevellibrary_3_3_all.editorconfig", + "build/config/analysislevellibrary_3_3_default.editorconfig", + "build/config/analysislevellibrary_3_3_minimum.editorconfig", + "build/config/analysislevellibrary_3_3_none.editorconfig", + "build/config/analysislevellibrary_3_3_recommended.editorconfig", + "build/config/analysislevellibrary_3_all.editorconfig", + "build/config/analysislevellibrary_3_default.editorconfig", + "build/config/analysislevellibrary_3_minimum.editorconfig", + "build/config/analysislevellibrary_3_none.editorconfig", + "build/config/analysislevellibrary_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_recommended.editorconfig", + "documentation/Analyzer Configuration.md", + "documentation/Microsoft.CodeAnalysis.Analyzers.md", + "documentation/Microsoft.CodeAnalysis.Analyzers.sarif", + "editorconfig/AllRulesDefault/.editorconfig", + "editorconfig/AllRulesDisabled/.editorconfig", + "editorconfig/AllRulesEnabled/.editorconfig", + "editorconfig/CorrectnessRulesDefault/.editorconfig", + "editorconfig/CorrectnessRulesEnabled/.editorconfig", + "editorconfig/DataflowRulesDefault/.editorconfig", + "editorconfig/DataflowRulesEnabled/.editorconfig", + "editorconfig/LibraryRulesDefault/.editorconfig", + "editorconfig/LibraryRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCompatibilityRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCompatibilityRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCorrectnessRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCorrectnessRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDesignRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDesignRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDocumentationRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDocumentationRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisLocalizationRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisLocalizationRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisPerformanceRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisPerformanceRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisReleaseTrackingRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisReleaseTrackingRulesEnabled/.editorconfig", + "editorconfig/PortedFromFxCopRulesDefault/.editorconfig", + "editorconfig/PortedFromFxCopRulesEnabled/.editorconfig", + "microsoft.codeanalysis.analyzers.3.3.3.nupkg.sha512", + "microsoft.codeanalysis.analyzers.nuspec", + "rulesets/AllRulesDefault.ruleset", + "rulesets/AllRulesDisabled.ruleset", + "rulesets/AllRulesEnabled.ruleset", + "rulesets/CorrectnessRulesDefault.ruleset", + "rulesets/CorrectnessRulesEnabled.ruleset", + "rulesets/DataflowRulesDefault.ruleset", + "rulesets/DataflowRulesEnabled.ruleset", + "rulesets/LibraryRulesDefault.ruleset", + "rulesets/LibraryRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisCompatibilityRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisCompatibilityRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisCorrectnessRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisCorrectnessRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisDesignRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisDesignRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisDocumentationRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisDocumentationRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisLocalizationRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisLocalizationRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisPerformanceRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisPerformanceRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisReleaseTrackingRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisReleaseTrackingRulesEnabled.ruleset", + "rulesets/PortedFromFxCopRulesDefault.ruleset", + "rulesets/PortedFromFxCopRulesEnabled.ruleset", + "tools/install.ps1", + "tools/uninstall.ps1" + ] + }, + "Microsoft.CodeAnalysis.Common/4.5.0": { + "sha512": "lwAbIZNdnY0SUNoDmZHkVUwLO8UyNnyyh1t/4XsbFxi4Ounb3xszIYZaWhyj5ZjyfcwqwmtMbE7fUTVCqQEIdQ==", + "type": "package", + "path": "microsoft.codeanalysis.common/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.pdb", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.xml", + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll", + "microsoft.codeanalysis.common.4.5.0.nupkg.sha512", + "microsoft.codeanalysis.common.nuspec" + ] + }, + "Microsoft.CodeAnalysis.CSharp/4.5.0": { + "sha512": "cM59oMKAOxvdv76bdmaKPy5hfj+oR+zxikWoueEB7CwTko7mt9sVKZI8Qxlov0C/LuKEG+WQwifepqL3vuTiBQ==", + "type": "package", + "path": "microsoft.codeanalysis.csharp/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.pdb", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.xml", + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll", + "microsoft.codeanalysis.csharp.4.5.0.nupkg.sha512", + "microsoft.codeanalysis.csharp.nuspec" + ] + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces/4.5.0": { + "sha512": "h74wTpmGOp4yS4hj+EvNzEiPgg/KVs2wmSfTZ81upJZOtPkJsVkgfsgtxxqmAeapjT/vLKfmYV0bS8n5MNVP+g==", + "type": "package", + "path": "microsoft.codeanalysis.csharp.workspaces/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.pdb", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.xml", + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "microsoft.codeanalysis.csharp.workspaces.4.5.0.nupkg.sha512", + "microsoft.codeanalysis.csharp.workspaces.nuspec" + ] + }, + "Microsoft.CodeAnalysis.Workspaces.Common/4.5.0": { + "sha512": "l4dDRmGELXG72XZaonnOeORyD/T5RpEu5LGHOUIhnv+MmUWDY/m1kWXGwtcgQ5CJ5ynkFiRnIYzTKXYjUs7rbw==", + "type": "package", + "path": "microsoft.codeanalysis.workspaces.common/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.pdb", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.xml", + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "microsoft.codeanalysis.workspaces.common.4.5.0.nupkg.sha512", + "microsoft.codeanalysis.workspaces.common.nuspec" + ] + }, + "Microsoft.CodeCoverage/17.14.1": { + "sha512": "pmTrhfFIoplzFVbhVwUquT+77CbGH+h4/3mBpdmIlYtBi9nAB+kKI6dN3A/nV4DFi3wLLx/BlHIPK+MkbQ6Tpg==", + "type": "package", + "path": "microsoft.codecoverage/17.14.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.txt", + "build/netstandard2.0/CodeCoverage/CodeCoverage.config", + "build/netstandard2.0/CodeCoverage/CodeCoverage.exe", + "build/netstandard2.0/CodeCoverage/Cov_x86.config", + "build/netstandard2.0/CodeCoverage/amd64/CodeCoverage.exe", + "build/netstandard2.0/CodeCoverage/amd64/Cov_x64.config", + "build/netstandard2.0/CodeCoverage/amd64/covrun64.dll", + "build/netstandard2.0/CodeCoverage/amd64/msdia140.dll", + "build/netstandard2.0/CodeCoverage/arm64/Cov_arm64.config", + "build/netstandard2.0/CodeCoverage/arm64/covrunarm64.dll", + "build/netstandard2.0/CodeCoverage/arm64/msdia140.dll", + "build/netstandard2.0/CodeCoverage/codecoveragemessages.dll", + "build/netstandard2.0/CodeCoverage/coreclr/Microsoft.VisualStudio.CodeCoverage.Shim.dll", + "build/netstandard2.0/CodeCoverage/covrun32.dll", + "build/netstandard2.0/CodeCoverage/msdia140.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Core.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Instrumentation.Core.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Instrumentation.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Interprocess.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.props", + "build/netstandard2.0/Microsoft.CodeCoverage.targets", + "build/netstandard2.0/Microsoft.DiaSymReader.dll", + "build/netstandard2.0/Microsoft.VisualStudio.TraceDataCollector.dll", + "build/netstandard2.0/Mono.Cecil.Pdb.dll", + "build/netstandard2.0/Mono.Cecil.Rocks.dll", + "build/netstandard2.0/Mono.Cecil.dll", + "build/netstandard2.0/ThirdPartyNotices.txt", + "build/netstandard2.0/alpine/x64/Cov_x64.config", + "build/netstandard2.0/alpine/x64/libCoverageInstrumentationMethod.so", + "build/netstandard2.0/alpine/x64/libInstrumentationEngine.so", + "build/netstandard2.0/arm64/MicrosoftInstrumentationEngine_arm64.dll", + "build/netstandard2.0/cs/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/de/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/es/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/fr/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/it/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ja/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ko/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/macos/x64/Cov_x64.config", + "build/netstandard2.0/macos/x64/libCoverageInstrumentationMethod.dylib", + "build/netstandard2.0/macos/x64/libInstrumentationEngine.dylib", + "build/netstandard2.0/pl/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/pt-BR/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ru/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/tr/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ubuntu/x64/Cov_x64.config", + "build/netstandard2.0/ubuntu/x64/libCoverageInstrumentationMethod.so", + "build/netstandard2.0/ubuntu/x64/libInstrumentationEngine.so", + "build/netstandard2.0/x64/MicrosoftInstrumentationEngine_x64.dll", + "build/netstandard2.0/x86/MicrosoftInstrumentationEngine_x86.dll", + "build/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "lib/net462/Microsoft.VisualStudio.CodeCoverage.Shim.dll", + "lib/net8.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll", + "microsoft.codecoverage.17.14.1.nupkg.sha512", + "microsoft.codecoverage.nuspec" + ] + }, + "Microsoft.Data.Sqlite.Core/8.0.6": { + "sha512": "umhZ0ZF2RI81rGFTnYmCxI+Euj4Aqe/6Y4+8CxN9OVJNGDNIqB5laJ3wxQTU8zXCcm2k9F7FL+/6RVoOT4z1Fw==", + "type": "package", + "path": "microsoft.data.sqlite.core/8.0.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "lib/net6.0/Microsoft.Data.Sqlite.dll", + "lib/net6.0/Microsoft.Data.Sqlite.xml", + "lib/net8.0/Microsoft.Data.Sqlite.dll", + "lib/net8.0/Microsoft.Data.Sqlite.xml", + "lib/netstandard2.0/Microsoft.Data.Sqlite.dll", + "lib/netstandard2.0/Microsoft.Data.Sqlite.xml", + "microsoft.data.sqlite.core.8.0.6.nupkg.sha512", + "microsoft.data.sqlite.core.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore/8.0.18": { + "sha512": "LBc07vlgPxEXmjF0Kgn1S0mip3KLDPVD1OQOFu+4Mfpg1Z8OPMJ82MVCkqek1Ex2WeCzVGbNI9nRXcepHB+48g==", + "type": "package", + "path": "microsoft.entityframeworkcore/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props", + "lib/net8.0/Microsoft.EntityFrameworkCore.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.xml", + "microsoft.entityframeworkcore.8.0.18.nupkg.sha512", + "microsoft.entityframeworkcore.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Abstractions/8.0.18": { + "sha512": "aQGpxj0/RKXhSqDFbWENQgOg6WQH3z5Dezu3VBXaTCBHE6hAWQIZmmqdpO1k+lkANsoCSwPJZ4iFRqPPZXBXzg==", + "type": "package", + "path": "microsoft.entityframeworkcore.abstractions/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.xml", + "microsoft.entityframeworkcore.abstractions.8.0.18.nupkg.sha512", + "microsoft.entityframeworkcore.abstractions.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Analyzers/8.0.18": { + "sha512": "aYkyWRkb+o9++mtIWn5XSYPVND5N9mFFfvdmBX1s6kCss6XTaZsFXf8QjvaiXAcGblp/HoYzS5lusx0ZqeFxzQ==", + "type": "package", + "path": "microsoft.entityframeworkcore.analyzers/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "analyzers/dotnet/cs/Microsoft.EntityFrameworkCore.Analyzers.dll", + "docs/PACKAGE.md", + "lib/netstandard2.0/_._", + "microsoft.entityframeworkcore.analyzers.8.0.18.nupkg.sha512", + "microsoft.entityframeworkcore.analyzers.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Design/8.0.18": { + "sha512": "ONya9HGDtULSfoxld0ir12lxOxX2zp4TRYp6pO3wwXtWSYK3bU1kUSZMIJdeewznYcOfpCJVuSJVch6Y5xtIIQ==", + "type": "package", + "path": "microsoft.entityframeworkcore.design/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "build/net8.0/Microsoft.EntityFrameworkCore.Design.props", + "lib/net8.0/Microsoft.EntityFrameworkCore.Design.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.Design.xml", + "microsoft.entityframeworkcore.design.8.0.18.nupkg.sha512", + "microsoft.entityframeworkcore.design.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Relational/8.0.18": { + "sha512": "SL067ITd6QfDF9wNsNtGm3fROpnv3SNrOY3Fjb+efEUnKn5NI0sUitrtpUim+t1DtCJIs7qgmyCPdD3zjSt4Xw==", + "type": "package", + "path": "microsoft.entityframeworkcore.relational/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.xml", + "microsoft.entityframeworkcore.relational.8.0.18.nupkg.sha512", + "microsoft.entityframeworkcore.relational.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Sqlite/8.0.6": { + "sha512": "nC4cZN4zReTb22qd9WDU0eDmlXvkyf2g2pqQ3VIHJbkpJcdWSY/PDgwGpbpShsVcAjXbkjGiUcv9aGwa61xQPw==", + "type": "package", + "path": "microsoft.entityframeworkcore.sqlite/8.0.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "lib/net8.0/_._", + "microsoft.entityframeworkcore.sqlite.8.0.6.nupkg.sha512", + "microsoft.entityframeworkcore.sqlite.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Sqlite.Core/8.0.6": { + "sha512": "87xfPtqSouxWWdynYZv/rubd0rOUeiN9+XeoMWQzpZm/5svH1TuvzFODGIY0zKuXS18NiOFyHl9N6///eaEs/Q==", + "type": "package", + "path": "microsoft.entityframeworkcore.sqlite.core/8.0.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "lib/net8.0/Microsoft.EntityFrameworkCore.Sqlite.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.Sqlite.xml", + "microsoft.entityframeworkcore.sqlite.core.8.0.6.nupkg.sha512", + "microsoft.entityframeworkcore.sqlite.core.nuspec" + ] + }, + "Microsoft.Extensions.ApiDescription.Server/8.0.0": { + "sha512": "jDM3a95WerM8g6IcMiBXq1qRS9dqmEUpgnCk2DeMWpPkYtp1ia+CkXabOnK93JmhVlUmv8l9WMPsCSUm+WqkIA==", + "type": "package", + "path": "microsoft.extensions.apidescription.server/8.0.0", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "build/Microsoft.Extensions.ApiDescription.Server.props", + "build/Microsoft.Extensions.ApiDescription.Server.targets", + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.props", + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.targets", + "microsoft.extensions.apidescription.server.8.0.0.nupkg.sha512", + "microsoft.extensions.apidescription.server.nuspec", + "tools/Newtonsoft.Json.dll", + "tools/dotnet-getdocument.deps.json", + "tools/dotnet-getdocument.dll", + "tools/dotnet-getdocument.runtimeconfig.json", + "tools/net462-x86/GetDocument.Insider.exe", + "tools/net462-x86/GetDocument.Insider.exe.config", + "tools/net462-x86/System.Buffers.dll", + "tools/net462-x86/System.Diagnostics.DiagnosticSource.dll", + "tools/net462-x86/System.Memory.dll", + "tools/net462-x86/System.Numerics.Vectors.dll", + "tools/net462-x86/System.Runtime.CompilerServices.Unsafe.dll", + "tools/net462/GetDocument.Insider.exe", + "tools/net462/GetDocument.Insider.exe.config", + "tools/net462/System.Buffers.dll", + "tools/net462/System.Diagnostics.DiagnosticSource.dll", + "tools/net462/System.Memory.dll", + "tools/net462/System.Numerics.Vectors.dll", + "tools/net462/System.Runtime.CompilerServices.Unsafe.dll", + "tools/net8.0/GetDocument.Insider.deps.json", + "tools/net8.0/GetDocument.Insider.dll", + "tools/net8.0/GetDocument.Insider.exe", + "tools/net8.0/GetDocument.Insider.runtimeconfig.json", + "tools/net8.0/Microsoft.AspNetCore.Connections.Abstractions.dll", + "tools/net8.0/Microsoft.AspNetCore.Connections.Abstractions.xml", + "tools/net8.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll", + "tools/net8.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.xml", + "tools/net8.0/Microsoft.AspNetCore.Http.Features.dll", + "tools/net8.0/Microsoft.AspNetCore.Http.Features.xml", + "tools/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "tools/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "tools/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "tools/net8.0/Microsoft.Extensions.Features.dll", + "tools/net8.0/Microsoft.Extensions.Features.xml", + "tools/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "tools/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "tools/net8.0/Microsoft.Extensions.Logging.Abstractions.dll", + "tools/net8.0/Microsoft.Extensions.Options.dll", + "tools/net8.0/Microsoft.Extensions.Primitives.dll", + "tools/net8.0/Microsoft.Net.Http.Headers.dll", + "tools/net8.0/Microsoft.Net.Http.Headers.xml", + "tools/net8.0/System.IO.Pipelines.dll", + "tools/netcoreapp2.1/GetDocument.Insider.deps.json", + "tools/netcoreapp2.1/GetDocument.Insider.dll", + "tools/netcoreapp2.1/GetDocument.Insider.runtimeconfig.json", + "tools/netcoreapp2.1/System.Diagnostics.DiagnosticSource.dll" + ] + }, + "Microsoft.Extensions.Caching.Abstractions/8.0.0": { + "sha512": "3KuSxeHoNYdxVYfg2IRZCThcrlJ1XJqIXkAWikCsbm5C/bCjv7G0WoKDyuR98Q+T607QT2Zl5GsbGRkENcV2yQ==", + "type": "package", + "path": "microsoft.extensions.caching.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Caching.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.xml", + "microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.caching.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Caching.Memory/8.0.1": { + "sha512": "HFDnhYLccngrzyGgHkjEDU5FMLn4MpOsr5ElgsBMC4yx6lJh4jeWO7fHS8+TXPq+dgxCmUa/Trl8svObmwW4QA==", + "type": "package", + "path": "microsoft.extensions.caching.memory/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Caching.Memory.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Memory.targets", + "lib/net462/Microsoft.Extensions.Caching.Memory.dll", + "lib/net462/Microsoft.Extensions.Caching.Memory.xml", + "lib/net6.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/net6.0/Microsoft.Extensions.Caching.Memory.xml", + "lib/net7.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/net7.0/Microsoft.Extensions.Caching.Memory.xml", + "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/net8.0/Microsoft.Extensions.Caching.Memory.xml", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.xml", + "microsoft.extensions.caching.memory.8.0.1.nupkg.sha512", + "microsoft.extensions.caching.memory.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration/8.0.0": { + "sha512": "0J/9YNXTMWSZP2p2+nvl8p71zpSwokZXZuJW+VjdErkegAnFdO1XlqtA62SJtgVYHdKu3uPxJHcMR/r35HwFBA==", + "type": "package", + "path": "microsoft.extensions.configuration/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.targets", + "lib/net462/Microsoft.Extensions.Configuration.dll", + "lib/net462/Microsoft.Extensions.Configuration.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.xml", + "microsoft.extensions.configuration.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "sha512": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==", + "type": "package", + "path": "microsoft.extensions.configuration.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.Binder/8.0.2": { + "sha512": "7IQhGK+wjyGrNsPBjJcZwWAr+Wf6D4+TwOptUt77bWtgNkiV8tDEbhFS+dDamtQFZ2X7kWG9m71iZQRj2x3zgQ==", + "type": "package", + "path": "microsoft.extensions.configuration.binder/8.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/cs/Microsoft.Extensions.Configuration.Binder.SourceGeneration.dll", + "analyzers/dotnet/cs/cs/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/de/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/es/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/fr/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/it/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/ja/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/ko/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/pl/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/pt-BR/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/ru/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/tr/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/zh-Hans/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/zh-Hant/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets", + "lib/net462/Microsoft.Extensions.Configuration.Binder.dll", + "lib/net462/Microsoft.Extensions.Configuration.Binder.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.Binder.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.Binder.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.xml", + "microsoft.extensions.configuration.binder.8.0.2.nupkg.sha512", + "microsoft.extensions.configuration.binder.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.CommandLine/8.0.0": { + "sha512": "NZuZMz3Q8Z780nKX3ifV1fE7lS+6pynDHK71OfU4OZ1ItgvDOhyOC7E6z+JMZrAj63zRpwbdldYFk499t3+1dQ==", + "type": "package", + "path": "microsoft.extensions.configuration.commandline/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.CommandLine.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.CommandLine.targets", + "lib/net462/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/net462/Microsoft.Extensions.Configuration.CommandLine.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.CommandLine.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.CommandLine.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.CommandLine.xml", + "microsoft.extensions.configuration.commandline.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.commandline.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables/8.0.0": { + "sha512": "plvZ0ZIpq+97gdPNNvhwvrEZ92kNml9hd1pe3idMA7svR0PztdzVLkoWLcRFgySYXUJc3kSM3Xw3mNFMo/bxRA==", + "type": "package", + "path": "microsoft.extensions.configuration.environmentvariables/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.EnvironmentVariables.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.targets", + "lib/net462/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/net462/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "microsoft.extensions.configuration.environmentvariables.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.environmentvariables.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.FileExtensions/8.0.1": { + "sha512": "EJzSNO9oaAXnTdtdNO6npPRsIIeZCBSNmdQ091VDO7fBiOtJAAeEq6dtrVXIi3ZyjC5XRSAtVvF8SzcneRHqKQ==", + "type": "package", + "path": "microsoft.extensions.configuration.fileextensions/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.FileExtensions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.FileExtensions.targets", + "lib/net462/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/net462/Microsoft.Extensions.Configuration.FileExtensions.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.FileExtensions.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.FileExtensions.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.xml", + "microsoft.extensions.configuration.fileextensions.8.0.1.nupkg.sha512", + "microsoft.extensions.configuration.fileextensions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.Json/8.0.1": { + "sha512": "L89DLNuimOghjV3tLx0ArFDwVEJD6+uGB3BMCMX01kaLzXkaXHb2021xOMl2QOxUxbdePKUZsUY7n2UUkycjRg==", + "type": "package", + "path": "microsoft.extensions.configuration.json/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.Json.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.Json.targets", + "lib/net462/Microsoft.Extensions.Configuration.Json.dll", + "lib/net462/Microsoft.Extensions.Configuration.Json.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.Json.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.Json.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.Json.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.Json.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.Json.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.Json.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Json.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Json.xml", + "lib/netstandard2.1/Microsoft.Extensions.Configuration.Json.dll", + "lib/netstandard2.1/Microsoft.Extensions.Configuration.Json.xml", + "microsoft.extensions.configuration.json.8.0.1.nupkg.sha512", + "microsoft.extensions.configuration.json.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.UserSecrets/8.0.1": { + "sha512": "7tYqdPPpAK+3jO9d5LTuCK2VxrEdf85Ol4trUr6ds4jclBecadWZ/RyPCbNjfbN5iGTfUnD/h65TOQuqQv2c+A==", + "type": "package", + "path": "microsoft.extensions.configuration.usersecrets/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.UserSecrets.targets", + "buildTransitive/net462/Microsoft.Extensions.Configuration.UserSecrets.props", + "buildTransitive/net462/Microsoft.Extensions.Configuration.UserSecrets.targets", + "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.props", + "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.UserSecrets.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.props", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.targets", + "lib/net462/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/net462/Microsoft.Extensions.Configuration.UserSecrets.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.UserSecrets.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.UserSecrets.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.xml", + "microsoft.extensions.configuration.usersecrets.8.0.1.nupkg.sha512", + "microsoft.extensions.configuration.usersecrets.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyInjection/8.0.1": { + "sha512": "BmANAnR5Xd4Oqw7yQ75xOAYODybZQRzdeNucg7kS5wWKd2PNnMdYtJ2Vciy0QLylRmv42DGl5+AFL9izA6F1Rw==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets", + "lib/net462/Microsoft.Extensions.DependencyInjection.dll", + "lib/net462/Microsoft.Extensions.DependencyInjection.xml", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", + "microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512", + "microsoft.extensions.dependencyinjection.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": { + "sha512": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets", + "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512", + "microsoft.extensions.dependencyinjection.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyModel/8.0.2": { + "sha512": "mUBDZZRgZrSyFOsJ2qJJ9fXfqd/kXJwf3AiDoqLD9m6TjY5OO/vLNOb9fb4juC0487eq4hcGN/M2Rh/CKS7QYw==", + "type": "package", + "path": "microsoft.extensions.dependencymodel/8.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyModel.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyModel.targets", + "lib/net462/Microsoft.Extensions.DependencyModel.dll", + "lib/net462/Microsoft.Extensions.DependencyModel.xml", + "lib/net6.0/Microsoft.Extensions.DependencyModel.dll", + "lib/net6.0/Microsoft.Extensions.DependencyModel.xml", + "lib/net7.0/Microsoft.Extensions.DependencyModel.dll", + "lib/net7.0/Microsoft.Extensions.DependencyModel.xml", + "lib/net8.0/Microsoft.Extensions.DependencyModel.dll", + "lib/net8.0/Microsoft.Extensions.DependencyModel.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyModel.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyModel.xml", + "microsoft.extensions.dependencymodel.8.0.2.nupkg.sha512", + "microsoft.extensions.dependencymodel.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Diagnostics/8.0.1": { + "sha512": "doVPCUUCY7c6LhBsEfiy3W1bvS7Mi6LkfQMS8nlC22jZWNxBv8VO8bdfeyvpYFst6Kxqk7HBC6lytmEoBssvSQ==", + "type": "package", + "path": "microsoft.extensions.diagnostics/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Diagnostics.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Diagnostics.targets", + "lib/net462/Microsoft.Extensions.Diagnostics.dll", + "lib/net462/Microsoft.Extensions.Diagnostics.xml", + "lib/net6.0/Microsoft.Extensions.Diagnostics.dll", + "lib/net6.0/Microsoft.Extensions.Diagnostics.xml", + "lib/net7.0/Microsoft.Extensions.Diagnostics.dll", + "lib/net7.0/Microsoft.Extensions.Diagnostics.xml", + "lib/net8.0/Microsoft.Extensions.Diagnostics.dll", + "lib/net8.0/Microsoft.Extensions.Diagnostics.xml", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.dll", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.xml", + "microsoft.extensions.diagnostics.8.0.1.nupkg.sha512", + "microsoft.extensions.diagnostics.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Diagnostics.Abstractions/8.0.1": { + "sha512": "elH2vmwNmsXuKmUeMQ4YW9ldXiF+gSGDgg1vORksob5POnpaI6caj1Hu8zaYbEuibhqCoWg0YRWDazBY3zjBfg==", + "type": "package", + "path": "microsoft.extensions.diagnostics.abstractions/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Diagnostics.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Diagnostics.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "microsoft.extensions.diagnostics.abstractions.8.0.1.nupkg.sha512", + "microsoft.extensions.diagnostics.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { + "sha512": "ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", + "type": "package", + "path": "microsoft.extensions.fileproviders.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.FileProviders.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.FileProviders.Abstractions.targets", + "lib/net462/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/net462/Microsoft.Extensions.FileProviders.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.FileProviders.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.xml", + "microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.fileproviders.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.FileProviders.Physical/8.0.0": { + "sha512": "UboiXxpPUpwulHvIAVE36Knq0VSHaAmfrFkegLyBZeaADuKezJ/AIXYAW8F5GBlGk/VaibN2k/Zn1ca8YAfVdA==", + "type": "package", + "path": "microsoft.extensions.fileproviders.physical/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.FileProviders.Physical.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.FileProviders.Physical.targets", + "lib/net462/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/net462/Microsoft.Extensions.FileProviders.Physical.xml", + "lib/net6.0/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/net6.0/Microsoft.Extensions.FileProviders.Physical.xml", + "lib/net7.0/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/net7.0/Microsoft.Extensions.FileProviders.Physical.xml", + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.xml", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.xml", + "microsoft.extensions.fileproviders.physical.8.0.0.nupkg.sha512", + "microsoft.extensions.fileproviders.physical.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.FileSystemGlobbing/8.0.0": { + "sha512": "OK+670i7esqlQrPjdIKRbsyMCe9g5kSLpRRQGSr4Q58AOYEe/hCnfLZprh7viNisSUUQZmMrbbuDaIrP+V1ebQ==", + "type": "package", + "path": "microsoft.extensions.filesystemglobbing/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.FileSystemGlobbing.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.FileSystemGlobbing.targets", + "lib/net462/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/net462/Microsoft.Extensions.FileSystemGlobbing.xml", + "lib/net6.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/net6.0/Microsoft.Extensions.FileSystemGlobbing.xml", + "lib/net7.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/net7.0/Microsoft.Extensions.FileSystemGlobbing.xml", + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.xml", + "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.xml", + "microsoft.extensions.filesystemglobbing.8.0.0.nupkg.sha512", + "microsoft.extensions.filesystemglobbing.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Hosting/8.0.1": { + "sha512": "bP9EEkHBEfjgYiG8nUaXqMk/ujwJrffOkNPP7onpRMO8R+OUSESSP4xHkCAXgYZ1COP2Q9lXlU5gkMFh20gRuw==", + "type": "package", + "path": "microsoft.extensions.hosting/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Hosting.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Hosting.targets", + "lib/net462/Microsoft.Extensions.Hosting.dll", + "lib/net462/Microsoft.Extensions.Hosting.xml", + "lib/net6.0/Microsoft.Extensions.Hosting.dll", + "lib/net6.0/Microsoft.Extensions.Hosting.xml", + "lib/net7.0/Microsoft.Extensions.Hosting.dll", + "lib/net7.0/Microsoft.Extensions.Hosting.xml", + "lib/net8.0/Microsoft.Extensions.Hosting.dll", + "lib/net8.0/Microsoft.Extensions.Hosting.xml", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.dll", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.xml", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.dll", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.xml", + "microsoft.extensions.hosting.8.0.1.nupkg.sha512", + "microsoft.extensions.hosting.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Hosting.Abstractions/8.0.1": { + "sha512": "nHwq9aPBdBPYXPti6wYEEfgXddfBrYC+CQLn+qISiwQq5tpfaqDZSKOJNxoe9rfQxGf1c+2wC/qWFe1QYJPYqw==", + "type": "package", + "path": "microsoft.extensions.hosting.abstractions/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Hosting.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Hosting.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.Abstractions.xml", + "microsoft.extensions.hosting.abstractions.8.0.1.nupkg.sha512", + "microsoft.extensions.hosting.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging/8.0.1": { + "sha512": "4x+pzsQEbqxhNf1QYRr5TDkLP9UsLT3A6MdRKDDEgrW7h1ljiEPgTNhKYUhNCCAaVpQECVQ+onA91PTPnIp6Lw==", + "type": "package", + "path": "microsoft.extensions.logging/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.targets", + "lib/net462/Microsoft.Extensions.Logging.dll", + "lib/net462/Microsoft.Extensions.Logging.xml", + "lib/net6.0/Microsoft.Extensions.Logging.dll", + "lib/net6.0/Microsoft.Extensions.Logging.xml", + "lib/net7.0/Microsoft.Extensions.Logging.dll", + "lib/net7.0/Microsoft.Extensions.Logging.xml", + "lib/net8.0/Microsoft.Extensions.Logging.dll", + "lib/net8.0/Microsoft.Extensions.Logging.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", + "lib/netstandard2.1/Microsoft.Extensions.Logging.dll", + "lib/netstandard2.1/Microsoft.Extensions.Logging.xml", + "microsoft.extensions.logging.8.0.1.nupkg.sha512", + "microsoft.extensions.logging.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Abstractions/8.0.2": { + "sha512": "nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==", + "type": "package", + "path": "microsoft.extensions.logging.abstractions/8.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", + "microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512", + "microsoft.extensions.logging.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Configuration/8.0.1": { + "sha512": "QWwTrsgOnJMmn+XUslm8D2H1n3PkP/u/v52FODtyBc/k4W9r3i2vcXXeeX/upnzllJYRRbrzVzT0OclfNJtBJA==", + "type": "package", + "path": "microsoft.extensions.logging.configuration/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.Configuration.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Configuration.targets", + "lib/net462/Microsoft.Extensions.Logging.Configuration.dll", + "lib/net462/Microsoft.Extensions.Logging.Configuration.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Configuration.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Configuration.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Configuration.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Configuration.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Configuration.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Configuration.xml", + "microsoft.extensions.logging.configuration.8.0.1.nupkg.sha512", + "microsoft.extensions.logging.configuration.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Console/8.0.1": { + "sha512": "uzcg/5U2eLyn5LIKlERkdSxw6VPC1yydnOSQiRRWGBGN3kphq3iL4emORzrojScDmxRhv49gp5BI8U3Dz7y4iA==", + "type": "package", + "path": "microsoft.extensions.logging.console/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.Console.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Console.targets", + "lib/net462/Microsoft.Extensions.Logging.Console.dll", + "lib/net462/Microsoft.Extensions.Logging.Console.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Console.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Console.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Console.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Console.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Console.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Console.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Console.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Console.xml", + "microsoft.extensions.logging.console.8.0.1.nupkg.sha512", + "microsoft.extensions.logging.console.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Debug/8.0.1": { + "sha512": "B8hqNuYudC2RB+L/DI33uO4rf5by41fZVdcVL2oZj0UyoAZqnwTwYHp1KafoH4nkl1/23piNeybFFASaV2HkFg==", + "type": "package", + "path": "microsoft.extensions.logging.debug/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.Debug.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Debug.targets", + "lib/net462/Microsoft.Extensions.Logging.Debug.dll", + "lib/net462/Microsoft.Extensions.Logging.Debug.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Debug.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Debug.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Debug.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Debug.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Debug.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Debug.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Debug.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Debug.xml", + "microsoft.extensions.logging.debug.8.0.1.nupkg.sha512", + "microsoft.extensions.logging.debug.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.EventLog/8.0.1": { + "sha512": "ZD1m4GXoxcZeDJIq8qePKj+QAWeQNO/OG8skvrOG8RQfxLp9MAKRoliTc27xanoNUzeqvX5HhS/I7c0BvwAYUg==", + "type": "package", + "path": "microsoft.extensions.logging.eventlog/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.EventLog.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.EventLog.targets", + "lib/net462/Microsoft.Extensions.Logging.EventLog.dll", + "lib/net462/Microsoft.Extensions.Logging.EventLog.xml", + "lib/net6.0/Microsoft.Extensions.Logging.EventLog.dll", + "lib/net6.0/Microsoft.Extensions.Logging.EventLog.xml", + "lib/net7.0/Microsoft.Extensions.Logging.EventLog.dll", + "lib/net7.0/Microsoft.Extensions.Logging.EventLog.xml", + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll", + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.EventLog.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.EventLog.xml", + "microsoft.extensions.logging.eventlog.8.0.1.nupkg.sha512", + "microsoft.extensions.logging.eventlog.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.EventSource/8.0.1": { + "sha512": "YMXMAla6B6sEf/SnfZYTty633Ool3AH7KOw2LOaaEqwSo2piK4f7HMtzyc3CNiipDnq1fsUSuG5Oc7ZzpVy8WQ==", + "type": "package", + "path": "microsoft.extensions.logging.eventsource/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.EventSource.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.EventSource.targets", + "lib/net462/Microsoft.Extensions.Logging.EventSource.dll", + "lib/net462/Microsoft.Extensions.Logging.EventSource.xml", + "lib/net6.0/Microsoft.Extensions.Logging.EventSource.dll", + "lib/net6.0/Microsoft.Extensions.Logging.EventSource.xml", + "lib/net7.0/Microsoft.Extensions.Logging.EventSource.dll", + "lib/net7.0/Microsoft.Extensions.Logging.EventSource.xml", + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll", + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.EventSource.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.EventSource.xml", + "microsoft.extensions.logging.eventsource.8.0.1.nupkg.sha512", + "microsoft.extensions.logging.eventsource.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Options/8.0.2": { + "sha512": "dWGKvhFybsaZpGmzkGCbNNwBD1rVlWzrZKANLW/CcbFJpCEceMCGzT7zZwHOGBCbwM0SzBuceMj5HN1LKV1QqA==", + "type": "package", + "path": "microsoft.extensions.options/8.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Options.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "buildTransitive/net461/Microsoft.Extensions.Options.targets", + "buildTransitive/net462/Microsoft.Extensions.Options.targets", + "buildTransitive/net6.0/Microsoft.Extensions.Options.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets", + "lib/net462/Microsoft.Extensions.Options.dll", + "lib/net462/Microsoft.Extensions.Options.xml", + "lib/net6.0/Microsoft.Extensions.Options.dll", + "lib/net6.0/Microsoft.Extensions.Options.xml", + "lib/net7.0/Microsoft.Extensions.Options.dll", + "lib/net7.0/Microsoft.Extensions.Options.xml", + "lib/net8.0/Microsoft.Extensions.Options.dll", + "lib/net8.0/Microsoft.Extensions.Options.xml", + "lib/netstandard2.0/Microsoft.Extensions.Options.dll", + "lib/netstandard2.0/Microsoft.Extensions.Options.xml", + "lib/netstandard2.1/Microsoft.Extensions.Options.dll", + "lib/netstandard2.1/Microsoft.Extensions.Options.xml", + "microsoft.extensions.options.8.0.2.nupkg.sha512", + "microsoft.extensions.options.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": { + "sha512": "0f4DMRqEd50zQh+UyJc+/HiBsZ3vhAQALgdkcQEalSH1L2isdC7Yj54M3cyo5e+BeO5fcBQ7Dxly8XiBBcvRgw==", + "type": "package", + "path": "microsoft.extensions.options.configurationextensions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Options.ConfigurationExtensions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.ConfigurationExtensions.targets", + "lib/net462/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/net462/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "lib/net6.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/net6.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "lib/net7.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/net7.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512", + "microsoft.extensions.options.configurationextensions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Primitives/8.0.0": { + "sha512": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==", + "type": "package", + "path": "microsoft.extensions.primitives/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Primitives.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets", + "lib/net462/Microsoft.Extensions.Primitives.dll", + "lib/net462/Microsoft.Extensions.Primitives.xml", + "lib/net6.0/Microsoft.Extensions.Primitives.dll", + "lib/net6.0/Microsoft.Extensions.Primitives.xml", + "lib/net7.0/Microsoft.Extensions.Primitives.dll", + "lib/net7.0/Microsoft.Extensions.Primitives.xml", + "lib/net8.0/Microsoft.Extensions.Primitives.dll", + "lib/net8.0/Microsoft.Extensions.Primitives.xml", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", + "microsoft.extensions.primitives.8.0.0.nupkg.sha512", + "microsoft.extensions.primitives.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.NET.Test.Sdk/17.14.1": { + "sha512": "HJKqKOE+vshXra2aEHpi2TlxYX7Z9VFYkr+E5rwEvHC8eIXiyO+K9kNm8vmNom3e2rA56WqxU+/N9NJlLGXsJQ==", + "type": "package", + "path": "microsoft.net.test.sdk/17.14.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "build/net462/Microsoft.NET.Test.Sdk.props", + "build/net462/Microsoft.NET.Test.Sdk.targets", + "build/net8.0/Microsoft.NET.Test.Sdk.Program.cs", + "build/net8.0/Microsoft.NET.Test.Sdk.Program.fs", + "build/net8.0/Microsoft.NET.Test.Sdk.Program.vb", + "build/net8.0/Microsoft.NET.Test.Sdk.props", + "build/net8.0/Microsoft.NET.Test.Sdk.targets", + "build/netcoreapp2.0/Microsoft.NET.Test.Sdk.props", + "build/netcoreapp2.0/Microsoft.NET.Test.Sdk.targets", + "build/netstandard2.0/Microsoft.NET.Test.Sdk.props", + "build/netstandard2.0/Microsoft.NET.Test.Sdk.targets", + "buildMultiTargeting/net462/Microsoft.NET.Test.Sdk.props", + "buildMultiTargeting/net8.0/Microsoft.NET.Test.Sdk.props", + "buildMultiTargeting/netcoreapp2.0/Microsoft.NET.Test.Sdk.props", + "buildMultiTargeting/netcoreapp2.0/Microsoft.NET.Test.Sdk.targets", + "buildMultiTargeting/netstandard2.0/Microsoft.NET.Test.Sdk.props", + "buildMultiTargeting/netstandard2.0/Microsoft.NET.Test.Sdk.targets", + "lib/native/_._", + "lib/net462/_._", + "lib/net8.0/_._", + "microsoft.net.test.sdk.17.14.1.nupkg.sha512", + "microsoft.net.test.sdk.nuspec" + ] + }, + "Microsoft.OpenApi/1.6.23": { + "sha512": "tZ1I0KXnn98CWuV8cpI247A17jaY+ILS9vvF7yhI0uPPEqF4P1d7BWL5Uwtel10w9NucllHB3nTkfYTAcHAh8g==", + "type": "package", + "path": "microsoft.openapi/1.6.23", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/netstandard2.0/Microsoft.OpenApi.dll", + "lib/netstandard2.0/Microsoft.OpenApi.pdb", + "lib/netstandard2.0/Microsoft.OpenApi.xml", + "microsoft.openapi.1.6.23.nupkg.sha512", + "microsoft.openapi.nuspec" + ] + }, + "Microsoft.TestPlatform.ObjectModel/17.14.1": { + "sha512": "xTP1W6Mi6SWmuxd3a+jj9G9UoC850WGwZUps1Wah9r1ZxgXhdJfj1QqDLJkFjHDCvN42qDL2Ps5KjQYWUU0zcQ==", + "type": "package", + "path": "microsoft.testplatform.objectmodel/17.14.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/net462/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/net462/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/net462/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/net462/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/net8.0/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/net8.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/netstandard2.0/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/netstandard2.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/netstandard2.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "microsoft.testplatform.objectmodel.17.14.1.nupkg.sha512", + "microsoft.testplatform.objectmodel.nuspec" + ] + }, + "Microsoft.TestPlatform.TestHost/17.14.1": { + "sha512": "d78LPzGKkJwsJXAQwsbJJ7LE7D1wB+rAyhHHAaODF+RDSQ0NgMjDFkSA1Djw18VrxO76GlKAjRUhl+H8NL8Z+Q==", + "type": "package", + "path": "microsoft.testplatform.testhost/17.14.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.txt", + "build/net8.0/Microsoft.TestPlatform.TestHost.props", + "build/net8.0/Microsoft.TestPlatform.TestHost.targets", + "build/net8.0/x64/testhost.dll", + "build/net8.0/x64/testhost.exe", + "build/net8.0/x86/testhost.x86.dll", + "build/net8.0/x86/testhost.x86.exe", + "lib/net462/_._", + "lib/net8.0/Microsoft.TestPlatform.CommunicationUtilities.dll", + "lib/net8.0/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/net8.0/Microsoft.TestPlatform.CrossPlatEngine.dll", + "lib/net8.0/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/net8.0/Microsoft.TestPlatform.Utilities.dll", + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.Common.dll", + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/net8.0/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/testhost.deps.json", + "lib/net8.0/testhost.dll", + "lib/net8.0/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/x64/msdia140.dll", + "lib/net8.0/x86/msdia140.dll", + "lib/net8.0/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "microsoft.testplatform.testhost.17.14.1.nupkg.sha512", + "microsoft.testplatform.testhost.nuspec" + ] + }, + "Mono.TextTemplating/2.2.1": { + "sha512": "KZYeKBET/2Z0gY1WlTAK7+RHTl7GSbtvTLDXEZZojUdAPqpQNDL6tHv7VUpqfX5VEOh+uRGKaZXkuD253nEOBQ==", + "type": "package", + "path": "mono.texttemplating/2.2.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net472/Mono.TextTemplating.dll", + "lib/netstandard2.0/Mono.TextTemplating.dll", + "mono.texttemplating.2.2.1.nupkg.sha512", + "mono.texttemplating.nuspec" + ] + }, + "Moq/4.20.72": { + "sha512": "EA55cjyNn8eTNWrgrdZJH5QLFp2L43oxl1tlkoYUKIE9pRwL784OWiTXeCV5ApS+AMYEAlt7Fo03A2XfouvHmQ==", + "type": "package", + "path": "moq/4.20.72", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "icon.png", + "lib/net462/Moq.dll", + "lib/net6.0/Moq.dll", + "lib/netstandard2.0/Moq.dll", + "lib/netstandard2.1/Moq.dll", + "moq.4.20.72.nupkg.sha512", + "moq.nuspec", + "readme.md" + ] + }, + "MySqlConnector/2.3.5": { + "sha512": "AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==", + "type": "package", + "path": "mysqlconnector/2.3.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net462/MySqlConnector.dll", + "lib/net462/MySqlConnector.xml", + "lib/net471/MySqlConnector.dll", + "lib/net471/MySqlConnector.xml", + "lib/net48/MySqlConnector.dll", + "lib/net48/MySqlConnector.xml", + "lib/net6.0/MySqlConnector.dll", + "lib/net6.0/MySqlConnector.xml", + "lib/net7.0/MySqlConnector.dll", + "lib/net7.0/MySqlConnector.xml", + "lib/net8.0/MySqlConnector.dll", + "lib/net8.0/MySqlConnector.xml", + "lib/netstandard2.0/MySqlConnector.dll", + "lib/netstandard2.0/MySqlConnector.xml", + "lib/netstandard2.1/MySqlConnector.dll", + "lib/netstandard2.1/MySqlConnector.xml", + "logo.png", + "mysqlconnector.2.3.5.nupkg.sha512", + "mysqlconnector.nuspec" + ] + }, + "Newtonsoft.Json/13.0.3": { + "sha512": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==", + "type": "package", + "path": "newtonsoft.json/13.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.md", + "README.md", + "lib/net20/Newtonsoft.Json.dll", + "lib/net20/Newtonsoft.Json.xml", + "lib/net35/Newtonsoft.Json.dll", + "lib/net35/Newtonsoft.Json.xml", + "lib/net40/Newtonsoft.Json.dll", + "lib/net40/Newtonsoft.Json.xml", + "lib/net45/Newtonsoft.Json.dll", + "lib/net45/Newtonsoft.Json.xml", + "lib/net6.0/Newtonsoft.Json.dll", + "lib/net6.0/Newtonsoft.Json.xml", + "lib/netstandard1.0/Newtonsoft.Json.dll", + "lib/netstandard1.0/Newtonsoft.Json.xml", + "lib/netstandard1.3/Newtonsoft.Json.dll", + "lib/netstandard1.3/Newtonsoft.Json.xml", + "lib/netstandard2.0/Newtonsoft.Json.dll", + "lib/netstandard2.0/Newtonsoft.Json.xml", + "newtonsoft.json.13.0.3.nupkg.sha512", + "newtonsoft.json.nuspec", + "packageIcon.png" + ] + }, + "Pfim/0.11.3": { + "sha512": "UNVStuGHVIGyBlQaLX8VY6KpzZm/pG2zpV8ewNSXNFKFVPn8dLQKJITfps3lwUMzwTL+Do7RrMUvgQ1ZsPTu4w==", + "type": "package", + "path": "pfim/0.11.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Pfim.dll", + "pfim.0.11.3.nupkg.sha512", + "pfim.nuspec" + ] + }, + "Pipelines.Sockets.Unofficial/2.2.8": { + "sha512": "zG2FApP5zxSx6OcdJQLbZDk2AVlN2BNQD6MorwIfV6gVj0RRxWPEp2LXAxqDGZqeNV1Zp0BNPcNaey/GXmTdvQ==", + "type": "package", + "path": "pipelines.sockets.unofficial/2.2.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Pipelines.Sockets.Unofficial.dll", + "lib/net461/Pipelines.Sockets.Unofficial.xml", + "lib/net472/Pipelines.Sockets.Unofficial.dll", + "lib/net472/Pipelines.Sockets.Unofficial.xml", + "lib/net5.0/Pipelines.Sockets.Unofficial.dll", + "lib/net5.0/Pipelines.Sockets.Unofficial.xml", + "lib/netcoreapp3.1/Pipelines.Sockets.Unofficial.dll", + "lib/netcoreapp3.1/Pipelines.Sockets.Unofficial.xml", + "lib/netstandard2.0/Pipelines.Sockets.Unofficial.dll", + "lib/netstandard2.0/Pipelines.Sockets.Unofficial.xml", + "lib/netstandard2.1/Pipelines.Sockets.Unofficial.dll", + "lib/netstandard2.1/Pipelines.Sockets.Unofficial.xml", + "pipelines.sockets.unofficial.2.2.8.nupkg.sha512", + "pipelines.sockets.unofficial.nuspec" + ] + }, + "Pomelo.EntityFrameworkCore.MySql/8.0.2": { + "sha512": "XjnlcxVBLnEMbyEc5cZzgZeDyLvAniACZQ04W1slWN0f4rmfNzl98gEMvHnFH0fMDF06z9MmgGi/Sr7hJ+BVnw==", + "type": "package", + "path": "pomelo.entityframeworkcore.mysql/8.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll", + "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.xml", + "pomelo.entityframeworkcore.mysql.8.0.2.nupkg.sha512", + "pomelo.entityframeworkcore.mysql.nuspec" + ] + }, + "Redis.OM/1.0.1": { + "sha512": "0kreYGe1w3dy6Ymv+wbdCfcpSu8p9uGGmz3Z+Kp4XbTrF1QrcJFgq9mWMQ7Js538Mb7AR+IaKIcpYX0C0asHgg==", + "type": "package", + "path": "redis.om/1.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon-square.png", + "lib/netstandard2.0/Redis.OM.dll", + "lib/netstandard2.0/Redis.OM.xml", + "redis.om.1.0.1.nupkg.sha512", + "redis.om.nuspec" + ] + }, + "SharpZipLib/1.4.2": { + "sha512": "yjj+3zgz8zgXpiiC3ZdF/iyTBbz2fFvMxZFEBPUcwZjIvXOf37Ylm+K58hqMfIBt5JgU/Z2uoUS67JmTLe973A==", + "type": "package", + "path": "sharpziplib/1.4.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "images/sharpziplib-nuget-256x256.png", + "lib/net6.0/ICSharpCode.SharpZipLib.dll", + "lib/net6.0/ICSharpCode.SharpZipLib.pdb", + "lib/net6.0/ICSharpCode.SharpZipLib.xml", + "lib/netstandard2.0/ICSharpCode.SharpZipLib.dll", + "lib/netstandard2.0/ICSharpCode.SharpZipLib.pdb", + "lib/netstandard2.0/ICSharpCode.SharpZipLib.xml", + "lib/netstandard2.1/ICSharpCode.SharpZipLib.dll", + "lib/netstandard2.1/ICSharpCode.SharpZipLib.pdb", + "lib/netstandard2.1/ICSharpCode.SharpZipLib.xml", + "sharpziplib.1.4.2.nupkg.sha512", + "sharpziplib.nuspec" + ] + }, + "SixLabors.ImageSharp/3.1.10": { + "sha512": "R1HEPcqx3v+kvlOTPouP0g/Nzzud9pHtjlgGbFax3Ivaz8kkaGfS2EPfyDGpmfoTUQ3nQ5wxdhYyYa9fwYA9cw==", + "type": "package", + "path": "sixlabors.imagesharp/3.1.10", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE", + "build/SixLabors.ImageSharp.props", + "lib/net6.0/SixLabors.ImageSharp.dll", + "lib/net6.0/SixLabors.ImageSharp.xml", + "sixlabors.imagesharp.128.png", + "sixlabors.imagesharp.3.1.10.nupkg.sha512", + "sixlabors.imagesharp.nuspec" + ] + }, + "SQLitePCLRaw.bundle_e_sqlite3/2.1.6": { + "sha512": "BmAf6XWt4TqtowmiWe4/5rRot6GerAeklmOPfviOvwLoF5WwgxcJHAxZtySuyW9r9w+HLILnm8VfJFLCUJYW8A==", + "type": "package", + "path": "sqlitepclraw.bundle_e_sqlite3/2.1.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/monoandroid90/SQLitePCLRaw.batteries_v2.dll", + "lib/net461/SQLitePCLRaw.batteries_v2.dll", + "lib/net6.0-android31.0/SQLitePCLRaw.batteries_v2.dll", + "lib/net6.0-android31.0/SQLitePCLRaw.batteries_v2.xml", + "lib/net6.0-ios14.0/SQLitePCLRaw.batteries_v2.dll", + "lib/net6.0-ios14.2/SQLitePCLRaw.batteries_v2.dll", + "lib/net6.0-tvos10.0/SQLitePCLRaw.batteries_v2.dll", + "lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll", + "lib/xamarinios10/SQLitePCLRaw.batteries_v2.dll", + "sqlitepclraw.bundle_e_sqlite3.2.1.6.nupkg.sha512", + "sqlitepclraw.bundle_e_sqlite3.nuspec" + ] + }, + "SQLitePCLRaw.core/2.1.6": { + "sha512": "wO6v9GeMx9CUngAet8hbO7xdm+M42p1XeJq47ogyRoYSvNSp0NGLI+MgC0bhrMk9C17MTVFlLiN6ylyExLCc5w==", + "type": "package", + "path": "sqlitepclraw.core/2.1.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/SQLitePCLRaw.core.dll", + "sqlitepclraw.core.2.1.6.nupkg.sha512", + "sqlitepclraw.core.nuspec" + ] + }, + "SQLitePCLRaw.lib.e_sqlite3/2.1.6": { + "sha512": "2ObJJLkIUIxRpOUlZNGuD4rICpBnrBR5anjyfUFQep4hMOIeqW+XGQYzrNmHSVz5xSWZ3klSbh7sFR6UyDj68Q==", + "type": "package", + "path": "sqlitepclraw.lib.e_sqlite3/2.1.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "buildTransitive/net461/SQLitePCLRaw.lib.e_sqlite3.targets", + "buildTransitive/net6.0/SQLitePCLRaw.lib.e_sqlite3.targets", + "buildTransitive/net7.0/SQLitePCLRaw.lib.e_sqlite3.targets", + "buildTransitive/net8.0/SQLitePCLRaw.lib.e_sqlite3.targets", + "lib/net461/_._", + "lib/netstandard2.0/_._", + "runtimes/browser-wasm/nativeassets/net6.0/e_sqlite3.a", + "runtimes/browser-wasm/nativeassets/net7.0/e_sqlite3.a", + "runtimes/browser-wasm/nativeassets/net8.0/e_sqlite3.a", + "runtimes/linux-arm/native/libe_sqlite3.so", + "runtimes/linux-arm64/native/libe_sqlite3.so", + "runtimes/linux-armel/native/libe_sqlite3.so", + "runtimes/linux-mips64/native/libe_sqlite3.so", + "runtimes/linux-musl-arm/native/libe_sqlite3.so", + "runtimes/linux-musl-arm64/native/libe_sqlite3.so", + "runtimes/linux-musl-x64/native/libe_sqlite3.so", + "runtimes/linux-ppc64le/native/libe_sqlite3.so", + "runtimes/linux-s390x/native/libe_sqlite3.so", + "runtimes/linux-x64/native/libe_sqlite3.so", + "runtimes/linux-x86/native/libe_sqlite3.so", + "runtimes/maccatalyst-arm64/native/libe_sqlite3.dylib", + "runtimes/maccatalyst-x64/native/libe_sqlite3.dylib", + "runtimes/osx-arm64/native/libe_sqlite3.dylib", + "runtimes/osx-x64/native/libe_sqlite3.dylib", + "runtimes/win-arm/native/e_sqlite3.dll", + "runtimes/win-arm64/native/e_sqlite3.dll", + "runtimes/win-x64/native/e_sqlite3.dll", + "runtimes/win-x86/native/e_sqlite3.dll", + "runtimes/win10-arm/nativeassets/uap10.0/e_sqlite3.dll", + "runtimes/win10-arm64/nativeassets/uap10.0/e_sqlite3.dll", + "runtimes/win10-x64/nativeassets/uap10.0/e_sqlite3.dll", + "runtimes/win10-x86/nativeassets/uap10.0/e_sqlite3.dll", + "sqlitepclraw.lib.e_sqlite3.2.1.6.nupkg.sha512", + "sqlitepclraw.lib.e_sqlite3.nuspec" + ] + }, + "SQLitePCLRaw.provider.e_sqlite3/2.1.6": { + "sha512": "PQ2Oq3yepLY4P7ll145P3xtx2bX8xF4PzaKPRpw9jZlKvfe4LE/saAV82inND9usn1XRpmxXk7Lal3MTI+6CNg==", + "type": "package", + "path": "sqlitepclraw.provider.e_sqlite3/2.1.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net6.0-windows7.0/SQLitePCLRaw.provider.e_sqlite3.dll", + "lib/net6.0/SQLitePCLRaw.provider.e_sqlite3.dll", + "lib/netstandard2.0/SQLitePCLRaw.provider.e_sqlite3.dll", + "sqlitepclraw.provider.e_sqlite3.2.1.6.nupkg.sha512", + "sqlitepclraw.provider.e_sqlite3.nuspec" + ] + }, + "StackExchange.Redis/2.7.17": { + "sha512": "PduekHww3CrCBr1ebIPX4k4zdah9wjJ4AQZXfp+JfGJQfwf8s1SHSY7kthDi9MP0ULcYrNw4xnbRXFMbCryIig==", + "type": "package", + "path": "stackexchange.redis/2.7.17", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/StackExchange.Redis.dll", + "lib/net461/StackExchange.Redis.xml", + "lib/net472/StackExchange.Redis.dll", + "lib/net472/StackExchange.Redis.xml", + "lib/net6.0/StackExchange.Redis.dll", + "lib/net6.0/StackExchange.Redis.xml", + "lib/netcoreapp3.1/StackExchange.Redis.dll", + "lib/netcoreapp3.1/StackExchange.Redis.xml", + "lib/netstandard2.0/StackExchange.Redis.dll", + "lib/netstandard2.0/StackExchange.Redis.xml", + "stackexchange.redis.2.7.17.nupkg.sha512", + "stackexchange.redis.nuspec" + ] + }, + "Swashbuckle.AspNetCore/9.0.3": { + "sha512": "Akk4oFgy0ST8Q8pZTfPbrt045tWNyMMiKhlbYjG3qnjQZLz645IL5vhQm7NLicc2sAAQ+vftArIlsYWFevmb2g==", + "type": "package", + "path": "swashbuckle.aspnetcore/9.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "build/Swashbuckle.AspNetCore.props", + "buildMultiTargeting/Swashbuckle.AspNetCore.props", + "docs/package-readme.md", + "swashbuckle.aspnetcore.9.0.3.nupkg.sha512", + "swashbuckle.aspnetcore.nuspec" + ] + }, + "Swashbuckle.AspNetCore.Swagger/9.0.3": { + "sha512": "CGpkZDWj1g/yH/0wYkxUtBhiFo5TY/Esq2fS0vlBvLOs1UL2Jzef9tdtYmTdd3zBPtnMyXQcsXjMt9yCxz4VaA==", + "type": "package", + "path": "swashbuckle.aspnetcore.swagger/9.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.xml", + "lib/net9.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/net9.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/net9.0/Swashbuckle.AspNetCore.Swagger.xml", + "package-readme.md", + "swashbuckle.aspnetcore.swagger.9.0.3.nupkg.sha512", + "swashbuckle.aspnetcore.swagger.nuspec" + ] + }, + "Swashbuckle.AspNetCore.SwaggerGen/9.0.3": { + "sha512": "STqjhw1TZiEGmIRgE6jcJUOcgU/Fjquc6dP4GqbuwBzqWZAWr/9T7FZOGWYEwKnmkMplzlUNepGHwnUrfTP0fw==", + "type": "package", + "path": "swashbuckle.aspnetcore.swaggergen/9.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "lib/net9.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/net9.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/net9.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "package-readme.md", + "swashbuckle.aspnetcore.swaggergen.9.0.3.nupkg.sha512", + "swashbuckle.aspnetcore.swaggergen.nuspec" + ] + }, + "Swashbuckle.AspNetCore.SwaggerUI/9.0.3": { + "sha512": "DgJKJASz5OAygeKv2+N0FCZVhQylESqLXrtrRAqIT0vKpX7t5ImJ1FL6+6OqxKiamGkL0jchRXR8OgpMSsMh8w==", + "type": "package", + "path": "swashbuckle.aspnetcore.swaggerui/9.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "lib/net9.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/net9.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/net9.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "package-readme.md", + "swashbuckle.aspnetcore.swaggerui.9.0.3.nupkg.sha512", + "swashbuckle.aspnetcore.swaggerui.nuspec" + ] + }, + "System.CodeDom/4.4.0": { + "sha512": "2sCCb7doXEwtYAbqzbF/8UAeDRMNmPaQbU2q50Psg1J9KzumyVVCgKQY8s53WIPTufNT0DpSe9QRvVjOzfDWBA==", + "type": "package", + "path": "system.codedom/4.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/System.CodeDom.dll", + "lib/netstandard2.0/System.CodeDom.dll", + "ref/net461/System.CodeDom.dll", + "ref/net461/System.CodeDom.xml", + "ref/netstandard2.0/System.CodeDom.dll", + "ref/netstandard2.0/System.CodeDom.xml", + "system.codedom.4.4.0.nupkg.sha512", + "system.codedom.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Collections.Immutable/8.0.0": { + "sha512": "AurL6Y5BA1WotzlEvVaIDpqzpIPvYnnldxru8oXJU2yFxFUy3+pNXjXd1ymO+RA0rq0+590Q8gaz2l3Sr7fmqg==", + "type": "package", + "path": "system.collections.immutable/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Collections.Immutable.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Collections.Immutable.targets", + "lib/net462/System.Collections.Immutable.dll", + "lib/net462/System.Collections.Immutable.xml", + "lib/net6.0/System.Collections.Immutable.dll", + "lib/net6.0/System.Collections.Immutable.xml", + "lib/net7.0/System.Collections.Immutable.dll", + "lib/net7.0/System.Collections.Immutable.xml", + "lib/net8.0/System.Collections.Immutable.dll", + "lib/net8.0/System.Collections.Immutable.xml", + "lib/netstandard2.0/System.Collections.Immutable.dll", + "lib/netstandard2.0/System.Collections.Immutable.xml", + "system.collections.immutable.8.0.0.nupkg.sha512", + "system.collections.immutable.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition/6.0.0": { + "sha512": "d7wMuKQtfsxUa7S13tITC8n1cQzewuhD5iDjZtK2prwFfKVzdYtgrTHgjaV03Zq7feGQ5gkP85tJJntXwInsJA==", + "type": "package", + "path": "system.composition/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Composition.targets", + "buildTransitive/netcoreapp3.1/_._", + "system.composition.6.0.0.nupkg.sha512", + "system.composition.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition.AttributedModel/6.0.0": { + "sha512": "WK1nSDLByK/4VoC7fkNiFuTVEiperuCN/Hyn+VN30R+W2ijO1d0Z2Qm0ScEl9xkSn1G2MyapJi8xpf4R8WRa/w==", + "type": "package", + "path": "system.composition.attributedmodel/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Composition.AttributedModel.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Composition.AttributedModel.dll", + "lib/net461/System.Composition.AttributedModel.xml", + "lib/net6.0/System.Composition.AttributedModel.dll", + "lib/net6.0/System.Composition.AttributedModel.xml", + "lib/netstandard2.0/System.Composition.AttributedModel.dll", + "lib/netstandard2.0/System.Composition.AttributedModel.xml", + "system.composition.attributedmodel.6.0.0.nupkg.sha512", + "system.composition.attributedmodel.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition.Convention/6.0.0": { + "sha512": "XYi4lPRdu5bM4JVJ3/UIHAiG6V6lWWUlkhB9ab4IOq0FrRsp0F4wTyV4Dj+Ds+efoXJ3qbLqlvaUozDO7OLeXA==", + "type": "package", + "path": "system.composition.convention/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Composition.Convention.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Composition.Convention.dll", + "lib/net461/System.Composition.Convention.xml", + "lib/net6.0/System.Composition.Convention.dll", + "lib/net6.0/System.Composition.Convention.xml", + "lib/netstandard2.0/System.Composition.Convention.dll", + "lib/netstandard2.0/System.Composition.Convention.xml", + "system.composition.convention.6.0.0.nupkg.sha512", + "system.composition.convention.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition.Hosting/6.0.0": { + "sha512": "w/wXjj7kvxuHPLdzZ0PAUt++qJl03t7lENmb2Oev0n3zbxyNULbWBlnd5J5WUMMv15kg5o+/TCZFb6lSwfaUUQ==", + "type": "package", + "path": "system.composition.hosting/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Composition.Hosting.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Composition.Hosting.dll", + "lib/net461/System.Composition.Hosting.xml", + "lib/net6.0/System.Composition.Hosting.dll", + "lib/net6.0/System.Composition.Hosting.xml", + "lib/netstandard2.0/System.Composition.Hosting.dll", + "lib/netstandard2.0/System.Composition.Hosting.xml", + "system.composition.hosting.6.0.0.nupkg.sha512", + "system.composition.hosting.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition.Runtime/6.0.0": { + "sha512": "qkRH/YBaMPTnzxrS5RDk1juvqed4A6HOD/CwRcDGyPpYps1J27waBddiiq1y93jk2ZZ9wuA/kynM+NO0kb3PKg==", + "type": "package", + "path": "system.composition.runtime/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Composition.Runtime.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Composition.Runtime.dll", + "lib/net461/System.Composition.Runtime.xml", + "lib/net6.0/System.Composition.Runtime.dll", + "lib/net6.0/System.Composition.Runtime.xml", + "lib/netstandard2.0/System.Composition.Runtime.dll", + "lib/netstandard2.0/System.Composition.Runtime.xml", + "system.composition.runtime.6.0.0.nupkg.sha512", + "system.composition.runtime.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition.TypedParts/6.0.0": { + "sha512": "iUR1eHrL8Cwd82neQCJ00MpwNIBs4NZgXzrPqx8NJf/k4+mwBO0XCRmHYJT4OLSwDDqh5nBLJWkz5cROnrGhRA==", + "type": "package", + "path": "system.composition.typedparts/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Composition.TypedParts.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Composition.TypedParts.dll", + "lib/net461/System.Composition.TypedParts.xml", + "lib/net6.0/System.Composition.TypedParts.dll", + "lib/net6.0/System.Composition.TypedParts.xml", + "lib/netstandard2.0/System.Composition.TypedParts.dll", + "lib/netstandard2.0/System.Composition.TypedParts.xml", + "system.composition.typedparts.6.0.0.nupkg.sha512", + "system.composition.typedparts.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Diagnostics.EventLog/8.0.1": { + "sha512": "n1ZP7NM2Gkn/MgD8+eOT5MulMj6wfeQMNS2Pizvq5GHCZfjlFMXV2irQlQmJhwA2VABC57M0auudO89Iu2uRLg==", + "type": "package", + "path": "system.diagnostics.eventlog/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Diagnostics.EventLog.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Diagnostics.EventLog.targets", + "lib/net462/System.Diagnostics.EventLog.dll", + "lib/net462/System.Diagnostics.EventLog.xml", + "lib/net6.0/System.Diagnostics.EventLog.dll", + "lib/net6.0/System.Diagnostics.EventLog.xml", + "lib/net7.0/System.Diagnostics.EventLog.dll", + "lib/net7.0/System.Diagnostics.EventLog.xml", + "lib/net8.0/System.Diagnostics.EventLog.dll", + "lib/net8.0/System.Diagnostics.EventLog.xml", + "lib/netstandard2.0/System.Diagnostics.EventLog.dll", + "lib/netstandard2.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.xml", + "system.diagnostics.eventlog.8.0.1.nupkg.sha512", + "system.diagnostics.eventlog.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Interactive.Async/6.0.1": { + "sha512": "f8H1O4ZWDQo344y5NQU76G4SIjWMuKDVXL9OM1dg6K5YZnLkc8iCdQDybBvMcC6ufk61jzXGVAX6UCDu0qDSjA==", + "type": "package", + "path": "system.interactive.async/6.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Logo.png", + "lib/net48/System.Interactive.Async.dll", + "lib/net48/System.Interactive.Async.xml", + "lib/net6.0/System.Interactive.Async.dll", + "lib/net6.0/System.Interactive.Async.xml", + "lib/netstandard2.0/System.Interactive.Async.dll", + "lib/netstandard2.0/System.Interactive.Async.xml", + "lib/netstandard2.1/System.Interactive.Async.dll", + "lib/netstandard2.1/System.Interactive.Async.xml", + "system.interactive.async.6.0.1.nupkg.sha512", + "system.interactive.async.nuspec" + ] + }, + "System.IO.Pipelines/8.0.0": { + "sha512": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==", + "type": "package", + "path": "system.io.pipelines/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.IO.Pipelines.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.IO.Pipelines.targets", + "lib/net462/System.IO.Pipelines.dll", + "lib/net462/System.IO.Pipelines.xml", + "lib/net6.0/System.IO.Pipelines.dll", + "lib/net6.0/System.IO.Pipelines.xml", + "lib/net7.0/System.IO.Pipelines.dll", + "lib/net7.0/System.IO.Pipelines.xml", + "lib/net8.0/System.IO.Pipelines.dll", + "lib/net8.0/System.IO.Pipelines.xml", + "lib/netstandard2.0/System.IO.Pipelines.dll", + "lib/netstandard2.0/System.IO.Pipelines.xml", + "system.io.pipelines.8.0.0.nupkg.sha512", + "system.io.pipelines.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Linq.Async/6.0.1": { + "sha512": "0YhHcaroWpQ9UCot3Pizah7ryAzQhNvobLMSxeDIGmnXfkQn8u5owvpOH0K6EVB+z9L7u6Cc4W17Br/+jyttEQ==", + "type": "package", + "path": "system.linq.async/6.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Logo.png", + "lib/net48/System.Linq.Async.dll", + "lib/net48/System.Linq.Async.xml", + "lib/net6.0/System.Linq.Async.dll", + "lib/net6.0/System.Linq.Async.xml", + "lib/netstandard2.0/System.Linq.Async.dll", + "lib/netstandard2.0/System.Linq.Async.xml", + "lib/netstandard2.1/System.Linq.Async.dll", + "lib/netstandard2.1/System.Linq.Async.xml", + "ref/net48/System.Linq.Async.dll", + "ref/net48/System.Linq.Async.xml", + "ref/net6.0/System.Linq.Async.dll", + "ref/net6.0/System.Linq.Async.xml", + "ref/netstandard2.0/System.Linq.Async.dll", + "ref/netstandard2.0/System.Linq.Async.xml", + "ref/netstandard2.1/System.Linq.Async.dll", + "ref/netstandard2.1/System.Linq.Async.xml", + "system.linq.async.6.0.1.nupkg.sha512", + "system.linq.async.nuspec" + ] + }, + "System.Memory/4.5.3": { + "sha512": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==", + "type": "package", + "path": "system.memory/4.5.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/netcoreapp2.1/_._", + "lib/netstandard1.1/System.Memory.dll", + "lib/netstandard1.1/System.Memory.xml", + "lib/netstandard2.0/System.Memory.dll", + "lib/netstandard2.0/System.Memory.xml", + "ref/netcoreapp2.1/_._", + "system.memory.4.5.3.nupkg.sha512", + "system.memory.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Reflection.Metadata/8.0.0": { + "sha512": "ptvgrFh7PvWI8bcVqG5rsA/weWM09EnthFHR5SCnS6IN+P4mj6rE1lBDC4U8HL9/57htKAqy4KQ3bBj84cfYyQ==", + "type": "package", + "path": "system.reflection.metadata/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Reflection.Metadata.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Reflection.Metadata.targets", + "lib/net462/System.Reflection.Metadata.dll", + "lib/net462/System.Reflection.Metadata.xml", + "lib/net6.0/System.Reflection.Metadata.dll", + "lib/net6.0/System.Reflection.Metadata.xml", + "lib/net7.0/System.Reflection.Metadata.dll", + "lib/net7.0/System.Reflection.Metadata.xml", + "lib/net8.0/System.Reflection.Metadata.dll", + "lib/net8.0/System.Reflection.Metadata.xml", + "lib/netstandard2.0/System.Reflection.Metadata.dll", + "lib/netstandard2.0/System.Reflection.Metadata.xml", + "system.reflection.metadata.8.0.0.nupkg.sha512", + "system.reflection.metadata.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "sha512": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==", + "type": "package", + "path": "system.runtime.compilerservices.unsafe/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net461/System.Runtime.CompilerServices.Unsafe.xml", + "lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net6.0/System.Runtime.CompilerServices.Unsafe.xml", + "lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.xml", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", + "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512", + "system.runtime.compilerservices.unsafe.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.Encoding.CodePages/6.0.0": { + "sha512": "ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==", + "type": "package", + "path": "system.text.encoding.codepages/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Text.Encoding.CodePages.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.Text.Encoding.CodePages.dll", + "lib/net461/System.Text.Encoding.CodePages.xml", + "lib/net6.0/System.Text.Encoding.CodePages.dll", + "lib/net6.0/System.Text.Encoding.CodePages.xml", + "lib/netcoreapp3.1/System.Text.Encoding.CodePages.dll", + "lib/netcoreapp3.1/System.Text.Encoding.CodePages.xml", + "lib/netstandard2.0/System.Text.Encoding.CodePages.dll", + "lib/netstandard2.0/System.Text.Encoding.CodePages.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "runtimes/win/lib/net461/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/net461/System.Text.Encoding.CodePages.xml", + "runtimes/win/lib/net6.0/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/net6.0/System.Text.Encoding.CodePages.xml", + "runtimes/win/lib/netcoreapp3.1/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/netcoreapp3.1/System.Text.Encoding.CodePages.xml", + "runtimes/win/lib/netstandard2.0/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/netstandard2.0/System.Text.Encoding.CodePages.xml", + "system.text.encoding.codepages.6.0.0.nupkg.sha512", + "system.text.encoding.codepages.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.Json/8.0.5": { + "sha512": "0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg==", + "type": "package", + "path": "system.text.json/8.0.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "buildTransitive/net461/System.Text.Json.targets", + "buildTransitive/net462/System.Text.Json.targets", + "buildTransitive/net6.0/System.Text.Json.targets", + "buildTransitive/netcoreapp2.0/System.Text.Json.targets", + "buildTransitive/netstandard2.0/System.Text.Json.targets", + "lib/net462/System.Text.Json.dll", + "lib/net462/System.Text.Json.xml", + "lib/net6.0/System.Text.Json.dll", + "lib/net6.0/System.Text.Json.xml", + "lib/net7.0/System.Text.Json.dll", + "lib/net7.0/System.Text.Json.xml", + "lib/net8.0/System.Text.Json.dll", + "lib/net8.0/System.Text.Json.xml", + "lib/netstandard2.0/System.Text.Json.dll", + "lib/netstandard2.0/System.Text.Json.xml", + "system.text.json.8.0.5.nupkg.sha512", + "system.text.json.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Threading.Channels/6.0.0": { + "sha512": "TY8/9+tI0mNaUMgntOxxaq2ndTkdXqLSxvPmas7XEqOlv9lQtB7wLjYGd756lOaO7Dvb5r/WXhluM+0Xe87v5Q==", + "type": "package", + "path": "system.threading.channels/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Threading.Channels.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Threading.Channels.dll", + "lib/net461/System.Threading.Channels.xml", + "lib/net6.0/System.Threading.Channels.dll", + "lib/net6.0/System.Threading.Channels.xml", + "lib/netcoreapp3.1/System.Threading.Channels.dll", + "lib/netcoreapp3.1/System.Threading.Channels.xml", + "lib/netstandard2.0/System.Threading.Channels.dll", + "lib/netstandard2.0/System.Threading.Channels.xml", + "lib/netstandard2.1/System.Threading.Channels.dll", + "lib/netstandard2.1/System.Threading.Channels.xml", + "system.threading.channels.6.0.0.nupkg.sha512", + "system.threading.channels.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.ValueTuple/4.5.0": { + "sha512": "okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==", + "type": "package", + "path": "system.valuetuple/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.ValueTuple.dll", + "lib/net461/System.ValueTuple.xml", + "lib/net47/System.ValueTuple.dll", + "lib/net47/System.ValueTuple.xml", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.0/System.ValueTuple.dll", + "lib/netstandard1.0/System.ValueTuple.xml", + "lib/netstandard2.0/_._", + "lib/portable-net40+sl4+win8+wp8/System.ValueTuple.dll", + "lib/portable-net40+sl4+win8+wp8/System.ValueTuple.xml", + "lib/uap10.0.16299/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net461/System.ValueTuple.dll", + "ref/net47/System.ValueTuple.dll", + "ref/netcoreapp2.0/_._", + "ref/netstandard2.0/_._", + "ref/portable-net40+sl4+win8+wp8/System.ValueTuple.dll", + "ref/uap10.0.16299/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.valuetuple.4.5.0.nupkg.sha512", + "system.valuetuple.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Ulid/1.2.6": { + "sha512": "TDfJ/q4nJJ7LTxHErWYXRFs7laAUJhnT7Do+fpxxNg+uQOC1GKWLFuyJMKyMyIxQhFjWNC5XcFbr7R6HP9PFgw==", + "type": "package", + "path": "ulid/1.2.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/net5.0/Ulid.dll", + "lib/net5.0/Ulid.xml", + "lib/netcoreapp2.1/Ulid.dll", + "lib/netcoreapp2.1/Ulid.xml", + "lib/netcoreapp3.1/Ulid.dll", + "lib/netcoreapp3.1/Ulid.xml", + "lib/netstandard2.0/Ulid.dll", + "lib/netstandard2.0/Ulid.xml", + "ulid.1.2.6.nupkg.sha512", + "ulid.nuspec" + ] + }, + "xunit/2.9.3": { + "sha512": "TlXQBinK35LpOPKHAqbLY4xlEen9TBafjs0V5KnA4wZsoQLQJiirCR4CbIXvOH8NzkW4YeJKP5P/Bnrodm0h9Q==", + "type": "package", + "path": "xunit/2.9.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "xunit.2.9.3.nupkg.sha512", + "xunit.nuspec" + ] + }, + "xunit.abstractions/2.0.3": { + "sha512": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==", + "type": "package", + "path": "xunit.abstractions/2.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net35/xunit.abstractions.dll", + "lib/net35/xunit.abstractions.xml", + "lib/netstandard1.0/xunit.abstractions.dll", + "lib/netstandard1.0/xunit.abstractions.xml", + "lib/netstandard2.0/xunit.abstractions.dll", + "lib/netstandard2.0/xunit.abstractions.xml", + "xunit.abstractions.2.0.3.nupkg.sha512", + "xunit.abstractions.nuspec" + ] + }, + "xunit.analyzers/1.18.0": { + "sha512": "OtFMHN8yqIcYP9wcVIgJrq01AfTxijjAqVDy/WeQVSyrDC1RzBWeQPztL49DN2syXRah8TYnfvk035s7L95EZQ==", + "type": "package", + "path": "xunit.analyzers/1.18.0", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "analyzers/dotnet/cs/xunit.analyzers.dll", + "analyzers/dotnet/cs/xunit.analyzers.fixes.dll", + "tools/install.ps1", + "tools/uninstall.ps1", + "xunit.analyzers.1.18.0.nupkg.sha512", + "xunit.analyzers.nuspec" + ] + }, + "xunit.assert/2.9.3": { + "sha512": "/Kq28fCE7MjOV42YLVRAJzRF0WmEqsmflm0cfpMjGtzQ2lR5mYVj1/i0Y8uDAOLczkL3/jArrwehfMD0YogMAA==", + "type": "package", + "path": "xunit.assert/2.9.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "lib/net6.0/xunit.assert.dll", + "lib/net6.0/xunit.assert.xml", + "lib/netstandard1.1/xunit.assert.dll", + "lib/netstandard1.1/xunit.assert.xml", + "xunit.assert.2.9.3.nupkg.sha512", + "xunit.assert.nuspec" + ] + }, + "xunit.core/2.9.3": { + "sha512": "BiAEvqGvyme19wE0wTKdADH+NloYqikiU0mcnmiNyXaF9HyHmE6sr/3DC5vnBkgsWaE6yPyWszKSPSApWdRVeQ==", + "type": "package", + "path": "xunit.core/2.9.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "build/xunit.core.props", + "build/xunit.core.targets", + "buildMultiTargeting/xunit.core.props", + "buildMultiTargeting/xunit.core.targets", + "xunit.core.2.9.3.nupkg.sha512", + "xunit.core.nuspec" + ] + }, + "xunit.extensibility.core/2.9.3": { + "sha512": "kf3si0YTn2a8J8eZNb+zFpwfoyvIrQ7ivNk5ZYA5yuYk1bEtMe4DxJ2CF/qsRgmEnDr7MnW1mxylBaHTZ4qErA==", + "type": "package", + "path": "xunit.extensibility.core/2.9.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "lib/net452/xunit.core.dll", + "lib/net452/xunit.core.dll.tdnet", + "lib/net452/xunit.core.xml", + "lib/net452/xunit.runner.tdnet.dll", + "lib/net452/xunit.runner.utility.net452.dll", + "lib/netstandard1.1/xunit.core.dll", + "lib/netstandard1.1/xunit.core.xml", + "xunit.extensibility.core.2.9.3.nupkg.sha512", + "xunit.extensibility.core.nuspec" + ] + }, + "xunit.extensibility.execution/2.9.3": { + "sha512": "yMb6vMESlSrE3Wfj7V6cjQ3S4TXdXpRqYeNEI3zsX31uTsGMJjEw6oD5F5u1cHnMptjhEECnmZSsPxB6ChZHDQ==", + "type": "package", + "path": "xunit.extensibility.execution/2.9.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "lib/net452/xunit.execution.desktop.dll", + "lib/net452/xunit.execution.desktop.xml", + "lib/netstandard1.1/xunit.execution.dotnet.dll", + "lib/netstandard1.1/xunit.execution.dotnet.xml", + "xunit.extensibility.execution.2.9.3.nupkg.sha512", + "xunit.extensibility.execution.nuspec" + ] + }, + "xunit.runner.visualstudio/3.1.1": { + "sha512": "gNu2zhnuwjq5vQlU4S7yK/lfaKZDLmtcu+vTjnhfTlMAUYn+Hmgu8IIX0UCwWepYkk+Szx03DHx1bDnc9Fd+9w==", + "type": "package", + "path": "xunit.runner.visualstudio/3.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "build/net472/xunit.abstractions.dll", + "build/net472/xunit.runner.visualstudio.props", + "build/net472/xunit.runner.visualstudio.testadapter.dll", + "build/net8.0/xunit.abstractions.dll", + "build/net8.0/xunit.runner.visualstudio.props", + "build/net8.0/xunit.runner.visualstudio.testadapter.dll", + "lib/net472/_._", + "lib/net8.0/_._", + "xunit.runner.visualstudio.3.1.1.nupkg.sha512", + "xunit.runner.visualstudio.nuspec" + ] + }, + "YamlDotNet/16.3.0": { + "sha512": "SgMOdxbz8X65z8hraIs6hOEdnkH6hESTAIUa7viEngHOYaH+6q5XJmwr1+yb9vJpNQ19hCQY69xbFsLtXpobQA==", + "type": "package", + "path": "yamldotnet/16.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "images/yamldotnet.png", + "lib/net47/YamlDotNet.dll", + "lib/net47/YamlDotNet.xml", + "lib/net6.0/YamlDotNet.dll", + "lib/net6.0/YamlDotNet.xml", + "lib/net8.0/YamlDotNet.dll", + "lib/net8.0/YamlDotNet.xml", + "lib/netstandard2.0/YamlDotNet.dll", + "lib/netstandard2.0/YamlDotNet.xml", + "lib/netstandard2.1/YamlDotNet.dll", + "lib/netstandard2.1/YamlDotNet.xml", + "yamldotnet.16.3.0.nupkg.sha512", + "yamldotnet.nuspec" + ] + }, + "LBPUnion.ProjectLighthouse/1.0.0": { + "type": "project", + "path": "../ProjectLighthouse/ProjectLighthouse.csproj", + "msbuildProject": "../ProjectLighthouse/ProjectLighthouse.csproj" + }, + "LBPUnion.ProjectLighthouse.Servers.GameServer/1.0.0": { + "type": "project", + "path": "../ProjectLighthouse.Servers.GameServer/ProjectLighthouse.Servers.GameServer.csproj", + "msbuildProject": "../ProjectLighthouse.Servers.GameServer/ProjectLighthouse.Servers.GameServer.csproj" + }, + "LBPUnion.ProjectLighthouse.Tests/1.0.0": { + "type": "project", + "path": "../ProjectLighthouse.Tests/ProjectLighthouse.Tests.csproj", + "msbuildProject": "../ProjectLighthouse.Tests/ProjectLighthouse.Tests.csproj" + }, + "ProjectLighthouse.Localization/1.0.0": { + "type": "project", + "path": "../ProjectLighthouse.Localization/ProjectLighthouse.Localization.csproj", + "msbuildProject": "../ProjectLighthouse.Localization/ProjectLighthouse.Localization.csproj" + } + }, + "projectFileDependencyGroups": { + "net8.0": [ + "JetBrains.Annotations >= 2024.3.0", + "LBPUnion.ProjectLighthouse >= 1.0.0", + "LBPUnion.ProjectLighthouse.Servers.GameServer >= 1.0.0", + "LBPUnion.ProjectLighthouse.Tests >= 1.0.0", + "Microsoft.AspNetCore.Mvc.Testing >= 8.0.18", + "Microsoft.EntityFrameworkCore.Design >= 8.0.18", + "Microsoft.NET.Test.Sdk >= 17.14.1", + "coverlet.collector >= 6.0.4", + "xunit >= 2.9.3", + "xunit.runner.visualstudio >= 3.1.1" + ] + }, + "packageFolders": { + "C:\\Users\\Faisa\\.nuget\\packages\\": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests.GameApiTests\\ProjectLighthouse.Tests.GameApiTests.csproj", + "projectName": "ProjectLighthouse.Tests.GameApiTests", + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests.GameApiTests\\ProjectLighthouse.Tests.GameApiTests.csproj", + "packagesPath": "C:\\Users\\Faisa\\.nuget\\packages\\", + "outputPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests.GameApiTests\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Faisa\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Servers.GameServer\\ProjectLighthouse.Servers.GameServer.csproj": { + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Servers.GameServer\\ProjectLighthouse.Servers.GameServer.csproj" + }, + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests\\ProjectLighthouse.Tests.csproj": { + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests\\ProjectLighthouse.Tests.csproj" + }, + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\ProjectLighthouse.csproj": { + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\ProjectLighthouse.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.300" + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "JetBrains.Annotations": { + "target": "Package", + "version": "[2024.3.0, )" + }, + "Microsoft.AspNetCore.Mvc.Testing": { + "target": "Package", + "version": "[8.0.18, )" + }, + "Microsoft.EntityFrameworkCore.Design": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[8.0.18, )" + }, + "Microsoft.NET.Test.Sdk": { + "target": "Package", + "version": "[17.14.1, )" + }, + "coverlet.collector": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[6.0.4, )" + }, + "xunit": { + "target": "Package", + "version": "[2.9.3, )" + }, + "xunit.runner.visualstudio": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[3.1.1, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.NETCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.WindowsDesktop.App.Ref", + "version": "[8.0.19, 8.0.19]" + } + ], + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/ProjectLighthouse.Tests.GameApiTests/obj/project.nuget.cache b/ProjectLighthouse.Tests.GameApiTests/obj/project.nuget.cache new file mode 100644 index 00000000..d27d5129 --- /dev/null +++ b/ProjectLighthouse.Tests.GameApiTests/obj/project.nuget.cache @@ -0,0 +1,124 @@ +{ + "version": 2, + "dgSpecHash": "aVIlhUPul2g=", + "success": true, + "projectFilePath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests.GameApiTests\\ProjectLighthouse.Tests.GameApiTests.csproj", + "expectedPackageFiles": [ + "C:\\Users\\Faisa\\.nuget\\packages\\bcrypt.net-next\\4.0.3\\bcrypt.net-next.4.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\bouncycastle.cryptography\\2.6.1\\bouncycastle.cryptography.2.6.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\castle.core\\5.1.1\\castle.core.5.1.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\coverlet.collector\\6.0.4\\coverlet.collector.6.0.4.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\discord.net.core\\3.17.4\\discord.net.core.3.17.4.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\discord.net.rest\\3.17.4\\discord.net.rest.3.17.4.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\discord.net.webhook\\3.17.4\\discord.net.webhook.3.17.4.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\distributedlock.core\\1.0.6\\distributedlock.core.1.0.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\distributedlock.mysql\\1.0.2\\distributedlock.mysql.1.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\humanizer.core\\2.14.1\\humanizer.core.2.14.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\jetbrains.annotations\\2024.3.0\\jetbrains.annotations.2024.3.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.aspnetcore.diagnostics.entityframeworkcore\\8.0.18\\microsoft.aspnetcore.diagnostics.entityframeworkcore.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.aspnetcore.mvc.testing\\8.0.18\\microsoft.aspnetcore.mvc.testing.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.aspnetcore.testhost\\8.0.18\\microsoft.aspnetcore.testhost.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\8.0.0\\microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.codeanalysis.analyzers\\3.3.3\\microsoft.codeanalysis.analyzers.3.3.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.codeanalysis.common\\4.5.0\\microsoft.codeanalysis.common.4.5.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.codeanalysis.csharp\\4.5.0\\microsoft.codeanalysis.csharp.4.5.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.codeanalysis.csharp.workspaces\\4.5.0\\microsoft.codeanalysis.csharp.workspaces.4.5.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.codeanalysis.workspaces.common\\4.5.0\\microsoft.codeanalysis.workspaces.common.4.5.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.codecoverage\\17.14.1\\microsoft.codecoverage.17.14.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.data.sqlite.core\\8.0.6\\microsoft.data.sqlite.core.8.0.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore\\8.0.18\\microsoft.entityframeworkcore.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\8.0.18\\microsoft.entityframeworkcore.abstractions.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\8.0.18\\microsoft.entityframeworkcore.analyzers.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore.design\\8.0.18\\microsoft.entityframeworkcore.design.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\8.0.18\\microsoft.entityframeworkcore.relational.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore.sqlite\\8.0.6\\microsoft.entityframeworkcore.sqlite.8.0.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore.sqlite.core\\8.0.6\\microsoft.entityframeworkcore.sqlite.core.8.0.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.apidescription.server\\8.0.0\\microsoft.extensions.apidescription.server.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\8.0.0\\microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.caching.memory\\8.0.1\\microsoft.extensions.caching.memory.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration\\8.0.0\\microsoft.extensions.configuration.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\8.0.0\\microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.binder\\8.0.2\\microsoft.extensions.configuration.binder.8.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.commandline\\8.0.0\\microsoft.extensions.configuration.commandline.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.environmentvariables\\8.0.0\\microsoft.extensions.configuration.environmentvariables.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.fileextensions\\8.0.1\\microsoft.extensions.configuration.fileextensions.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.json\\8.0.1\\microsoft.extensions.configuration.json.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.usersecrets\\8.0.1\\microsoft.extensions.configuration.usersecrets.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\8.0.1\\microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.2\\microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.dependencymodel\\8.0.2\\microsoft.extensions.dependencymodel.8.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.diagnostics\\8.0.1\\microsoft.extensions.diagnostics.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.diagnostics.abstractions\\8.0.1\\microsoft.extensions.diagnostics.abstractions.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.fileproviders.abstractions\\8.0.0\\microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.fileproviders.physical\\8.0.0\\microsoft.extensions.fileproviders.physical.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.filesystemglobbing\\8.0.0\\microsoft.extensions.filesystemglobbing.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.hosting\\8.0.1\\microsoft.extensions.hosting.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.hosting.abstractions\\8.0.1\\microsoft.extensions.hosting.abstractions.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging\\8.0.1\\microsoft.extensions.logging.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.2\\microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging.configuration\\8.0.1\\microsoft.extensions.logging.configuration.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging.console\\8.0.1\\microsoft.extensions.logging.console.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging.debug\\8.0.1\\microsoft.extensions.logging.debug.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging.eventlog\\8.0.1\\microsoft.extensions.logging.eventlog.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging.eventsource\\8.0.1\\microsoft.extensions.logging.eventsource.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.options\\8.0.2\\microsoft.extensions.options.8.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.options.configurationextensions\\8.0.0\\microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.primitives\\8.0.0\\microsoft.extensions.primitives.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.net.test.sdk\\17.14.1\\microsoft.net.test.sdk.17.14.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.openapi\\1.6.23\\microsoft.openapi.1.6.23.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.testplatform.objectmodel\\17.14.1\\microsoft.testplatform.objectmodel.17.14.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.testplatform.testhost\\17.14.1\\microsoft.testplatform.testhost.17.14.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\mono.texttemplating\\2.2.1\\mono.texttemplating.2.2.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\moq\\4.20.72\\moq.4.20.72.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\mysqlconnector\\2.3.5\\mysqlconnector.2.3.5.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\newtonsoft.json\\13.0.3\\newtonsoft.json.13.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\pfim\\0.11.3\\pfim.0.11.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\pipelines.sockets.unofficial\\2.2.8\\pipelines.sockets.unofficial.2.2.8.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\pomelo.entityframeworkcore.mysql\\8.0.2\\pomelo.entityframeworkcore.mysql.8.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\redis.om\\1.0.1\\redis.om.1.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\sharpziplib\\1.4.2\\sharpziplib.1.4.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\sixlabors.imagesharp\\3.1.10\\sixlabors.imagesharp.3.1.10.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\sqlitepclraw.bundle_e_sqlite3\\2.1.6\\sqlitepclraw.bundle_e_sqlite3.2.1.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\sqlitepclraw.core\\2.1.6\\sqlitepclraw.core.2.1.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\sqlitepclraw.lib.e_sqlite3\\2.1.6\\sqlitepclraw.lib.e_sqlite3.2.1.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\sqlitepclraw.provider.e_sqlite3\\2.1.6\\sqlitepclraw.provider.e_sqlite3.2.1.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\stackexchange.redis\\2.7.17\\stackexchange.redis.2.7.17.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\swashbuckle.aspnetcore\\9.0.3\\swashbuckle.aspnetcore.9.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\swashbuckle.aspnetcore.swagger\\9.0.3\\swashbuckle.aspnetcore.swagger.9.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\swashbuckle.aspnetcore.swaggergen\\9.0.3\\swashbuckle.aspnetcore.swaggergen.9.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\swashbuckle.aspnetcore.swaggerui\\9.0.3\\swashbuckle.aspnetcore.swaggerui.9.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.codedom\\4.4.0\\system.codedom.4.4.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.collections.immutable\\8.0.0\\system.collections.immutable.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.composition\\6.0.0\\system.composition.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.composition.attributedmodel\\6.0.0\\system.composition.attributedmodel.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.composition.convention\\6.0.0\\system.composition.convention.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.composition.hosting\\6.0.0\\system.composition.hosting.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.composition.runtime\\6.0.0\\system.composition.runtime.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.composition.typedparts\\6.0.0\\system.composition.typedparts.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.diagnostics.eventlog\\8.0.1\\system.diagnostics.eventlog.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.interactive.async\\6.0.1\\system.interactive.async.6.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.io.pipelines\\8.0.0\\system.io.pipelines.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.linq.async\\6.0.1\\system.linq.async.6.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.memory\\4.5.3\\system.memory.4.5.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.reflection.metadata\\8.0.0\\system.reflection.metadata.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.text.encoding.codepages\\6.0.0\\system.text.encoding.codepages.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.text.json\\8.0.5\\system.text.json.8.0.5.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.threading.channels\\6.0.0\\system.threading.channels.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.valuetuple\\4.5.0\\system.valuetuple.4.5.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\ulid\\1.2.6\\ulid.1.2.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit\\2.9.3\\xunit.2.9.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.abstractions\\2.0.3\\xunit.abstractions.2.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.analyzers\\1.18.0\\xunit.analyzers.1.18.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.assert\\2.9.3\\xunit.assert.2.9.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.core\\2.9.3\\xunit.core.2.9.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.extensibility.core\\2.9.3\\xunit.extensibility.core.2.9.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.extensibility.execution\\2.9.3\\xunit.extensibility.execution.2.9.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.runner.visualstudio\\3.1.1\\xunit.runner.visualstudio.3.1.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\yamldotnet\\16.3.0\\yamldotnet.16.3.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.netcore.app.ref\\8.0.19\\microsoft.netcore.app.ref.8.0.19.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.windowsdesktop.app.ref\\8.0.19\\microsoft.windowsdesktop.app.ref.8.0.19.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.aspnetcore.app.ref\\8.0.19\\microsoft.aspnetcore.app.ref.8.0.19.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/ProjectLighthouse.Tests.WebsiteTests/AssemblyInfo.cs b/ProjectLighthouse.Tests.WebsiteTests/AssemblyInfo.cs index 7db84979..83577565 100644 --- a/ProjectLighthouse.Tests.WebsiteTests/AssemblyInfo.cs +++ b/ProjectLighthouse.Tests.WebsiteTests/AssemblyInfo.cs @@ -1,3 +1,3 @@ -using Xunit; - +using Xunit; + [assembly: CollectionBehavior(DisableTestParallelization = true)] \ No newline at end of file diff --git a/ProjectLighthouse.Tests.WebsiteTests/Extensions/WebDriverExtensions.cs b/ProjectLighthouse.Tests.WebsiteTests/Extensions/WebDriverExtensions.cs index 0dcaf297..503c5285 100644 --- a/ProjectLighthouse.Tests.WebsiteTests/Extensions/WebDriverExtensions.cs +++ b/ProjectLighthouse.Tests.WebsiteTests/Extensions/WebDriverExtensions.cs @@ -1,13 +1,13 @@ -using System; -using OpenQA.Selenium; - -namespace ProjectLighthouse.Tests.WebsiteTests.Extensions; - -public static class WebDriverExtensions -{ - private static Uri GetUri(this IWebDriver driver) => new(driver.Url); - - public static string GetPath(this IWebDriver driver) => driver.GetUri().AbsolutePath; - - public static string GetErrorMessage(this IWebDriver driver) => driver.FindElement(By.CssSelector("#error-message > p")).Text; +using System; +using OpenQA.Selenium; + +namespace ProjectLighthouse.Tests.WebsiteTests.Extensions; + +public static class WebDriverExtensions +{ + private static Uri GetUri(this IWebDriver driver) => new(driver.Url); + + public static string GetPath(this IWebDriver driver) => driver.GetUri().AbsolutePath; + + public static string GetErrorMessage(this IWebDriver driver) => driver.FindElement(By.CssSelector("#error-message > p")).Text; } \ No newline at end of file diff --git a/ProjectLighthouse.Tests.WebsiteTests/Integration/AdminTests.cs b/ProjectLighthouse.Tests.WebsiteTests/Integration/AdminTests.cs index 93b9e1f4..ba82fb5e 100644 --- a/ProjectLighthouse.Tests.WebsiteTests/Integration/AdminTests.cs +++ b/ProjectLighthouse.Tests.WebsiteTests/Integration/AdminTests.cs @@ -1,72 +1,72 @@ -using System; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Helpers; -using LBPUnion.ProjectLighthouse.Tests.Helpers; -using LBPUnion.ProjectLighthouse.Types.Entities.Profile; -using LBPUnion.ProjectLighthouse.Types.Entities.Token; -using LBPUnion.ProjectLighthouse.Types.Users; -using OpenQA.Selenium; -using Xunit; - -namespace ProjectLighthouse.Tests.WebsiteTests.Integration; - -[Trait("Category", "Integration")] -public class AdminTests : LighthouseWebTest -{ - private const string adminPanelButtonXPath = "/html/body/div/header/div/div/div/a[2]/span"; - - [Fact] - public async Task ShouldShowAdminPanelButtonWhenAdmin() - { - await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); - this.Driver.Manage().Cookies.DeleteAllCookies(); - - UserEntity user = await database.CreateUser($"unitTestUser{CryptoHelper.GenerateRandomInt32()}", CryptoHelper.BCryptHash("i'm an engineering failure")); - - WebTokenEntity webToken = new() - { - UserId = user.UserId, - UserToken = CryptoHelper.GenerateAuthToken(), - ExpiresAt = DateTime.UtcNow + TimeSpan.FromHours(1), - Verified = true, - }; - - database.WebTokens.Add(webToken); - user.PermissionLevel = PermissionLevel.Administrator; - await database.SaveChangesAsync(); - - this.Driver.Navigate().GoToUrl(this.BaseAddress + "/"); - this.Driver.Manage().Cookies.AddCookie(new Cookie("LighthouseToken", webToken.UserToken)); - this.Driver.Navigate().Refresh(); - - Assert.Equal("Admin", this.Driver.FindElement(By.XPath(adminPanelButtonXPath)).Text); - } - - [Fact] - public async Task ShouldNotShowAdminPanelButtonWhenNotAdmin() - { - await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); - this.Driver.Manage().Cookies.DeleteAllCookies(); - - UserEntity user = await database.CreateUser($"unitTestUser{CryptoHelper.GenerateRandomInt32()}", CryptoHelper.BCryptHash("i'm an engineering failure")); - - WebTokenEntity webToken = new() - { - UserId = user.UserId, - UserToken = CryptoHelper.GenerateAuthToken(), - ExpiresAt = DateTime.UtcNow + TimeSpan.FromHours(1), - Verified = true, - }; - - database.WebTokens.Add(webToken); - user.PermissionLevel = PermissionLevel.Default; - await database.SaveChangesAsync(); - - this.Driver.Navigate().GoToUrl(this.BaseAddress + "/"); - this.Driver.Manage().Cookies.AddCookie(new Cookie("LighthouseToken", webToken.UserToken)); - this.Driver.Navigate().Refresh(); - - Assert.Empty(this.Driver.FindElements(By.XPath(adminPanelButtonXPath))); - } +using System; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Helpers; +using LBPUnion.ProjectLighthouse.Tests.Helpers; +using LBPUnion.ProjectLighthouse.Types.Entities.Profile; +using LBPUnion.ProjectLighthouse.Types.Entities.Token; +using LBPUnion.ProjectLighthouse.Types.Users; +using OpenQA.Selenium; +using Xunit; + +namespace ProjectLighthouse.Tests.WebsiteTests.Integration; + +[Trait("Category", "Integration")] +public class AdminTests : LighthouseWebTest +{ + private const string adminPanelButtonXPath = "/html/body/div/header/div/div/div/a[2]/span"; + + [Fact] + public async Task ShouldShowAdminPanelButtonWhenAdmin() + { + await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); + this.Driver.Manage().Cookies.DeleteAllCookies(); + + UserEntity user = await database.CreateUser($"unitTestUser{CryptoHelper.GenerateRandomInt32()}", CryptoHelper.BCryptHash("i'm an engineering failure")); + + WebTokenEntity webToken = new() + { + UserId = user.UserId, + UserToken = CryptoHelper.GenerateAuthToken(), + ExpiresAt = DateTime.UtcNow + TimeSpan.FromHours(1), + Verified = true, + }; + + database.WebTokens.Add(webToken); + user.PermissionLevel = PermissionLevel.Administrator; + await database.SaveChangesAsync(); + + this.Driver.Navigate().GoToUrl(this.BaseAddress + "/"); + this.Driver.Manage().Cookies.AddCookie(new Cookie("LighthouseToken", webToken.UserToken)); + this.Driver.Navigate().Refresh(); + + Assert.Equal("Admin", this.Driver.FindElement(By.XPath(adminPanelButtonXPath)).Text); + } + + [Fact] + public async Task ShouldNotShowAdminPanelButtonWhenNotAdmin() + { + await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); + this.Driver.Manage().Cookies.DeleteAllCookies(); + + UserEntity user = await database.CreateUser($"unitTestUser{CryptoHelper.GenerateRandomInt32()}", CryptoHelper.BCryptHash("i'm an engineering failure")); + + WebTokenEntity webToken = new() + { + UserId = user.UserId, + UserToken = CryptoHelper.GenerateAuthToken(), + ExpiresAt = DateTime.UtcNow + TimeSpan.FromHours(1), + Verified = true, + }; + + database.WebTokens.Add(webToken); + user.PermissionLevel = PermissionLevel.Default; + await database.SaveChangesAsync(); + + this.Driver.Navigate().GoToUrl(this.BaseAddress + "/"); + this.Driver.Manage().Cookies.AddCookie(new Cookie("LighthouseToken", webToken.UserToken)); + this.Driver.Navigate().Refresh(); + + Assert.Empty(this.Driver.FindElements(By.XPath(adminPanelButtonXPath))); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests.WebsiteTests/Integration/AuthenticationTests.cs b/ProjectLighthouse.Tests.WebsiteTests/Integration/AuthenticationTests.cs index ce6316a7..cdd528c8 100644 --- a/ProjectLighthouse.Tests.WebsiteTests/Integration/AuthenticationTests.cs +++ b/ProjectLighthouse.Tests.WebsiteTests/Integration/AuthenticationTests.cs @@ -1,112 +1,112 @@ -using System; -using System.Linq; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Helpers; -using LBPUnion.ProjectLighthouse.Localization.StringLists; -using LBPUnion.ProjectLighthouse.Tests.Helpers; -using LBPUnion.ProjectLighthouse.Types.Entities.Profile; -using LBPUnion.ProjectLighthouse.Types.Entities.Token; -using Microsoft.EntityFrameworkCore; -using OpenQA.Selenium; -using ProjectLighthouse.Tests.WebsiteTests.Extensions; -using Xunit; - -namespace ProjectLighthouse.Tests.WebsiteTests.Integration; - -[Trait("Category", "Integration")] -public class AuthenticationTests : LighthouseWebTest -{ - [Fact] - public async Task ShouldLoginWithPassword() - { - await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); - this.Driver.Manage().Cookies.DeleteAllCookies(); - - string password = CryptoHelper.Sha256Hash(CryptoHelper.GenerateRandomBytes(64).ToArray()); - UserEntity user = await database.CreateUser($"unitTestUser{CryptoHelper.GenerateRandomInt32()}", CryptoHelper.BCryptHash(CryptoHelper.Sha256Hash(password))); - - // Sometimes not having this causes a race condition - // ReSharper disable once MethodHasAsyncOverload - database.SaveChanges(); - - await this.Driver.Navigate().GoToUrlAsync(this.BaseAddress + "/login"); - - this.Driver.FindElement(By.Id("text")).SendKeys(user.Username); - this.Driver.FindElement(By.Id("password")).SendKeys(password); - - this.Driver.FindElement(By.Id("submit")).Click(); - - WebTokenEntity? webToken = await database.WebTokens.FirstOrDefaultAsync(t => t.UserId == user.UserId); - Assert.NotNull(webToken); - } - - [Fact] - public async Task ShouldNotLoginWithNoPassword() - { - await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); - this.Driver.Manage().Cookies.DeleteAllCookies(); - - UserEntity user = await database.CreateUser($"unitTestUser{CryptoHelper.GenerateRandomInt32()}", CryptoHelper.BCryptHash("just like the hindenberg,")); - - this.Driver.Navigate().GoToUrl(this.BaseAddress + "/login"); - - this.Driver.FindElement(By.Id("text")).SendKeys(user.Username); - - this.Driver.FindElement(By.Id("submit")).Click(); - - WebTokenEntity? webToken = await database.WebTokens.FirstOrDefaultAsync(t => t.UserId == user.UserId); - Assert.Null(webToken); - - Assert.Equal("/login", this.Driver.GetPath()); - Assert.Equal("The username or password you entered is invalid.", this.Driver.GetErrorMessage()); - } - - [Fact] - public async Task ShouldNotLoginWithWrongPassword() - { - await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); - this.Driver.Manage().Cookies.DeleteAllCookies(); - - UserEntity user = await database.CreateUser($"unitTestUser{CryptoHelper.GenerateRandomInt32()}", CryptoHelper.BCryptHash("i'm an engineering failure")); - - this.Driver.Navigate().GoToUrl(this.BaseAddress + "/login"); - - this.Driver.FindElement(By.Id("text")).SendKeys(user.Username); - this.Driver.FindElement(By.Id("password")).SendKeys("nah man"); - - this.Driver.FindElement(By.Id("submit")).Click(); - - WebTokenEntity? webToken = await database.WebTokens.FirstOrDefaultAsync(t => t.UserId == user.UserId); - Assert.Null(webToken); - } - - [Fact] - public async Task ShouldLoginWithInjectedCookie() - { - const string loggedInAsUsernameTextXPath = "/html/body/div/div/div/div/p[1]"; - - await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); - UserEntity user = await database.CreateUser($"unitTestUser{CryptoHelper.GenerateRandomInt32()}", CryptoHelper.BCryptHash("i'm an engineering failure")); - - WebTokenEntity webToken = new() - { - UserId = user.UserId, - UserToken = CryptoHelper.GenerateAuthToken(), - ExpiresAt = DateTime.UtcNow + TimeSpan.FromHours(1), - Verified = true, - }; - - database.WebTokens.Add(webToken); - await database.SaveChangesAsync(); - - INavigation navigation = this.Driver.Navigate(); - - navigation.GoToUrl(this.BaseAddress + "/"); - Assert.DoesNotContain(user.Username, this.Driver.FindElement(By.XPath(loggedInAsUsernameTextXPath)).Text); - this.Driver.Manage().Cookies.AddCookie(new Cookie("LighthouseToken", webToken.UserToken)); - navigation.Refresh(); - - Assert.Equal(Translate(LandingPageStrings.LoggedInAs, user.Username), this.Driver.FindElement(By.XPath(loggedInAsUsernameTextXPath)).Text); - } +using System; +using System.Linq; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Helpers; +using LBPUnion.ProjectLighthouse.Localization.StringLists; +using LBPUnion.ProjectLighthouse.Tests.Helpers; +using LBPUnion.ProjectLighthouse.Types.Entities.Profile; +using LBPUnion.ProjectLighthouse.Types.Entities.Token; +using Microsoft.EntityFrameworkCore; +using OpenQA.Selenium; +using ProjectLighthouse.Tests.WebsiteTests.Extensions; +using Xunit; + +namespace ProjectLighthouse.Tests.WebsiteTests.Integration; + +[Trait("Category", "Integration")] +public class AuthenticationTests : LighthouseWebTest +{ + [Fact] + public async Task ShouldLoginWithPassword() + { + await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); + this.Driver.Manage().Cookies.DeleteAllCookies(); + + string password = CryptoHelper.Sha256Hash(CryptoHelper.GenerateRandomBytes(64).ToArray()); + UserEntity user = await database.CreateUser($"unitTestUser{CryptoHelper.GenerateRandomInt32()}", CryptoHelper.BCryptHash(CryptoHelper.Sha256Hash(password))); + + // Sometimes not having this causes a race condition + // ReSharper disable once MethodHasAsyncOverload + database.SaveChanges(); + + await this.Driver.Navigate().GoToUrlAsync(this.BaseAddress + "/login"); + + this.Driver.FindElement(By.Id("text")).SendKeys(user.Username); + this.Driver.FindElement(By.Id("password")).SendKeys(password); + + this.Driver.FindElement(By.Id("submit")).Click(); + + WebTokenEntity? webToken = await database.WebTokens.FirstOrDefaultAsync(t => t.UserId == user.UserId); + Assert.NotNull(webToken); + } + + [Fact] + public async Task ShouldNotLoginWithNoPassword() + { + await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); + this.Driver.Manage().Cookies.DeleteAllCookies(); + + UserEntity user = await database.CreateUser($"unitTestUser{CryptoHelper.GenerateRandomInt32()}", CryptoHelper.BCryptHash("just like the hindenberg,")); + + this.Driver.Navigate().GoToUrl(this.BaseAddress + "/login"); + + this.Driver.FindElement(By.Id("text")).SendKeys(user.Username); + + this.Driver.FindElement(By.Id("submit")).Click(); + + WebTokenEntity? webToken = await database.WebTokens.FirstOrDefaultAsync(t => t.UserId == user.UserId); + Assert.Null(webToken); + + Assert.Equal("/login", this.Driver.GetPath()); + Assert.Equal("The username or password you entered is invalid.", this.Driver.GetErrorMessage()); + } + + [Fact] + public async Task ShouldNotLoginWithWrongPassword() + { + await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); + this.Driver.Manage().Cookies.DeleteAllCookies(); + + UserEntity user = await database.CreateUser($"unitTestUser{CryptoHelper.GenerateRandomInt32()}", CryptoHelper.BCryptHash("i'm an engineering failure")); + + this.Driver.Navigate().GoToUrl(this.BaseAddress + "/login"); + + this.Driver.FindElement(By.Id("text")).SendKeys(user.Username); + this.Driver.FindElement(By.Id("password")).SendKeys("nah man"); + + this.Driver.FindElement(By.Id("submit")).Click(); + + WebTokenEntity? webToken = await database.WebTokens.FirstOrDefaultAsync(t => t.UserId == user.UserId); + Assert.Null(webToken); + } + + [Fact] + public async Task ShouldLoginWithInjectedCookie() + { + const string loggedInAsUsernameTextXPath = "/html/body/div/div/div/div/p[1]"; + + await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); + UserEntity user = await database.CreateUser($"unitTestUser{CryptoHelper.GenerateRandomInt32()}", CryptoHelper.BCryptHash("i'm an engineering failure")); + + WebTokenEntity webToken = new() + { + UserId = user.UserId, + UserToken = CryptoHelper.GenerateAuthToken(), + ExpiresAt = DateTime.UtcNow + TimeSpan.FromHours(1), + Verified = true, + }; + + database.WebTokens.Add(webToken); + await database.SaveChangesAsync(); + + INavigation navigation = this.Driver.Navigate(); + + navigation.GoToUrl(this.BaseAddress + "/"); + Assert.DoesNotContain(user.Username, this.Driver.FindElement(By.XPath(loggedInAsUsernameTextXPath)).Text); + this.Driver.Manage().Cookies.AddCookie(new Cookie("LighthouseToken", webToken.UserToken)); + navigation.Refresh(); + + Assert.Equal(Translate(LandingPageStrings.LoggedInAs, user.Username), this.Driver.FindElement(By.XPath(loggedInAsUsernameTextXPath)).Text); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests.WebsiteTests/Integration/LighthouseWebTest.cs b/ProjectLighthouse.Tests.WebsiteTests/Integration/LighthouseWebTest.cs index 48b61077..12582c25 100644 --- a/ProjectLighthouse.Tests.WebsiteTests/Integration/LighthouseWebTest.cs +++ b/ProjectLighthouse.Tests.WebsiteTests/Integration/LighthouseWebTest.cs @@ -1,60 +1,60 @@ -using System; -using System.Linq; -using LBPUnion.ProjectLighthouse.Configuration; -using LBPUnion.ProjectLighthouse.Localization; -using LBPUnion.ProjectLighthouse.Servers.Website.Startup; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Hosting.Server.Features; -using OpenQA.Selenium; -using OpenQA.Selenium.Chrome; -using Xunit; - -namespace ProjectLighthouse.Tests.WebsiteTests.Integration; - -[Collection(nameof(LighthouseWebTest))] -public class LighthouseWebTest : IDisposable -{ - protected readonly string BaseAddress; - - protected readonly IWebDriver Driver; - private readonly IWebHost webHost = new WebHostBuilder().UseKestrel().UseStartup().UseWebRoot("StaticFiles").Build(); - - protected LighthouseWebTest() - { - ServerConfiguration.Instance.DbConnectionString = "server=127.0.0.1;uid=root;pwd=lighthouse_tests;database=lighthouse_tests"; - ServerConfiguration.Instance.TwoFactorConfiguration.TwoFactorEnabled = false; - - this.webHost.Start(); - - IServerAddressesFeature? serverAddressesFeature = this.webHost.ServerFeatures.Get(); - if (serverAddressesFeature == null) throw new ArgumentNullException(); - - this.BaseAddress = serverAddressesFeature.Addresses.First(); - - ChromeOptions chromeOptions = new(); - if (Convert.ToBoolean(Environment.GetEnvironmentVariable("CI") ?? "false")) - { - chromeOptions.AddArgument("headless"); - chromeOptions.AddArgument("no-sandbox"); - chromeOptions.AddArgument("disable-dev-shm-usage"); - Console.WriteLine(@"We are in a CI environment, so chrome headless mode has been enabled."); - } - - this.Driver = new ChromeDriver(chromeOptions); - this.Driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(1); - } - - protected static string Translate(TranslatableString translatableString) => translatableString.Translate(LocalizationManager.DefaultLang); - - protected static string Translate(TranslatableString translatableString, params object?[] objects) => - translatableString.Translate(LocalizationManager.DefaultLang, objects); - - public void Dispose() - { - this.Driver.Close(); - this.Driver.Dispose(); - this.webHost.Dispose(); - - GC.SuppressFinalize(this); - } +using System; +using System.Linq; +using LBPUnion.ProjectLighthouse.Configuration; +using LBPUnion.ProjectLighthouse.Localization; +using LBPUnion.ProjectLighthouse.Servers.Website.Startup; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Hosting.Server.Features; +using OpenQA.Selenium; +using OpenQA.Selenium.Chrome; +using Xunit; + +namespace ProjectLighthouse.Tests.WebsiteTests.Integration; + +[Collection(nameof(LighthouseWebTest))] +public class LighthouseWebTest : IDisposable +{ + protected readonly string BaseAddress; + + protected readonly IWebDriver Driver; + private readonly IWebHost webHost = new WebHostBuilder().UseKestrel().UseStartup().UseWebRoot("StaticFiles").Build(); + + protected LighthouseWebTest() + { + ServerConfiguration.Instance.DbConnectionString = "server=127.0.0.1;uid=root;pwd=lighthouse_tests;database=lighthouse_tests"; + ServerConfiguration.Instance.TwoFactorConfiguration.TwoFactorEnabled = false; + + this.webHost.Start(); + + IServerAddressesFeature? serverAddressesFeature = this.webHost.ServerFeatures.Get(); + if (serverAddressesFeature == null) throw new ArgumentNullException(); + + this.BaseAddress = serverAddressesFeature.Addresses.First(); + + ChromeOptions chromeOptions = new(); + if (Convert.ToBoolean(Environment.GetEnvironmentVariable("CI") ?? "false")) + { + chromeOptions.AddArgument("headless"); + chromeOptions.AddArgument("no-sandbox"); + chromeOptions.AddArgument("disable-dev-shm-usage"); + Console.WriteLine(@"We are in a CI environment, so chrome headless mode has been enabled."); + } + + this.Driver = new ChromeDriver(chromeOptions); + this.Driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(1); + } + + protected static string Translate(TranslatableString translatableString) => translatableString.Translate(LocalizationManager.DefaultLang); + + protected static string Translate(TranslatableString translatableString, params object?[] objects) => + translatableString.Translate(LocalizationManager.DefaultLang, objects); + + public void Dispose() + { + this.Driver.Close(); + this.Driver.Dispose(); + this.webHost.Dispose(); + + GC.SuppressFinalize(this); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests.WebsiteTests/Integration/RegisterTests.cs b/ProjectLighthouse.Tests.WebsiteTests/Integration/RegisterTests.cs index b1441bc2..f576474d 100644 --- a/ProjectLighthouse.Tests.WebsiteTests/Integration/RegisterTests.cs +++ b/ProjectLighthouse.Tests.WebsiteTests/Integration/RegisterTests.cs @@ -1,112 +1,112 @@ -using System.Linq; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Configuration; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Helpers; -using LBPUnion.ProjectLighthouse.Localization.StringLists; -using LBPUnion.ProjectLighthouse.Tests.Helpers; -using LBPUnion.ProjectLighthouse.Types.Entities.Profile; -using Microsoft.EntityFrameworkCore; -using OpenQA.Selenium; -using ProjectLighthouse.Tests.WebsiteTests.Extensions; -using Xunit; - -namespace ProjectLighthouse.Tests.WebsiteTests.Integration; - -[Trait("Category", "Integration")] -public class RegisterTests : LighthouseWebTest -{ - [Fact] - public async Task ShouldRegister() - { - await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); - this.Driver.Manage().Cookies.DeleteAllCookies(); - - ServerConfiguration.Instance.Authentication.RegistrationEnabled = true; - - string username = ("unitTestUser" + CryptoHelper.GenerateRandomInt32(0, int.MaxValue))[..16]; - string password = CryptoHelper.Sha256Hash(CryptoHelper.GenerateRandomBytes(64).ToArray()); - - this.Driver.Navigate().GoToUrl(this.BaseAddress + "/register"); - - this.Driver.FindElement(By.Id("text")).SendKeys(username); - - this.Driver.FindElement(By.Id("password")).SendKeys(password); - this.Driver.FindElement(By.Id("confirmPassword")).SendKeys(password); - - this.Driver.FindElement(By.Id("age-checkbox")).Click(); - - this.Driver.FindElement(By.Id("submit")).Click(); - - UserEntity? user = await database.Users.FirstOrDefaultAsync(u => u.Username == username); - Assert.NotNull(user); - - Assert.Equal("/", this.Driver.GetPath()); - - ServerConfiguration.Instance.Authentication.RegistrationEnabled = false; - } - - [Fact] - public async Task ShouldNotRegisterWithMismatchingPasswords() - { - await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); - this.Driver.Manage().Cookies.DeleteAllCookies(); - - ServerConfiguration.Instance.Authentication.RegistrationEnabled = true; - - string username = ("unitTestUser" + CryptoHelper.GenerateRandomInt32(0, int.MaxValue))[..16]; - string password = CryptoHelper.Sha256Hash(CryptoHelper.GenerateRandomBytes(64).ToArray()); - - this.Driver.Navigate().GoToUrl(this.BaseAddress + "/register"); - - this.Driver.FindElement(By.Id("text")).SendKeys(username); - - this.Driver.FindElement(By.Id("password")).SendKeys(password); - this.Driver.FindElement(By.Id("confirmPassword")).SendKeys(password + "a"); - - this.Driver.FindElement(By.Id("age-checkbox")).Click(); - - this.Driver.FindElement(By.Id("submit")).Click(); - - UserEntity? user = await database.Users.FirstOrDefaultAsync(u => u.Username == username); - Assert.Null(user); - - Assert.Equal("/register", this.Driver.GetPath()); - Assert.Equal(Translate(ErrorStrings.PasswordDoesntMatch), this.Driver.GetErrorMessage()); - - ServerConfiguration.Instance.Authentication.RegistrationEnabled = false; - } - - [Fact] - public async Task ShouldNotRegisterWithTakenUsername() - { - await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); - this.Driver.Manage().Cookies.DeleteAllCookies(); - - ServerConfiguration.Instance.Authentication.RegistrationEnabled = true; - - string username = ("unitTestUser" + CryptoHelper.GenerateRandomInt32(0, int.MaxValue))[..16]; - string password = CryptoHelper.Sha256Hash(CryptoHelper.GenerateRandomBytes(64).ToArray()); - - await database.CreateUser(username, CryptoHelper.BCryptHash(password)); - UserEntity? user = await database.Users.FirstOrDefaultAsync(u => u.Username == username); - Assert.NotNull(user); - - this.Driver.Navigate().GoToUrl(this.BaseAddress + "/register"); - - this.Driver.FindElement(By.Id("text")).SendKeys(username); - - this.Driver.FindElement(By.Id("password")).SendKeys(password); - this.Driver.FindElement(By.Id("confirmPassword")).SendKeys(password); - - this.Driver.FindElement(By.Id("age-checkbox")).Click(); - - this.Driver.FindElement(By.Id("submit")).Click(); - - Assert.Equal("/register", this.Driver.GetPath()); - - Assert.Equal(Translate(ErrorStrings.UsernameTaken), this.Driver.GetErrorMessage()); - - ServerConfiguration.Instance.Authentication.RegistrationEnabled = false; - } +using System.Linq; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Configuration; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Helpers; +using LBPUnion.ProjectLighthouse.Localization.StringLists; +using LBPUnion.ProjectLighthouse.Tests.Helpers; +using LBPUnion.ProjectLighthouse.Types.Entities.Profile; +using Microsoft.EntityFrameworkCore; +using OpenQA.Selenium; +using ProjectLighthouse.Tests.WebsiteTests.Extensions; +using Xunit; + +namespace ProjectLighthouse.Tests.WebsiteTests.Integration; + +[Trait("Category", "Integration")] +public class RegisterTests : LighthouseWebTest +{ + [Fact] + public async Task ShouldRegister() + { + await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); + this.Driver.Manage().Cookies.DeleteAllCookies(); + + ServerConfiguration.Instance.Authentication.RegistrationEnabled = true; + + string username = ("unitTestUser" + CryptoHelper.GenerateRandomInt32(0, int.MaxValue))[..16]; + string password = CryptoHelper.Sha256Hash(CryptoHelper.GenerateRandomBytes(64).ToArray()); + + this.Driver.Navigate().GoToUrl(this.BaseAddress + "/register"); + + this.Driver.FindElement(By.Id("text")).SendKeys(username); + + this.Driver.FindElement(By.Id("password")).SendKeys(password); + this.Driver.FindElement(By.Id("confirmPassword")).SendKeys(password); + + this.Driver.FindElement(By.Id("age-checkbox")).Click(); + + this.Driver.FindElement(By.Id("submit")).Click(); + + UserEntity? user = await database.Users.FirstOrDefaultAsync(u => u.Username == username); + Assert.NotNull(user); + + Assert.Equal("/", this.Driver.GetPath()); + + ServerConfiguration.Instance.Authentication.RegistrationEnabled = false; + } + + [Fact] + public async Task ShouldNotRegisterWithMismatchingPasswords() + { + await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); + this.Driver.Manage().Cookies.DeleteAllCookies(); + + ServerConfiguration.Instance.Authentication.RegistrationEnabled = true; + + string username = ("unitTestUser" + CryptoHelper.GenerateRandomInt32(0, int.MaxValue))[..16]; + string password = CryptoHelper.Sha256Hash(CryptoHelper.GenerateRandomBytes(64).ToArray()); + + this.Driver.Navigate().GoToUrl(this.BaseAddress + "/register"); + + this.Driver.FindElement(By.Id("text")).SendKeys(username); + + this.Driver.FindElement(By.Id("password")).SendKeys(password); + this.Driver.FindElement(By.Id("confirmPassword")).SendKeys(password + "a"); + + this.Driver.FindElement(By.Id("age-checkbox")).Click(); + + this.Driver.FindElement(By.Id("submit")).Click(); + + UserEntity? user = await database.Users.FirstOrDefaultAsync(u => u.Username == username); + Assert.Null(user); + + Assert.Equal("/register", this.Driver.GetPath()); + Assert.Equal(Translate(ErrorStrings.PasswordDoesntMatch), this.Driver.GetErrorMessage()); + + ServerConfiguration.Instance.Authentication.RegistrationEnabled = false; + } + + [Fact] + public async Task ShouldNotRegisterWithTakenUsername() + { + await using DatabaseContext database = await IntegrationHelper.GetIntegrationDatabase(); + this.Driver.Manage().Cookies.DeleteAllCookies(); + + ServerConfiguration.Instance.Authentication.RegistrationEnabled = true; + + string username = ("unitTestUser" + CryptoHelper.GenerateRandomInt32(0, int.MaxValue))[..16]; + string password = CryptoHelper.Sha256Hash(CryptoHelper.GenerateRandomBytes(64).ToArray()); + + await database.CreateUser(username, CryptoHelper.BCryptHash(password)); + UserEntity? user = await database.Users.FirstOrDefaultAsync(u => u.Username == username); + Assert.NotNull(user); + + this.Driver.Navigate().GoToUrl(this.BaseAddress + "/register"); + + this.Driver.FindElement(By.Id("text")).SendKeys(username); + + this.Driver.FindElement(By.Id("password")).SendKeys(password); + this.Driver.FindElement(By.Id("confirmPassword")).SendKeys(password); + + this.Driver.FindElement(By.Id("age-checkbox")).Click(); + + this.Driver.FindElement(By.Id("submit")).Click(); + + Assert.Equal("/register", this.Driver.GetPath()); + + Assert.Equal(Translate(ErrorStrings.UsernameTaken), this.Driver.GetErrorMessage()); + + ServerConfiguration.Instance.Authentication.RegistrationEnabled = false; + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests.WebsiteTests/ProjectLighthouse.Tests.WebsiteTests.csproj b/ProjectLighthouse.Tests.WebsiteTests/ProjectLighthouse.Tests.WebsiteTests.csproj index 2d78501d..c06fc9b4 100644 --- a/ProjectLighthouse.Tests.WebsiteTests/ProjectLighthouse.Tests.WebsiteTests.csproj +++ b/ProjectLighthouse.Tests.WebsiteTests/ProjectLighthouse.Tests.WebsiteTests.csproj @@ -1,38 +1,38 @@ - - - - net8.0 - enable - - false - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - - - - - - - - + + + + net8.0 + enable + + false + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + + + + diff --git a/ProjectLighthouse.Tests.WebsiteTests/bin/Debug/net8.0/CoverletSourceRootsMapping_ProjectLighthouse.Tests.WebsiteTests b/ProjectLighthouse.Tests.WebsiteTests/bin/Debug/net8.0/CoverletSourceRootsMapping_ProjectLighthouse.Tests.WebsiteTests new file mode 100644 index 0000000000000000000000000000000000000000..18253f37c5e210a4bf4992dd96bf7ef56447e4ab GIT binary patch literal 3818 zcmezW&z-@FA%?++!HFS&L4m=TL4m=a!H>a*!IQy{!IeRQ!I2?|!I{B>!IL43!4Q5*acXiWw3aVi@!o@)$}P(iu`2N*H1o3K$X@k{PlY62T%MwYC)M z=Vjnx7>e-}!jQ^P%uoUjFT!!J$AC~j8vc~$6XNpHXga67Jn~`4XGms9WXNI2WT;|D zWGG?CWXNa8BeFEZrF%3FP@V?{qOKThCAICKt2;*Pv(Yp{C~ptVG(t|DJDL`TXIju> Vz*Vyomr8KyMsF94rXOO`4*&*pf +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("ProjectLighthouse.Tests.WebsiteTests")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+509240db396eac0c69bd7ed8e09b71f630a8de72")] +[assembly: System.Reflection.AssemblyProductAttribute("ProjectLighthouse.Tests.WebsiteTests")] +[assembly: System.Reflection.AssemblyTitleAttribute("ProjectLighthouse.Tests.WebsiteTests")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/ProjectLighthouse.Tests.WebsiteTests/obj/Debug/net8.0/ProjectLighthouse.Tests.WebsiteTests.AssemblyInfoInputs.cache b/ProjectLighthouse.Tests.WebsiteTests/obj/Debug/net8.0/ProjectLighthouse.Tests.WebsiteTests.AssemblyInfoInputs.cache new file mode 100644 index 00000000..0f701e2f --- /dev/null +++ b/ProjectLighthouse.Tests.WebsiteTests/obj/Debug/net8.0/ProjectLighthouse.Tests.WebsiteTests.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +9114fff14b95c5135b680ce99db8a619d63b955e22fd4bdb8264f2831b631f6f diff --git a/ProjectLighthouse.Tests.WebsiteTests/obj/Debug/net8.0/ProjectLighthouse.Tests.WebsiteTests.GeneratedMSBuildEditorConfig.editorconfig b/ProjectLighthouse.Tests.WebsiteTests/obj/Debug/net8.0/ProjectLighthouse.Tests.WebsiteTests.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..064d2b5d --- /dev/null +++ b/ProjectLighthouse.Tests.WebsiteTests/obj/Debug/net8.0/ProjectLighthouse.Tests.WebsiteTests.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,15 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = ProjectLighthouse.Tests.WebsiteTests +build_property.ProjectDir = G:\LBP 3 ONLINE ARCHIVE\LBP 3 ONLINE SITE RECREACTION\ProjectLighthouse\ProjectLighthouse.Tests.WebsiteTests\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.EffectiveAnalysisLevelStyle = 8.0 +build_property.EnableCodeStyleSeverity = diff --git a/ProjectLighthouse.Tests.WebsiteTests/obj/Debug/net8.0/ProjectLighthouse.Tests.WebsiteTests.assets.cache b/ProjectLighthouse.Tests.WebsiteTests/obj/Debug/net8.0/ProjectLighthouse.Tests.WebsiteTests.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..7827fd436d380bb66d055214ab9203dae303879c GIT binary patch literal 108372 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 S+J|dJwvxDOez67tNGkxXuCi?a literal 0 HcmV?d00001 diff --git a/ProjectLighthouse.Tests.WebsiteTests/obj/Debug/net8.0/ProjectLighthouse.Tests.WebsiteTests.csproj.AssemblyReference.cache b/ProjectLighthouse.Tests.WebsiteTests/obj/Debug/net8.0/ProjectLighthouse.Tests.WebsiteTests.csproj.AssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..39837618efe2ebbdb6c0bbdc510882744d0f3e77 GIT binary patch literal 26940 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�U~fsQo+Q^D}4&uOKI} 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 + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\Faisa\.nuget\packages\ + PackageReference + 6.14.0 + + + + + + + + + + + + + + + + C:\Users\Faisa\.nuget\packages\xunit.analyzers\1.18.0 + C:\Users\Faisa\.nuget\packages\microsoft.extensions.apidescription.server\8.0.0 + C:\Users\Faisa\.nuget\packages\microsoft.codeanalysis.analyzers\3.3.3 + + \ No newline at end of file diff --git a/ProjectLighthouse.Tests.WebsiteTests/obj/ProjectLighthouse.Tests.WebsiteTests.csproj.nuget.g.targets b/ProjectLighthouse.Tests.WebsiteTests/obj/ProjectLighthouse.Tests.WebsiteTests.csproj.nuget.g.targets new file mode 100644 index 00000000..01533a70 --- /dev/null +++ b/ProjectLighthouse.Tests.WebsiteTests/obj/ProjectLighthouse.Tests.WebsiteTests.csproj.nuget.g.targets @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ProjectLighthouse.Tests.WebsiteTests/obj/project.assets.json b/ProjectLighthouse.Tests.WebsiteTests/obj/project.assets.json new file mode 100644 index 00000000..fac8da67 --- /dev/null +++ b/ProjectLighthouse.Tests.WebsiteTests/obj/project.assets.json @@ -0,0 +1,6058 @@ +{ + "version": 3, + "targets": { + "net8.0": { + "BCrypt.Net-Next/4.0.3": { + "type": "package", + "compile": { + "lib/net6.0/BCrypt.Net-Next.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/BCrypt.Net-Next.dll": { + "related": ".xml" + } + } + }, + "BouncyCastle.Cryptography/2.6.1": { + "type": "package", + "compile": { + "lib/net6.0/BouncyCastle.Cryptography.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/BouncyCastle.Cryptography.dll": { + "related": ".xml" + } + } + }, + "Castle.Core/5.1.1": { + "type": "package", + "dependencies": { + "System.Diagnostics.EventLog": "6.0.0" + }, + "compile": { + "lib/net6.0/Castle.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Castle.Core.dll": { + "related": ".xml" + } + } + }, + "coverlet.collector/6.0.4": { + "type": "package", + "build": { + "build/netstandard2.0/coverlet.collector.targets": {} + } + }, + "Discord.Net.Core/3.17.4": { + "type": "package", + "dependencies": { + "Newtonsoft.Json": "13.0.3", + "System.Collections.Immutable": "8.0.0", + "System.Interactive.Async": "6.0.1", + "System.ValueTuple": "4.5.0" + }, + "compile": { + "lib/net8.0/Discord.Net.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Discord.Net.Core.dll": { + "related": ".xml" + } + } + }, + "Discord.Net.Rest/3.17.4": { + "type": "package", + "dependencies": { + "Discord.Net.Core": "3.17.4" + }, + "compile": { + "lib/net8.0/Discord.Net.Rest.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Discord.Net.Rest.dll": { + "related": ".xml" + } + } + }, + "Discord.Net.Webhook/3.17.4": { + "type": "package", + "dependencies": { + "Discord.Net.Core": "3.17.4", + "Discord.Net.Rest": "3.17.4" + }, + "compile": { + "lib/net8.0/Discord.Net.Webhook.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Discord.Net.Webhook.dll": { + "related": ".xml" + } + } + }, + "DistributedLock.Core/1.0.6": { + "type": "package", + "compile": { + "lib/net8.0/DistributedLock.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/DistributedLock.Core.dll": { + "related": ".xml" + } + } + }, + "DistributedLock.MySql/1.0.2": { + "type": "package", + "dependencies": { + "DistributedLock.Core": "[1.0.6, 1.1.0)", + "MySqlConnector": "2.3.5" + }, + "compile": { + "lib/netstandard2.1/DistributedLock.MySql.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/DistributedLock.MySql.dll": { + "related": ".xml" + } + } + }, + "Humanizer.Core/2.14.1": { + "type": "package", + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Humanizer.dll": { + "related": ".xml" + } + } + }, + "JetBrains.Annotations/2024.3.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/JetBrains.Annotations.dll": { + "related": ".deps.json;.xml" + } + }, + "runtime": { + "lib/netstandard2.0/JetBrains.Annotations.dll": { + "related": ".deps.json;.xml" + } + } + }, + "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore/8.0.18": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "8.0.18" + }, + "compile": { + "lib/net8.0/Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.dll": { + "related": ".xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Microsoft.AspNetCore.Mvc.Testing/8.0.18": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.TestHost": "8.0.18", + "Microsoft.Extensions.DependencyModel": "8.0.2", + "Microsoft.Extensions.Hosting": "8.0.1" + }, + "compile": { + "lib/net8.0/Microsoft.AspNetCore.Mvc.Testing.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.Mvc.Testing.dll": { + "related": ".xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ], + "build": { + "buildTransitive/net8.0/Microsoft.AspNetCore.Mvc.Testing.targets": {} + } + }, + "Microsoft.AspNetCore.TestHost/8.0.18": { + "type": "package", + "dependencies": { + "System.IO.Pipelines": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.AspNetCore.TestHost.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.TestHost.dll": { + "related": ".xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Microsoft.Bcl.AsyncInterfaces/8.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + } + }, + "Microsoft.CodeAnalysis.Analyzers/3.3.3": { + "type": "package", + "build": { + "build/_._": {} + } + }, + "Microsoft.CodeAnalysis.Common/4.5.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.3.3", + "System.Collections.Immutable": "6.0.0", + "System.Reflection.Metadata": "6.0.1", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encoding.CodePages": "6.0.0" + }, + "compile": { + "lib/netcoreapp3.1/_._": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/4.5.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Common": "[4.5.0]" + }, + "compile": { + "lib/netcoreapp3.1/_._": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces/4.5.0": { + "type": "package", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.CSharp": "[4.5.0]", + "Microsoft.CodeAnalysis.Common": "[4.5.0]", + "Microsoft.CodeAnalysis.Workspaces.Common": "[4.5.0]" + }, + "compile": { + "lib/netcoreapp3.1/_._": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.Workspaces.Common/4.5.0": { + "type": "package", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.Bcl.AsyncInterfaces": "6.0.0", + "Microsoft.CodeAnalysis.Common": "[4.5.0]", + "System.Composition": "6.0.0", + "System.IO.Pipelines": "6.0.3", + "System.Threading.Channels": "6.0.0" + }, + "compile": { + "lib/netcoreapp3.1/_._": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeCoverage/17.14.1": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {} + }, + "runtime": { + "lib/net8.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {} + }, + "build": { + "build/netstandard2.0/Microsoft.CodeCoverage.props": {}, + "build/netstandard2.0/Microsoft.CodeCoverage.targets": {} + } + }, + "Microsoft.Data.Sqlite.Core/8.0.6": { + "type": "package", + "dependencies": { + "SQLitePCLRaw.core": "2.1.6" + }, + "compile": { + "lib/net8.0/Microsoft.Data.Sqlite.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Data.Sqlite.dll": { + "related": ".xml" + } + } + }, + "Microsoft.EntityFrameworkCore/8.0.18": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "8.0.18", + "Microsoft.EntityFrameworkCore.Analyzers": "8.0.18", + "Microsoft.Extensions.Caching.Memory": "8.0.1", + "Microsoft.Extensions.Logging": "8.0.1" + }, + "compile": { + "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props": {} + } + }, + "Microsoft.EntityFrameworkCore.Abstractions/8.0.18": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.EntityFrameworkCore.Analyzers/8.0.18": { + "type": "package", + "compile": { + "lib/netstandard2.0/_._": {} + }, + "runtime": { + "lib/netstandard2.0/_._": {} + } + }, + "Microsoft.EntityFrameworkCore.Design/8.0.18": { + "type": "package", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.CSharp.Workspaces": "4.5.0", + "Microsoft.EntityFrameworkCore.Relational": "8.0.18", + "Microsoft.Extensions.DependencyModel": "8.0.2", + "Mono.TextTemplating": "2.2.1" + }, + "compile": { + "lib/net8.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Design.dll": { + "related": ".xml" + } + }, + "build": { + "build/net8.0/Microsoft.EntityFrameworkCore.Design.props": {} + } + }, + "Microsoft.EntityFrameworkCore.Relational/8.0.18": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore": "8.0.18", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": { + "related": ".xml" + } + } + }, + "Microsoft.EntityFrameworkCore.Sqlite/8.0.6": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore.Sqlite.Core": "8.0.6", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.6" + }, + "compile": { + "lib/net8.0/_._": {} + }, + "runtime": { + "lib/net8.0/_._": {} + } + }, + "Microsoft.EntityFrameworkCore.Sqlite.Core/8.0.6": { + "type": "package", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "8.0.6", + "Microsoft.EntityFrameworkCore.Relational": "8.0.6", + "Microsoft.Extensions.DependencyModel": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Sqlite.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Sqlite.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Extensions.ApiDescription.Server/8.0.0": { + "type": "package", + "build": { + "build/_._": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/_._": {} + } + }, + "Microsoft.Extensions.Caching.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Caching.Memory/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.Binder/8.0.2": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets": {} + } + }, + "Microsoft.Extensions.Configuration.CommandLine/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.FileExtensions/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.Json/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "8.0.1", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.Json.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.UserSecrets/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Json": "8.0.1", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.props": {}, + "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.targets": {} + } + }, + "Microsoft.Extensions.DependencyInjection/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.DependencyModel/8.0.2": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyModel.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyModel.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Diagnostics/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", + "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Diagnostics.Abstractions/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.FileProviders.Physical/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileSystemGlobbing": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.FileSystemGlobbing/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Hosting/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.2", + "Microsoft.Extensions.Configuration.CommandLine": "8.0.0", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "8.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "8.0.1", + "Microsoft.Extensions.Configuration.Json": "8.0.1", + "Microsoft.Extensions.Configuration.UserSecrets": "8.0.1", + "Microsoft.Extensions.DependencyInjection": "8.0.1", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Diagnostics": "8.0.1", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", + "Microsoft.Extensions.Logging": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging.Configuration": "8.0.1", + "Microsoft.Extensions.Logging.Console": "8.0.1", + "Microsoft.Extensions.Logging.Debug": "8.0.1", + "Microsoft.Extensions.Logging.EventLog": "8.0.1", + "Microsoft.Extensions.Logging.EventSource": "8.0.1", + "Microsoft.Extensions.Options": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Hosting.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Hosting.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Hosting.Abstractions/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.Abstractions/8.0.2": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets": {} + } + }, + "Microsoft.Extensions.Logging.Configuration/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.2", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.Console/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging.Configuration": "8.0.1", + "Microsoft.Extensions.Options": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Console.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Console.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.Debug/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Debug.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Debug.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.EventLog/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2", + "System.Diagnostics.EventLog": "8.0.1" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.EventSource/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Options/8.0.2": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/Microsoft.Extensions.Options.targets": {} + } + }, + "Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Primitives/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.NET.Test.Sdk/17.14.1": { + "type": "package", + "dependencies": { + "Microsoft.CodeCoverage": "17.14.1", + "Microsoft.TestPlatform.TestHost": "17.14.1" + }, + "compile": { + "lib/net8.0/_._": {} + }, + "runtime": { + "lib/net8.0/_._": {} + }, + "build": { + "build/net8.0/Microsoft.NET.Test.Sdk.props": {}, + "build/net8.0/Microsoft.NET.Test.Sdk.targets": {} + } + }, + "Microsoft.OpenApi/1.6.23": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.OpenApi.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.OpenApi.dll": { + "related": ".pdb;.xml" + } + } + }, + "Microsoft.TestPlatform.ObjectModel/17.14.1": { + "type": "package", + "dependencies": { + "System.Reflection.Metadata": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {} + }, + "runtime": { + "lib/net8.0/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {} + }, + "resource": { + "lib/net8.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "de" + }, + "lib/net8.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "es" + }, + "lib/net8.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "it" + }, + "lib/net8.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "zh-Hant" + }, + "lib/net8.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.TestPlatform.TestHost/17.14.1": { + "type": "package", + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "17.14.1", + "Newtonsoft.Json": "13.0.3" + }, + "compile": { + "lib/net8.0/Microsoft.TestPlatform.CommunicationUtilities.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.CrossPlatEngine.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.Utilities.dll": {}, + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.Common.dll": {}, + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {}, + "lib/net8.0/testhost.dll": { + "related": ".deps.json" + } + }, + "runtime": { + "lib/net8.0/Microsoft.TestPlatform.CommunicationUtilities.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.CrossPlatEngine.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.Utilities.dll": {}, + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.Common.dll": {}, + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {}, + "lib/net8.0/testhost.dll": { + "related": ".deps.json" + } + }, + "resource": { + "lib/net8.0/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "de" + }, + "lib/net8.0/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "de" + }, + "lib/net8.0/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "es" + }, + "lib/net8.0/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "es" + }, + "lib/net8.0/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "it" + }, + "lib/net8.0/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "it" + }, + "lib/net8.0/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "zh-Hant" + }, + "lib/net8.0/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "zh-Hant" + }, + "lib/net8.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "zh-Hant" + } + }, + "build": { + "build/net8.0/Microsoft.TestPlatform.TestHost.props": {}, + "build/net8.0/Microsoft.TestPlatform.TestHost.targets": {} + } + }, + "Mono.TextTemplating/2.2.1": { + "type": "package", + "dependencies": { + "System.CodeDom": "4.4.0" + }, + "compile": { + "lib/netstandard2.0/_._": {} + }, + "runtime": { + "lib/netstandard2.0/Mono.TextTemplating.dll": {} + } + }, + "Moq/4.20.72": { + "type": "package", + "dependencies": { + "Castle.Core": "5.1.1" + }, + "compile": { + "lib/net6.0/Moq.dll": {} + }, + "runtime": { + "lib/net6.0/Moq.dll": {} + } + }, + "MySqlConnector/2.3.5": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "7.0.1" + }, + "compile": { + "lib/net8.0/MySqlConnector.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/MySqlConnector.dll": { + "related": ".xml" + } + } + }, + "Newtonsoft.Json/13.0.3": { + "type": "package", + "compile": { + "lib/net6.0/Newtonsoft.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Newtonsoft.Json.dll": { + "related": ".xml" + } + } + }, + "Pfim/0.11.3": { + "type": "package", + "compile": { + "lib/netstandard2.0/Pfim.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Pfim.dll": {} + } + }, + "Pipelines.Sockets.Unofficial/2.2.8": { + "type": "package", + "dependencies": { + "System.IO.Pipelines": "5.0.1" + }, + "compile": { + "lib/net5.0/Pipelines.Sockets.Unofficial.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net5.0/Pipelines.Sockets.Unofficial.dll": { + "related": ".xml" + } + } + }, + "Pomelo.EntityFrameworkCore.MySql/8.0.2": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "[8.0.2, 8.0.999]", + "MySqlConnector": "2.3.5" + }, + "compile": { + "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll": { + "related": ".xml" + } + } + }, + "QRCoder/1.6.0": { + "type": "package", + "compile": { + "lib/net6.0/QRCoder.dll": {} + }, + "runtime": { + "lib/net6.0/QRCoder.dll": {} + } + }, + "Redis.OM/1.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "Newtonsoft.Json": "13.0.1", + "StackExchange.Redis": "2.7.17", + "System.Text.Json": "8.0.5", + "Ulid": "1.2.6" + }, + "compile": { + "lib/netstandard2.0/Redis.OM.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Redis.OM.dll": { + "related": ".xml" + } + } + }, + "Selenium.WebDriver/4.34.0": { + "type": "package", + "compile": { + "lib/net8.0/WebDriver.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/WebDriver.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/Selenium.WebDriver.targets": {} + } + }, + "Selenium.WebDriver.ChromeDriver/138.0.7204.9400": { + "type": "package", + "build": { + "build/Selenium.WebDriver.ChromeDriver.targets": {} + } + }, + "SharpZipLib/1.4.2": { + "type": "package", + "compile": { + "lib/net6.0/ICSharpCode.SharpZipLib.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net6.0/ICSharpCode.SharpZipLib.dll": { + "related": ".pdb;.xml" + } + } + }, + "SixLabors.ImageSharp/3.1.10": { + "type": "package", + "compile": { + "lib/net6.0/SixLabors.ImageSharp.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/SixLabors.ImageSharp.dll": { + "related": ".xml" + } + }, + "build": { + "build/_._": {} + } + }, + "SQLitePCLRaw.bundle_e_sqlite3/2.1.6": { + "type": "package", + "dependencies": { + "SQLitePCLRaw.lib.e_sqlite3": "2.1.6", + "SQLitePCLRaw.provider.e_sqlite3": "2.1.6" + }, + "compile": { + "lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll": {} + }, + "runtime": { + "lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll": {} + } + }, + "SQLitePCLRaw.core/2.1.6": { + "type": "package", + "dependencies": { + "System.Memory": "4.5.3" + }, + "compile": { + "lib/netstandard2.0/SQLitePCLRaw.core.dll": {} + }, + "runtime": { + "lib/netstandard2.0/SQLitePCLRaw.core.dll": {} + } + }, + "SQLitePCLRaw.lib.e_sqlite3/2.1.6": { + "type": "package", + "compile": { + "lib/netstandard2.0/_._": {} + }, + "runtime": { + "lib/netstandard2.0/_._": {} + }, + "build": { + "buildTransitive/net8.0/SQLitePCLRaw.lib.e_sqlite3.targets": {} + }, + "runtimeTargets": { + "runtimes/browser-wasm/nativeassets/net8.0/e_sqlite3.a": { + "assetType": "native", + "rid": "browser-wasm" + }, + "runtimes/linux-arm/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-arm" + }, + "runtimes/linux-arm64/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-arm64" + }, + "runtimes/linux-armel/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-armel" + }, + "runtimes/linux-mips64/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-mips64" + }, + "runtimes/linux-musl-arm/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-musl-arm" + }, + "runtimes/linux-musl-arm64/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-musl-arm64" + }, + "runtimes/linux-musl-x64/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-musl-x64" + }, + "runtimes/linux-ppc64le/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-ppc64le" + }, + "runtimes/linux-s390x/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-s390x" + }, + "runtimes/linux-x64/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-x64" + }, + "runtimes/linux-x86/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-x86" + }, + "runtimes/maccatalyst-arm64/native/libe_sqlite3.dylib": { + "assetType": "native", + "rid": "maccatalyst-arm64" + }, + "runtimes/maccatalyst-x64/native/libe_sqlite3.dylib": { + "assetType": "native", + "rid": "maccatalyst-x64" + }, + "runtimes/osx-arm64/native/libe_sqlite3.dylib": { + "assetType": "native", + "rid": "osx-arm64" + }, + "runtimes/osx-x64/native/libe_sqlite3.dylib": { + "assetType": "native", + "rid": "osx-x64" + }, + "runtimes/win-arm/native/e_sqlite3.dll": { + "assetType": "native", + "rid": "win-arm" + }, + "runtimes/win-arm64/native/e_sqlite3.dll": { + "assetType": "native", + "rid": "win-arm64" + }, + "runtimes/win-x64/native/e_sqlite3.dll": { + "assetType": "native", + "rid": "win-x64" + }, + "runtimes/win-x86/native/e_sqlite3.dll": { + "assetType": "native", + "rid": "win-x86" + } + } + }, + "SQLitePCLRaw.provider.e_sqlite3/2.1.6": { + "type": "package", + "dependencies": { + "SQLitePCLRaw.core": "2.1.6" + }, + "compile": { + "lib/net6.0/SQLitePCLRaw.provider.e_sqlite3.dll": {} + }, + "runtime": { + "lib/net6.0/SQLitePCLRaw.provider.e_sqlite3.dll": {} + } + }, + "StackExchange.Redis/2.7.17": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "6.0.0", + "Pipelines.Sockets.Unofficial": "2.2.8" + }, + "compile": { + "lib/net6.0/StackExchange.Redis.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/StackExchange.Redis.dll": { + "related": ".xml" + } + } + }, + "Swashbuckle.AspNetCore/9.0.3": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "8.0.0", + "Swashbuckle.AspNetCore.Swagger": "9.0.3", + "Swashbuckle.AspNetCore.SwaggerGen": "9.0.3", + "Swashbuckle.AspNetCore.SwaggerUI": "9.0.3" + }, + "build": { + "build/_._": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/_._": {} + } + }, + "Swashbuckle.AspNetCore.Swagger/9.0.3": { + "type": "package", + "dependencies": { + "Microsoft.OpenApi": "1.6.23" + }, + "compile": { + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { + "related": ".pdb;.xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Swashbuckle.AspNetCore.SwaggerGen/9.0.3": { + "type": "package", + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "9.0.3" + }, + "compile": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { + "related": ".pdb;.xml" + } + } + }, + "Swashbuckle.AspNetCore.SwaggerUI/9.0.3": { + "type": "package", + "compile": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { + "related": ".pdb;.xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "System.CodeDom/4.4.0": { + "type": "package", + "compile": { + "ref/netstandard2.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.CodeDom.dll": {} + } + }, + "System.Collections.Immutable/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Collections.Immutable.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Collections.Immutable.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Composition/6.0.0": { + "type": "package", + "dependencies": { + "System.Composition.AttributedModel": "6.0.0", + "System.Composition.Convention": "6.0.0", + "System.Composition.Hosting": "6.0.0", + "System.Composition.Runtime": "6.0.0", + "System.Composition.TypedParts": "6.0.0" + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Composition.AttributedModel/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Composition.AttributedModel.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Composition.Convention/6.0.0": { + "type": "package", + "dependencies": { + "System.Composition.AttributedModel": "6.0.0" + }, + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Composition.Convention.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Composition.Hosting/6.0.0": { + "type": "package", + "dependencies": { + "System.Composition.Runtime": "6.0.0" + }, + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Composition.Hosting.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Composition.Runtime/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Composition.Runtime.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Composition.TypedParts/6.0.0": { + "type": "package", + "dependencies": { + "System.Composition.AttributedModel": "6.0.0", + "System.Composition.Hosting": "6.0.0", + "System.Composition.Runtime": "6.0.0" + }, + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Composition.TypedParts.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Diagnostics.EventLog/8.0.1": { + "type": "package", + "compile": { + "lib/net8.0/System.Diagnostics.EventLog.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Diagnostics.EventLog.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll": { + "assetType": "runtime", + "rid": "win" + }, + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Interactive.Async/6.0.1": { + "type": "package", + "dependencies": { + "System.Linq.Async": "6.0.1" + }, + "compile": { + "lib/net6.0/System.Interactive.Async.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Interactive.Async.dll": { + "related": ".xml" + } + } + }, + "System.IO.Pipelines/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.IO.Pipelines.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.IO.Pipelines.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Linq.Async/6.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "6.0.0" + }, + "compile": { + "ref/net6.0/System.Linq.Async.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Linq.Async.dll": { + "related": ".xml" + } + } + }, + "System.Memory/4.5.3": { + "type": "package", + "compile": { + "ref/netcoreapp2.1/_._": {} + }, + "runtime": { + "lib/netcoreapp2.1/_._": {} + } + }, + "System.Reflection.Metadata/8.0.0": { + "type": "package", + "dependencies": { + "System.Collections.Immutable": "8.0.0" + }, + "compile": { + "lib/net8.0/System.Reflection.Metadata.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Reflection.Metadata.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Text.Encoding.CodePages/6.0.0": { + "type": "package", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + }, + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Text.Encoding.CodePages.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/net6.0/System.Text.Encoding.CodePages.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Text.Json/8.0.5": { + "type": "package", + "compile": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/System.Text.Json.targets": {} + } + }, + "System.Threading.Channels/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Threading.Channels.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.ValueTuple/4.5.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, + "Ulid/1.2.6": { + "type": "package", + "compile": { + "lib/net5.0/Ulid.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net5.0/Ulid.dll": { + "related": ".xml" + } + } + }, + "xunit/2.9.3": { + "type": "package", + "dependencies": { + "xunit.analyzers": "1.18.0", + "xunit.assert": "2.9.3", + "xunit.core": "[2.9.3]" + } + }, + "xunit.abstractions/2.0.3": { + "type": "package", + "compile": { + "lib/netstandard2.0/xunit.abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/xunit.abstractions.dll": { + "related": ".xml" + } + } + }, + "xunit.analyzers/1.18.0": { + "type": "package" + }, + "xunit.assert/2.9.3": { + "type": "package", + "compile": { + "lib/net6.0/xunit.assert.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/xunit.assert.dll": { + "related": ".xml" + } + } + }, + "xunit.core/2.9.3": { + "type": "package", + "dependencies": { + "xunit.extensibility.core": "[2.9.3]", + "xunit.extensibility.execution": "[2.9.3]" + }, + "build": { + "build/xunit.core.props": {}, + "build/xunit.core.targets": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/xunit.core.props": {}, + "buildMultiTargeting/xunit.core.targets": {} + } + }, + "xunit.extensibility.core/2.9.3": { + "type": "package", + "dependencies": { + "xunit.abstractions": "2.0.3" + }, + "compile": { + "lib/netstandard1.1/xunit.core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.1/xunit.core.dll": { + "related": ".xml" + } + } + }, + "xunit.extensibility.execution/2.9.3": { + "type": "package", + "dependencies": { + "xunit.extensibility.core": "[2.9.3]" + }, + "compile": { + "lib/netstandard1.1/xunit.execution.dotnet.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.1/xunit.execution.dotnet.dll": { + "related": ".xml" + } + } + }, + "xunit.runner.visualstudio/3.1.1": { + "type": "package", + "compile": { + "lib/net8.0/_._": {} + }, + "runtime": { + "lib/net8.0/_._": {} + }, + "build": { + "build/net8.0/xunit.runner.visualstudio.props": {} + } + }, + "YamlDotNet/16.3.0": { + "type": "package", + "compile": { + "lib/net8.0/YamlDotNet.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/YamlDotNet.dll": { + "related": ".xml" + } + } + }, + "LBPUnion.ProjectLighthouse/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "dependencies": { + "BCrypt.Net-Next": "4.0.3", + "BouncyCastle.Cryptography": "2.6.1", + "Discord.Net.Webhook": "3.17.4", + "DistributedLock.MySql": "1.0.2", + "JetBrains.Annotations": "2024.3.0", + "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "8.0.18", + "Microsoft.EntityFrameworkCore": "8.0.18", + "Pfim": "0.11.3", + "Pomelo.EntityFrameworkCore.MySql": "8.0.2", + "ProjectLighthouse.Localization": "1.0.0", + "Redis.OM": "1.0.1", + "SharpZipLib": "1.4.2", + "SixLabors.ImageSharp": "3.1.10", + "Swashbuckle.AspNetCore": "9.0.3", + "YamlDotNet": "16.3.0" + }, + "compile": { + "bin/placeholder/LBPUnion.ProjectLighthouse.dll": {} + }, + "runtime": { + "bin/placeholder/LBPUnion.ProjectLighthouse.dll": {} + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "LBPUnion.ProjectLighthouse.Servers.Website/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "dependencies": { + "LBPUnion.ProjectLighthouse": "1.0.0", + "ProjectLighthouse.Localization": "1.0.0", + "QRCoder": "1.6.0" + }, + "compile": { + "bin/placeholder/LBPUnion.ProjectLighthouse.Servers.Website.dll": {} + }, + "runtime": { + "bin/placeholder/LBPUnion.ProjectLighthouse.Servers.Website.dll": {} + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "LBPUnion.ProjectLighthouse.Tests/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "dependencies": { + "JetBrains.Annotations": "2024.3.0", + "LBPUnion.ProjectLighthouse": "1.0.0", + "Microsoft.AspNetCore.Mvc.Testing": "8.0.18", + "Microsoft.EntityFrameworkCore.Sqlite": "8.0.6", + "Microsoft.NET.Test.Sdk": "17.14.1", + "Moq": "4.20.72", + "xunit": "2.9.3" + }, + "compile": { + "bin/placeholder/LBPUnion.ProjectLighthouse.Tests.dll": {} + }, + "runtime": { + "bin/placeholder/LBPUnion.ProjectLighthouse.Tests.dll": {} + } + }, + "ProjectLighthouse.Localization/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "compile": { + "bin/placeholder/ProjectLighthouse.Localization.dll": {} + }, + "runtime": { + "bin/placeholder/ProjectLighthouse.Localization.dll": {} + } + } + } + }, + "libraries": { + "BCrypt.Net-Next/4.0.3": { + "sha512": "W+U9WvmZQgi5cX6FS5GDtDoPzUCV4LkBLkywq/kRZhuDwcbavOzcDAr3LXJFqHUi952Yj3LEYoWW0jbEUQChsA==", + "type": "package", + "path": "bcrypt.net-next/4.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "bcrypt.net-next.4.0.3.nupkg.sha512", + "bcrypt.net-next.nuspec", + "ico.png", + "lib/net20/BCrypt.Net-Next.dll", + "lib/net20/BCrypt.Net-Next.xml", + "lib/net35/BCrypt.Net-Next.dll", + "lib/net35/BCrypt.Net-Next.xml", + "lib/net462/BCrypt.Net-Next.dll", + "lib/net462/BCrypt.Net-Next.xml", + "lib/net472/BCrypt.Net-Next.dll", + "lib/net472/BCrypt.Net-Next.xml", + "lib/net48/BCrypt.Net-Next.dll", + "lib/net48/BCrypt.Net-Next.xml", + "lib/net5.0/BCrypt.Net-Next.dll", + "lib/net5.0/BCrypt.Net-Next.xml", + "lib/net6.0/BCrypt.Net-Next.dll", + "lib/net6.0/BCrypt.Net-Next.xml", + "lib/netstandard2.0/BCrypt.Net-Next.dll", + "lib/netstandard2.0/BCrypt.Net-Next.xml", + "lib/netstandard2.1/BCrypt.Net-Next.dll", + "lib/netstandard2.1/BCrypt.Net-Next.xml", + "readme.md" + ] + }, + "BouncyCastle.Cryptography/2.6.1": { + "sha512": "vZsG2YILhthgRqO+ZVgRff4ZFKKTl0v7kqaVBLCtRvpREhfBP33pcWrdA3PRYgWuFL1RxiUFvjMUHTdBZlJcoA==", + "type": "package", + "path": "bouncycastle.cryptography/2.6.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.md", + "README.md", + "bouncycastle.cryptography.2.6.1.nupkg.sha512", + "bouncycastle.cryptography.nuspec", + "lib/net461/BouncyCastle.Cryptography.dll", + "lib/net461/BouncyCastle.Cryptography.xml", + "lib/net6.0/BouncyCastle.Cryptography.dll", + "lib/net6.0/BouncyCastle.Cryptography.xml", + "lib/netstandard2.0/BouncyCastle.Cryptography.dll", + "lib/netstandard2.0/BouncyCastle.Cryptography.xml", + "packageIcon.png" + ] + }, + "Castle.Core/5.1.1": { + "sha512": "rpYtIczkzGpf+EkZgDr9CClTdemhsrwA/W5hMoPjLkRFnXzH44zDLoovXeKtmxb1ykXK9aJVODSpiJml8CTw2g==", + "type": "package", + "path": "castle.core/5.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ASL - Apache Software Foundation License.txt", + "CHANGELOG.md", + "LICENSE", + "castle-logo.png", + "castle.core.5.1.1.nupkg.sha512", + "castle.core.nuspec", + "lib/net462/Castle.Core.dll", + "lib/net462/Castle.Core.xml", + "lib/net6.0/Castle.Core.dll", + "lib/net6.0/Castle.Core.xml", + "lib/netstandard2.0/Castle.Core.dll", + "lib/netstandard2.0/Castle.Core.xml", + "lib/netstandard2.1/Castle.Core.dll", + "lib/netstandard2.1/Castle.Core.xml", + "readme.txt" + ] + }, + "coverlet.collector/6.0.4": { + "sha512": "lkhqpF8Pu2Y7IiN7OntbsTtdbpR1syMsm2F3IgX6ootA4ffRqWL5jF7XipHuZQTdVuWG/gVAAcf8mjk8Tz0xPg==", + "type": "package", + "path": "coverlet.collector/6.0.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "VSTestIntegration.md", + "build/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "build/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "build/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", + "build/netstandard2.0/Microsoft.Extensions.DependencyModel.dll", + "build/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "build/netstandard2.0/Microsoft.TestPlatform.CoreUtilities.dll", + "build/netstandard2.0/Microsoft.TestPlatform.PlatformAbstractions.dll", + "build/netstandard2.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "build/netstandard2.0/Mono.Cecil.Mdb.dll", + "build/netstandard2.0/Mono.Cecil.Pdb.dll", + "build/netstandard2.0/Mono.Cecil.Rocks.dll", + "build/netstandard2.0/Mono.Cecil.dll", + "build/netstandard2.0/Newtonsoft.Json.dll", + "build/netstandard2.0/NuGet.Frameworks.dll", + "build/netstandard2.0/NuGet.Versioning.dll", + "build/netstandard2.0/System.Buffers.dll", + "build/netstandard2.0/System.Collections.Immutable.dll", + "build/netstandard2.0/System.Memory.dll", + "build/netstandard2.0/System.Numerics.Vectors.dll", + "build/netstandard2.0/System.Reflection.Metadata.dll", + "build/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "build/netstandard2.0/System.Text.Encodings.Web.dll", + "build/netstandard2.0/System.Text.Json.dll", + "build/netstandard2.0/System.Threading.Tasks.Extensions.dll", + "build/netstandard2.0/coverlet.collector.deps.json", + "build/netstandard2.0/coverlet.collector.dll", + "build/netstandard2.0/coverlet.collector.pdb", + "build/netstandard2.0/coverlet.collector.targets", + "build/netstandard2.0/coverlet.core.dll", + "build/netstandard2.0/coverlet.core.pdb", + "build/netstandard2.0/coverlet.core.xml", + "build/netstandard2.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "coverlet-icon.png", + "coverlet.collector.6.0.4.nupkg.sha512", + "coverlet.collector.nuspec" + ] + }, + "Discord.Net.Core/3.17.4": { + "sha512": "tMCilkXI6Gqqn6ipyysyuv3qHUNY1LNUbEpRHF6Q5jqW0Tckvu/EuZ2r/1xJatxvC8EoohIA05Dq3N3rrRlxBQ==", + "type": "package", + "path": "discord.net.core/3.17.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "NUGET_README.md", + "PackageLogo.png", + "discord.net.core.3.17.4.nupkg.sha512", + "discord.net.core.nuspec", + "lib/net461/Discord.Net.Core.dll", + "lib/net461/Discord.Net.Core.xml", + "lib/net5.0/Discord.Net.Core.dll", + "lib/net5.0/Discord.Net.Core.xml", + "lib/net6.0/Discord.Net.Core.dll", + "lib/net6.0/Discord.Net.Core.xml", + "lib/net8.0/Discord.Net.Core.dll", + "lib/net8.0/Discord.Net.Core.xml", + "lib/net9.0/Discord.Net.Core.dll", + "lib/net9.0/Discord.Net.Core.xml", + "lib/netstandard2.0/Discord.Net.Core.dll", + "lib/netstandard2.0/Discord.Net.Core.xml", + "lib/netstandard2.1/Discord.Net.Core.dll", + "lib/netstandard2.1/Discord.Net.Core.xml" + ] + }, + "Discord.Net.Rest/3.17.4": { + "sha512": "j3YRvFY9Rd0cCPQpRbTb12fGdcO41Cg0haKSZ/6fqHy1WEzZcKRpU8wC9a9e6yIwc5Gi0jrqYAQ/jvXartOqlg==", + "type": "package", + "path": "discord.net.rest/3.17.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "NUGET_README.md", + "PackageLogo.png", + "discord.net.rest.3.17.4.nupkg.sha512", + "discord.net.rest.nuspec", + "lib/net461/Discord.Net.Rest.dll", + "lib/net461/Discord.Net.Rest.xml", + "lib/net5.0/Discord.Net.Rest.dll", + "lib/net5.0/Discord.Net.Rest.xml", + "lib/net6.0/Discord.Net.Rest.dll", + "lib/net6.0/Discord.Net.Rest.xml", + "lib/net8.0/Discord.Net.Rest.dll", + "lib/net8.0/Discord.Net.Rest.xml", + "lib/net9.0/Discord.Net.Rest.dll", + "lib/net9.0/Discord.Net.Rest.xml", + "lib/netstandard2.0/Discord.Net.Rest.dll", + "lib/netstandard2.0/Discord.Net.Rest.xml", + "lib/netstandard2.1/Discord.Net.Rest.dll", + "lib/netstandard2.1/Discord.Net.Rest.xml" + ] + }, + "Discord.Net.Webhook/3.17.4": { + "sha512": "NGr75To1uxeyMEPsR4lo5+m/d2ALGzsgAUBCv/27tBU5G0Ss9fjaemPumcQtXO1uJSBQallxreWsn/LfMQHc5A==", + "type": "package", + "path": "discord.net.webhook/3.17.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "NUGET_README.md", + "PackageLogo.png", + "discord.net.webhook.3.17.4.nupkg.sha512", + "discord.net.webhook.nuspec", + "lib/net5.0/Discord.Net.Webhook.dll", + "lib/net5.0/Discord.Net.Webhook.xml", + "lib/net6.0/Discord.Net.Webhook.dll", + "lib/net6.0/Discord.Net.Webhook.xml", + "lib/net8.0/Discord.Net.Webhook.dll", + "lib/net8.0/Discord.Net.Webhook.xml", + "lib/net9.0/Discord.Net.Webhook.dll", + "lib/net9.0/Discord.Net.Webhook.xml", + "lib/netstandard2.0/Discord.Net.Webhook.dll", + "lib/netstandard2.0/Discord.Net.Webhook.xml", + "lib/netstandard2.1/Discord.Net.Webhook.dll", + "lib/netstandard2.1/Discord.Net.Webhook.xml" + ] + }, + "DistributedLock.Core/1.0.6": { + "sha512": "WFAz6x82K+4uiByDk1Qz2lmcm2FrOyCzZjNauzbLeHPou6Ur2C9Ig7d6vxP7/kKvzSrrQoW6k3pUOOcikb9Jgw==", + "type": "package", + "path": "distributedlock.core/1.0.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "distributedlock.core.1.0.6.nupkg.sha512", + "distributedlock.core.nuspec", + "lib/net462/DistributedLock.Core.dll", + "lib/net462/DistributedLock.Core.xml", + "lib/net8.0/DistributedLock.Core.dll", + "lib/net8.0/DistributedLock.Core.xml", + "lib/netstandard2.0/DistributedLock.Core.dll", + "lib/netstandard2.0/DistributedLock.Core.xml", + "lib/netstandard2.1/DistributedLock.Core.dll", + "lib/netstandard2.1/DistributedLock.Core.xml", + "package.readme.md" + ] + }, + "DistributedLock.MySql/1.0.2": { + "sha512": "1FIaBNM1/EmFeKc9qFNGf+8D/g3ZyBXoGYp0j+DQqKdfJJ500m45zYR4PWFsy1RYUL3E8VNnSvGpxUhB6OKrww==", + "type": "package", + "path": "distributedlock.mysql/1.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "distributedlock.mysql.1.0.2.nupkg.sha512", + "distributedlock.mysql.nuspec", + "lib/net462/DistributedLock.MySql.dll", + "lib/net462/DistributedLock.MySql.xml", + "lib/netstandard2.0/DistributedLock.MySql.dll", + "lib/netstandard2.0/DistributedLock.MySql.xml", + "lib/netstandard2.1/DistributedLock.MySql.dll", + "lib/netstandard2.1/DistributedLock.MySql.xml", + "package.readme.md" + ] + }, + "Humanizer.Core/2.14.1": { + "sha512": "lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==", + "type": "package", + "path": "humanizer.core/2.14.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.2.14.1.nupkg.sha512", + "humanizer.core.nuspec", + "lib/net6.0/Humanizer.dll", + "lib/net6.0/Humanizer.xml", + "lib/netstandard1.0/Humanizer.dll", + "lib/netstandard1.0/Humanizer.xml", + "lib/netstandard2.0/Humanizer.dll", + "lib/netstandard2.0/Humanizer.xml", + "logo.png" + ] + }, + "JetBrains.Annotations/2024.3.0": { + "sha512": "ox5pkeLQXjvJdyAB4b2sBYAlqZGLh3PjSnP1bQNVx72ONuTJ9+34/+Rq91Fc0dG29XG9RgZur9+NcP4riihTug==", + "type": "package", + "path": "jetbrains.annotations/2024.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "icon.png", + "jetbrains.annotations.2024.3.0.nupkg.sha512", + "jetbrains.annotations.nuspec", + "lib/net20/JetBrains.Annotations.dll", + "lib/net20/JetBrains.Annotations.xml", + "lib/netstandard1.0/JetBrains.Annotations.deps.json", + "lib/netstandard1.0/JetBrains.Annotations.dll", + "lib/netstandard1.0/JetBrains.Annotations.xml", + "lib/netstandard2.0/JetBrains.Annotations.deps.json", + "lib/netstandard2.0/JetBrains.Annotations.dll", + "lib/netstandard2.0/JetBrains.Annotations.xml", + "lib/portable40-net40+sl5+win8+wp8+wpa81/JetBrains.Annotations.dll", + "lib/portable40-net40+sl5+win8+wp8+wpa81/JetBrains.Annotations.xml", + "readme.md" + ] + }, + "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore/8.0.18": { + "sha512": "H4GKNR5eGHpK5yovhsO3BvOfzKlSv8DVclVYi1JLN5wfei+HAbskbi9nMGGamgtqgVXX1RAAduGKGQWlWGlfKw==", + "type": "package", + "path": "microsoft.aspnetcore.diagnostics.entityframeworkcore/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net8.0/Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.dll", + "lib/net8.0/Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.xml", + "microsoft.aspnetcore.diagnostics.entityframeworkcore.8.0.18.nupkg.sha512", + "microsoft.aspnetcore.diagnostics.entityframeworkcore.nuspec" + ] + }, + "Microsoft.AspNetCore.Mvc.Testing/8.0.18": { + "sha512": "QfMWUySY4rtLkzdqT/i431ZA+iydEc1pEZoFDpkpu8U9Lc6RlOoZvK4oBU47G+TxqNcHz4omf0JrCqpfL1wq6g==", + "type": "package", + "path": "microsoft.aspnetcore.mvc.testing/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "build/net8.0/Microsoft.AspNetCore.Mvc.Testing.targets", + "buildTransitive/net8.0/Microsoft.AspNetCore.Mvc.Testing.targets", + "lib/net8.0/Microsoft.AspNetCore.Mvc.Testing.dll", + "lib/net8.0/Microsoft.AspNetCore.Mvc.Testing.xml", + "microsoft.aspnetcore.mvc.testing.8.0.18.nupkg.sha512", + "microsoft.aspnetcore.mvc.testing.nuspec", + "tasks/netstandard2.0/Microsoft.AspNetCore.Mvc.Testing.Tasks.dll" + ] + }, + "Microsoft.AspNetCore.TestHost/8.0.18": { + "sha512": "ofyg3Go9hNptZkZt6MXS2W8LTe+ayceXOebf3XTxywGHn9rbtg/cwXjwcMZ3e6On2p1eSEBtHUmdi6YWplXuSQ==", + "type": "package", + "path": "microsoft.aspnetcore.testhost/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net8.0/Microsoft.AspNetCore.TestHost.dll", + "lib/net8.0/Microsoft.AspNetCore.TestHost.xml", + "microsoft.aspnetcore.testhost.8.0.18.nupkg.sha512", + "microsoft.aspnetcore.testhost.nuspec" + ] + }, + "Microsoft.Bcl.AsyncInterfaces/8.0.0": { + "sha512": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==", + "type": "package", + "path": "microsoft.bcl.asyncinterfaces/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Bcl.AsyncInterfaces.targets", + "buildTransitive/net462/_._", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", + "microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512", + "microsoft.bcl.asyncinterfaces.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.CodeAnalysis.Analyzers/3.3.3": { + "sha512": "j/rOZtLMVJjrfLRlAMckJLPW/1rze9MT1yfWqSIbUPGRu1m1P0fuo9PmqapwsmePfGB5PJrudQLvmUOAMF0DqQ==", + "type": "package", + "path": "microsoft.codeanalysis.analyzers/3.3.3", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "analyzers/dotnet/cs/Microsoft.CodeAnalysis.Analyzers.dll", + "analyzers/dotnet/cs/Microsoft.CodeAnalysis.CSharp.Analyzers.dll", + "analyzers/dotnet/cs/cs/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/de/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/es/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/fr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/it/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ja/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ko/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/pl/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/pt-BR/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ru/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/tr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/zh-Hans/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/zh-Hant/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/Microsoft.CodeAnalysis.Analyzers.dll", + "analyzers/dotnet/vb/Microsoft.CodeAnalysis.VisualBasic.Analyzers.dll", + "analyzers/dotnet/vb/cs/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/de/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/es/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/fr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/it/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ja/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ko/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/pl/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/pt-BR/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ru/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/tr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/zh-Hans/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/zh-Hant/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "build/Microsoft.CodeAnalysis.Analyzers.props", + "build/Microsoft.CodeAnalysis.Analyzers.targets", + "build/config/analysislevel_2_9_8_all.editorconfig", + "build/config/analysislevel_2_9_8_default.editorconfig", + "build/config/analysislevel_2_9_8_minimum.editorconfig", + "build/config/analysislevel_2_9_8_none.editorconfig", + "build/config/analysislevel_2_9_8_recommended.editorconfig", + "build/config/analysislevel_3_3_all.editorconfig", + "build/config/analysislevel_3_3_default.editorconfig", + "build/config/analysislevel_3_3_minimum.editorconfig", + "build/config/analysislevel_3_3_none.editorconfig", + "build/config/analysislevel_3_3_recommended.editorconfig", + "build/config/analysislevel_3_all.editorconfig", + "build/config/analysislevel_3_default.editorconfig", + "build/config/analysislevel_3_minimum.editorconfig", + "build/config/analysislevel_3_none.editorconfig", + "build/config/analysislevel_3_recommended.editorconfig", + "build/config/analysislevelcorrectness_2_9_8_all.editorconfig", + "build/config/analysislevelcorrectness_2_9_8_default.editorconfig", + "build/config/analysislevelcorrectness_2_9_8_minimum.editorconfig", + "build/config/analysislevelcorrectness_2_9_8_none.editorconfig", + "build/config/analysislevelcorrectness_2_9_8_recommended.editorconfig", + "build/config/analysislevelcorrectness_3_3_all.editorconfig", + "build/config/analysislevelcorrectness_3_3_default.editorconfig", + "build/config/analysislevelcorrectness_3_3_minimum.editorconfig", + "build/config/analysislevelcorrectness_3_3_none.editorconfig", + "build/config/analysislevelcorrectness_3_3_recommended.editorconfig", + "build/config/analysislevelcorrectness_3_all.editorconfig", + "build/config/analysislevelcorrectness_3_default.editorconfig", + "build/config/analysislevelcorrectness_3_minimum.editorconfig", + "build/config/analysislevelcorrectness_3_none.editorconfig", + "build/config/analysislevelcorrectness_3_recommended.editorconfig", + "build/config/analysislevellibrary_2_9_8_all.editorconfig", + "build/config/analysislevellibrary_2_9_8_default.editorconfig", + "build/config/analysislevellibrary_2_9_8_minimum.editorconfig", + "build/config/analysislevellibrary_2_9_8_none.editorconfig", + "build/config/analysislevellibrary_2_9_8_recommended.editorconfig", + "build/config/analysislevellibrary_3_3_all.editorconfig", + "build/config/analysislevellibrary_3_3_default.editorconfig", + "build/config/analysislevellibrary_3_3_minimum.editorconfig", + "build/config/analysislevellibrary_3_3_none.editorconfig", + "build/config/analysislevellibrary_3_3_recommended.editorconfig", + "build/config/analysislevellibrary_3_all.editorconfig", + "build/config/analysislevellibrary_3_default.editorconfig", + "build/config/analysislevellibrary_3_minimum.editorconfig", + "build/config/analysislevellibrary_3_none.editorconfig", + "build/config/analysislevellibrary_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_recommended.editorconfig", + "documentation/Analyzer Configuration.md", + "documentation/Microsoft.CodeAnalysis.Analyzers.md", + "documentation/Microsoft.CodeAnalysis.Analyzers.sarif", + "editorconfig/AllRulesDefault/.editorconfig", + "editorconfig/AllRulesDisabled/.editorconfig", + "editorconfig/AllRulesEnabled/.editorconfig", + "editorconfig/CorrectnessRulesDefault/.editorconfig", + "editorconfig/CorrectnessRulesEnabled/.editorconfig", + "editorconfig/DataflowRulesDefault/.editorconfig", + "editorconfig/DataflowRulesEnabled/.editorconfig", + "editorconfig/LibraryRulesDefault/.editorconfig", + "editorconfig/LibraryRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCompatibilityRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCompatibilityRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCorrectnessRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCorrectnessRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDesignRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDesignRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDocumentationRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDocumentationRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisLocalizationRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisLocalizationRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisPerformanceRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisPerformanceRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisReleaseTrackingRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisReleaseTrackingRulesEnabled/.editorconfig", + "editorconfig/PortedFromFxCopRulesDefault/.editorconfig", + "editorconfig/PortedFromFxCopRulesEnabled/.editorconfig", + "microsoft.codeanalysis.analyzers.3.3.3.nupkg.sha512", + "microsoft.codeanalysis.analyzers.nuspec", + "rulesets/AllRulesDefault.ruleset", + "rulesets/AllRulesDisabled.ruleset", + "rulesets/AllRulesEnabled.ruleset", + "rulesets/CorrectnessRulesDefault.ruleset", + "rulesets/CorrectnessRulesEnabled.ruleset", + "rulesets/DataflowRulesDefault.ruleset", + "rulesets/DataflowRulesEnabled.ruleset", + "rulesets/LibraryRulesDefault.ruleset", + "rulesets/LibraryRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisCompatibilityRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisCompatibilityRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisCorrectnessRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisCorrectnessRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisDesignRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisDesignRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisDocumentationRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisDocumentationRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisLocalizationRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisLocalizationRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisPerformanceRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisPerformanceRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisReleaseTrackingRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisReleaseTrackingRulesEnabled.ruleset", + "rulesets/PortedFromFxCopRulesDefault.ruleset", + "rulesets/PortedFromFxCopRulesEnabled.ruleset", + "tools/install.ps1", + "tools/uninstall.ps1" + ] + }, + "Microsoft.CodeAnalysis.Common/4.5.0": { + "sha512": "lwAbIZNdnY0SUNoDmZHkVUwLO8UyNnyyh1t/4XsbFxi4Ounb3xszIYZaWhyj5ZjyfcwqwmtMbE7fUTVCqQEIdQ==", + "type": "package", + "path": "microsoft.codeanalysis.common/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.pdb", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.xml", + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll", + "microsoft.codeanalysis.common.4.5.0.nupkg.sha512", + "microsoft.codeanalysis.common.nuspec" + ] + }, + "Microsoft.CodeAnalysis.CSharp/4.5.0": { + "sha512": "cM59oMKAOxvdv76bdmaKPy5hfj+oR+zxikWoueEB7CwTko7mt9sVKZI8Qxlov0C/LuKEG+WQwifepqL3vuTiBQ==", + "type": "package", + "path": "microsoft.codeanalysis.csharp/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.pdb", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.xml", + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll", + "microsoft.codeanalysis.csharp.4.5.0.nupkg.sha512", + "microsoft.codeanalysis.csharp.nuspec" + ] + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces/4.5.0": { + "sha512": "h74wTpmGOp4yS4hj+EvNzEiPgg/KVs2wmSfTZ81upJZOtPkJsVkgfsgtxxqmAeapjT/vLKfmYV0bS8n5MNVP+g==", + "type": "package", + "path": "microsoft.codeanalysis.csharp.workspaces/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.pdb", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.xml", + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "microsoft.codeanalysis.csharp.workspaces.4.5.0.nupkg.sha512", + "microsoft.codeanalysis.csharp.workspaces.nuspec" + ] + }, + "Microsoft.CodeAnalysis.Workspaces.Common/4.5.0": { + "sha512": "l4dDRmGELXG72XZaonnOeORyD/T5RpEu5LGHOUIhnv+MmUWDY/m1kWXGwtcgQ5CJ5ynkFiRnIYzTKXYjUs7rbw==", + "type": "package", + "path": "microsoft.codeanalysis.workspaces.common/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.pdb", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.xml", + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "microsoft.codeanalysis.workspaces.common.4.5.0.nupkg.sha512", + "microsoft.codeanalysis.workspaces.common.nuspec" + ] + }, + "Microsoft.CodeCoverage/17.14.1": { + "sha512": "pmTrhfFIoplzFVbhVwUquT+77CbGH+h4/3mBpdmIlYtBi9nAB+kKI6dN3A/nV4DFi3wLLx/BlHIPK+MkbQ6Tpg==", + "type": "package", + "path": "microsoft.codecoverage/17.14.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.txt", + "build/netstandard2.0/CodeCoverage/CodeCoverage.config", + "build/netstandard2.0/CodeCoverage/CodeCoverage.exe", + "build/netstandard2.0/CodeCoverage/Cov_x86.config", + "build/netstandard2.0/CodeCoverage/amd64/CodeCoverage.exe", + "build/netstandard2.0/CodeCoverage/amd64/Cov_x64.config", + "build/netstandard2.0/CodeCoverage/amd64/covrun64.dll", + "build/netstandard2.0/CodeCoverage/amd64/msdia140.dll", + "build/netstandard2.0/CodeCoverage/arm64/Cov_arm64.config", + "build/netstandard2.0/CodeCoverage/arm64/covrunarm64.dll", + "build/netstandard2.0/CodeCoverage/arm64/msdia140.dll", + "build/netstandard2.0/CodeCoverage/codecoveragemessages.dll", + "build/netstandard2.0/CodeCoverage/coreclr/Microsoft.VisualStudio.CodeCoverage.Shim.dll", + "build/netstandard2.0/CodeCoverage/covrun32.dll", + "build/netstandard2.0/CodeCoverage/msdia140.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Core.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Instrumentation.Core.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Instrumentation.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Interprocess.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.props", + "build/netstandard2.0/Microsoft.CodeCoverage.targets", + "build/netstandard2.0/Microsoft.DiaSymReader.dll", + "build/netstandard2.0/Microsoft.VisualStudio.TraceDataCollector.dll", + "build/netstandard2.0/Mono.Cecil.Pdb.dll", + "build/netstandard2.0/Mono.Cecil.Rocks.dll", + "build/netstandard2.0/Mono.Cecil.dll", + "build/netstandard2.0/ThirdPartyNotices.txt", + "build/netstandard2.0/alpine/x64/Cov_x64.config", + "build/netstandard2.0/alpine/x64/libCoverageInstrumentationMethod.so", + "build/netstandard2.0/alpine/x64/libInstrumentationEngine.so", + "build/netstandard2.0/arm64/MicrosoftInstrumentationEngine_arm64.dll", + "build/netstandard2.0/cs/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/de/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/es/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/fr/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/it/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ja/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ko/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/macos/x64/Cov_x64.config", + "build/netstandard2.0/macos/x64/libCoverageInstrumentationMethod.dylib", + "build/netstandard2.0/macos/x64/libInstrumentationEngine.dylib", + "build/netstandard2.0/pl/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/pt-BR/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ru/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/tr/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ubuntu/x64/Cov_x64.config", + "build/netstandard2.0/ubuntu/x64/libCoverageInstrumentationMethod.so", + "build/netstandard2.0/ubuntu/x64/libInstrumentationEngine.so", + "build/netstandard2.0/x64/MicrosoftInstrumentationEngine_x64.dll", + "build/netstandard2.0/x86/MicrosoftInstrumentationEngine_x86.dll", + "build/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "lib/net462/Microsoft.VisualStudio.CodeCoverage.Shim.dll", + "lib/net8.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll", + "microsoft.codecoverage.17.14.1.nupkg.sha512", + "microsoft.codecoverage.nuspec" + ] + }, + "Microsoft.Data.Sqlite.Core/8.0.6": { + "sha512": "umhZ0ZF2RI81rGFTnYmCxI+Euj4Aqe/6Y4+8CxN9OVJNGDNIqB5laJ3wxQTU8zXCcm2k9F7FL+/6RVoOT4z1Fw==", + "type": "package", + "path": "microsoft.data.sqlite.core/8.0.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "lib/net6.0/Microsoft.Data.Sqlite.dll", + "lib/net6.0/Microsoft.Data.Sqlite.xml", + "lib/net8.0/Microsoft.Data.Sqlite.dll", + "lib/net8.0/Microsoft.Data.Sqlite.xml", + "lib/netstandard2.0/Microsoft.Data.Sqlite.dll", + "lib/netstandard2.0/Microsoft.Data.Sqlite.xml", + "microsoft.data.sqlite.core.8.0.6.nupkg.sha512", + "microsoft.data.sqlite.core.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore/8.0.18": { + "sha512": "LBc07vlgPxEXmjF0Kgn1S0mip3KLDPVD1OQOFu+4Mfpg1Z8OPMJ82MVCkqek1Ex2WeCzVGbNI9nRXcepHB+48g==", + "type": "package", + "path": "microsoft.entityframeworkcore/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props", + "lib/net8.0/Microsoft.EntityFrameworkCore.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.xml", + "microsoft.entityframeworkcore.8.0.18.nupkg.sha512", + "microsoft.entityframeworkcore.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Abstractions/8.0.18": { + "sha512": "aQGpxj0/RKXhSqDFbWENQgOg6WQH3z5Dezu3VBXaTCBHE6hAWQIZmmqdpO1k+lkANsoCSwPJZ4iFRqPPZXBXzg==", + "type": "package", + "path": "microsoft.entityframeworkcore.abstractions/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.xml", + "microsoft.entityframeworkcore.abstractions.8.0.18.nupkg.sha512", + "microsoft.entityframeworkcore.abstractions.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Analyzers/8.0.18": { + "sha512": "aYkyWRkb+o9++mtIWn5XSYPVND5N9mFFfvdmBX1s6kCss6XTaZsFXf8QjvaiXAcGblp/HoYzS5lusx0ZqeFxzQ==", + "type": "package", + "path": "microsoft.entityframeworkcore.analyzers/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "analyzers/dotnet/cs/Microsoft.EntityFrameworkCore.Analyzers.dll", + "docs/PACKAGE.md", + "lib/netstandard2.0/_._", + "microsoft.entityframeworkcore.analyzers.8.0.18.nupkg.sha512", + "microsoft.entityframeworkcore.analyzers.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Design/8.0.18": { + "sha512": "ONya9HGDtULSfoxld0ir12lxOxX2zp4TRYp6pO3wwXtWSYK3bU1kUSZMIJdeewznYcOfpCJVuSJVch6Y5xtIIQ==", + "type": "package", + "path": "microsoft.entityframeworkcore.design/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "build/net8.0/Microsoft.EntityFrameworkCore.Design.props", + "lib/net8.0/Microsoft.EntityFrameworkCore.Design.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.Design.xml", + "microsoft.entityframeworkcore.design.8.0.18.nupkg.sha512", + "microsoft.entityframeworkcore.design.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Relational/8.0.18": { + "sha512": "SL067ITd6QfDF9wNsNtGm3fROpnv3SNrOY3Fjb+efEUnKn5NI0sUitrtpUim+t1DtCJIs7qgmyCPdD3zjSt4Xw==", + "type": "package", + "path": "microsoft.entityframeworkcore.relational/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.xml", + "microsoft.entityframeworkcore.relational.8.0.18.nupkg.sha512", + "microsoft.entityframeworkcore.relational.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Sqlite/8.0.6": { + "sha512": "nC4cZN4zReTb22qd9WDU0eDmlXvkyf2g2pqQ3VIHJbkpJcdWSY/PDgwGpbpShsVcAjXbkjGiUcv9aGwa61xQPw==", + "type": "package", + "path": "microsoft.entityframeworkcore.sqlite/8.0.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "lib/net8.0/_._", + "microsoft.entityframeworkcore.sqlite.8.0.6.nupkg.sha512", + "microsoft.entityframeworkcore.sqlite.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Sqlite.Core/8.0.6": { + "sha512": "87xfPtqSouxWWdynYZv/rubd0rOUeiN9+XeoMWQzpZm/5svH1TuvzFODGIY0zKuXS18NiOFyHl9N6///eaEs/Q==", + "type": "package", + "path": "microsoft.entityframeworkcore.sqlite.core/8.0.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "lib/net8.0/Microsoft.EntityFrameworkCore.Sqlite.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.Sqlite.xml", + "microsoft.entityframeworkcore.sqlite.core.8.0.6.nupkg.sha512", + "microsoft.entityframeworkcore.sqlite.core.nuspec" + ] + }, + "Microsoft.Extensions.ApiDescription.Server/8.0.0": { + "sha512": "jDM3a95WerM8g6IcMiBXq1qRS9dqmEUpgnCk2DeMWpPkYtp1ia+CkXabOnK93JmhVlUmv8l9WMPsCSUm+WqkIA==", + "type": "package", + "path": "microsoft.extensions.apidescription.server/8.0.0", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "build/Microsoft.Extensions.ApiDescription.Server.props", + "build/Microsoft.Extensions.ApiDescription.Server.targets", + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.props", + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.targets", + "microsoft.extensions.apidescription.server.8.0.0.nupkg.sha512", + "microsoft.extensions.apidescription.server.nuspec", + "tools/Newtonsoft.Json.dll", + "tools/dotnet-getdocument.deps.json", + "tools/dotnet-getdocument.dll", + "tools/dotnet-getdocument.runtimeconfig.json", + "tools/net462-x86/GetDocument.Insider.exe", + "tools/net462-x86/GetDocument.Insider.exe.config", + "tools/net462-x86/System.Buffers.dll", + "tools/net462-x86/System.Diagnostics.DiagnosticSource.dll", + "tools/net462-x86/System.Memory.dll", + "tools/net462-x86/System.Numerics.Vectors.dll", + "tools/net462-x86/System.Runtime.CompilerServices.Unsafe.dll", + "tools/net462/GetDocument.Insider.exe", + "tools/net462/GetDocument.Insider.exe.config", + "tools/net462/System.Buffers.dll", + "tools/net462/System.Diagnostics.DiagnosticSource.dll", + "tools/net462/System.Memory.dll", + "tools/net462/System.Numerics.Vectors.dll", + "tools/net462/System.Runtime.CompilerServices.Unsafe.dll", + "tools/net8.0/GetDocument.Insider.deps.json", + "tools/net8.0/GetDocument.Insider.dll", + "tools/net8.0/GetDocument.Insider.exe", + "tools/net8.0/GetDocument.Insider.runtimeconfig.json", + "tools/net8.0/Microsoft.AspNetCore.Connections.Abstractions.dll", + "tools/net8.0/Microsoft.AspNetCore.Connections.Abstractions.xml", + "tools/net8.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll", + "tools/net8.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.xml", + "tools/net8.0/Microsoft.AspNetCore.Http.Features.dll", + "tools/net8.0/Microsoft.AspNetCore.Http.Features.xml", + "tools/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "tools/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "tools/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "tools/net8.0/Microsoft.Extensions.Features.dll", + "tools/net8.0/Microsoft.Extensions.Features.xml", + "tools/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "tools/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "tools/net8.0/Microsoft.Extensions.Logging.Abstractions.dll", + "tools/net8.0/Microsoft.Extensions.Options.dll", + "tools/net8.0/Microsoft.Extensions.Primitives.dll", + "tools/net8.0/Microsoft.Net.Http.Headers.dll", + "tools/net8.0/Microsoft.Net.Http.Headers.xml", + "tools/net8.0/System.IO.Pipelines.dll", + "tools/netcoreapp2.1/GetDocument.Insider.deps.json", + "tools/netcoreapp2.1/GetDocument.Insider.dll", + "tools/netcoreapp2.1/GetDocument.Insider.runtimeconfig.json", + "tools/netcoreapp2.1/System.Diagnostics.DiagnosticSource.dll" + ] + }, + "Microsoft.Extensions.Caching.Abstractions/8.0.0": { + "sha512": "3KuSxeHoNYdxVYfg2IRZCThcrlJ1XJqIXkAWikCsbm5C/bCjv7G0WoKDyuR98Q+T607QT2Zl5GsbGRkENcV2yQ==", + "type": "package", + "path": "microsoft.extensions.caching.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Caching.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.xml", + "microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.caching.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Caching.Memory/8.0.1": { + "sha512": "HFDnhYLccngrzyGgHkjEDU5FMLn4MpOsr5ElgsBMC4yx6lJh4jeWO7fHS8+TXPq+dgxCmUa/Trl8svObmwW4QA==", + "type": "package", + "path": "microsoft.extensions.caching.memory/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Caching.Memory.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Memory.targets", + "lib/net462/Microsoft.Extensions.Caching.Memory.dll", + "lib/net462/Microsoft.Extensions.Caching.Memory.xml", + "lib/net6.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/net6.0/Microsoft.Extensions.Caching.Memory.xml", + "lib/net7.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/net7.0/Microsoft.Extensions.Caching.Memory.xml", + "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/net8.0/Microsoft.Extensions.Caching.Memory.xml", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.xml", + "microsoft.extensions.caching.memory.8.0.1.nupkg.sha512", + "microsoft.extensions.caching.memory.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration/8.0.0": { + "sha512": "0J/9YNXTMWSZP2p2+nvl8p71zpSwokZXZuJW+VjdErkegAnFdO1XlqtA62SJtgVYHdKu3uPxJHcMR/r35HwFBA==", + "type": "package", + "path": "microsoft.extensions.configuration/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.targets", + "lib/net462/Microsoft.Extensions.Configuration.dll", + "lib/net462/Microsoft.Extensions.Configuration.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.xml", + "microsoft.extensions.configuration.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "sha512": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==", + "type": "package", + "path": "microsoft.extensions.configuration.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.Binder/8.0.2": { + "sha512": "7IQhGK+wjyGrNsPBjJcZwWAr+Wf6D4+TwOptUt77bWtgNkiV8tDEbhFS+dDamtQFZ2X7kWG9m71iZQRj2x3zgQ==", + "type": "package", + "path": "microsoft.extensions.configuration.binder/8.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/cs/Microsoft.Extensions.Configuration.Binder.SourceGeneration.dll", + "analyzers/dotnet/cs/cs/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/de/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/es/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/fr/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/it/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/ja/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/ko/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/pl/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/pt-BR/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/ru/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/tr/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/zh-Hans/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/zh-Hant/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets", + "lib/net462/Microsoft.Extensions.Configuration.Binder.dll", + "lib/net462/Microsoft.Extensions.Configuration.Binder.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.Binder.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.Binder.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.xml", + "microsoft.extensions.configuration.binder.8.0.2.nupkg.sha512", + "microsoft.extensions.configuration.binder.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.CommandLine/8.0.0": { + "sha512": "NZuZMz3Q8Z780nKX3ifV1fE7lS+6pynDHK71OfU4OZ1ItgvDOhyOC7E6z+JMZrAj63zRpwbdldYFk499t3+1dQ==", + "type": "package", + "path": "microsoft.extensions.configuration.commandline/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.CommandLine.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.CommandLine.targets", + "lib/net462/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/net462/Microsoft.Extensions.Configuration.CommandLine.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.CommandLine.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.CommandLine.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.CommandLine.xml", + "microsoft.extensions.configuration.commandline.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.commandline.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables/8.0.0": { + "sha512": "plvZ0ZIpq+97gdPNNvhwvrEZ92kNml9hd1pe3idMA7svR0PztdzVLkoWLcRFgySYXUJc3kSM3Xw3mNFMo/bxRA==", + "type": "package", + "path": "microsoft.extensions.configuration.environmentvariables/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.EnvironmentVariables.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.targets", + "lib/net462/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/net462/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "microsoft.extensions.configuration.environmentvariables.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.environmentvariables.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.FileExtensions/8.0.1": { + "sha512": "EJzSNO9oaAXnTdtdNO6npPRsIIeZCBSNmdQ091VDO7fBiOtJAAeEq6dtrVXIi3ZyjC5XRSAtVvF8SzcneRHqKQ==", + "type": "package", + "path": "microsoft.extensions.configuration.fileextensions/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.FileExtensions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.FileExtensions.targets", + "lib/net462/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/net462/Microsoft.Extensions.Configuration.FileExtensions.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.FileExtensions.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.FileExtensions.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.xml", + "microsoft.extensions.configuration.fileextensions.8.0.1.nupkg.sha512", + "microsoft.extensions.configuration.fileextensions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.Json/8.0.1": { + "sha512": "L89DLNuimOghjV3tLx0ArFDwVEJD6+uGB3BMCMX01kaLzXkaXHb2021xOMl2QOxUxbdePKUZsUY7n2UUkycjRg==", + "type": "package", + "path": "microsoft.extensions.configuration.json/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.Json.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.Json.targets", + "lib/net462/Microsoft.Extensions.Configuration.Json.dll", + "lib/net462/Microsoft.Extensions.Configuration.Json.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.Json.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.Json.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.Json.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.Json.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.Json.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.Json.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Json.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Json.xml", + "lib/netstandard2.1/Microsoft.Extensions.Configuration.Json.dll", + "lib/netstandard2.1/Microsoft.Extensions.Configuration.Json.xml", + "microsoft.extensions.configuration.json.8.0.1.nupkg.sha512", + "microsoft.extensions.configuration.json.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.UserSecrets/8.0.1": { + "sha512": "7tYqdPPpAK+3jO9d5LTuCK2VxrEdf85Ol4trUr6ds4jclBecadWZ/RyPCbNjfbN5iGTfUnD/h65TOQuqQv2c+A==", + "type": "package", + "path": "microsoft.extensions.configuration.usersecrets/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.UserSecrets.targets", + "buildTransitive/net462/Microsoft.Extensions.Configuration.UserSecrets.props", + "buildTransitive/net462/Microsoft.Extensions.Configuration.UserSecrets.targets", + "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.props", + "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.UserSecrets.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.props", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.targets", + "lib/net462/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/net462/Microsoft.Extensions.Configuration.UserSecrets.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.UserSecrets.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.UserSecrets.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.xml", + "microsoft.extensions.configuration.usersecrets.8.0.1.nupkg.sha512", + "microsoft.extensions.configuration.usersecrets.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyInjection/8.0.1": { + "sha512": "BmANAnR5Xd4Oqw7yQ75xOAYODybZQRzdeNucg7kS5wWKd2PNnMdYtJ2Vciy0QLylRmv42DGl5+AFL9izA6F1Rw==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets", + "lib/net462/Microsoft.Extensions.DependencyInjection.dll", + "lib/net462/Microsoft.Extensions.DependencyInjection.xml", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", + "microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512", + "microsoft.extensions.dependencyinjection.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": { + "sha512": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets", + "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512", + "microsoft.extensions.dependencyinjection.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyModel/8.0.2": { + "sha512": "mUBDZZRgZrSyFOsJ2qJJ9fXfqd/kXJwf3AiDoqLD9m6TjY5OO/vLNOb9fb4juC0487eq4hcGN/M2Rh/CKS7QYw==", + "type": "package", + "path": "microsoft.extensions.dependencymodel/8.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyModel.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyModel.targets", + "lib/net462/Microsoft.Extensions.DependencyModel.dll", + "lib/net462/Microsoft.Extensions.DependencyModel.xml", + "lib/net6.0/Microsoft.Extensions.DependencyModel.dll", + "lib/net6.0/Microsoft.Extensions.DependencyModel.xml", + "lib/net7.0/Microsoft.Extensions.DependencyModel.dll", + "lib/net7.0/Microsoft.Extensions.DependencyModel.xml", + "lib/net8.0/Microsoft.Extensions.DependencyModel.dll", + "lib/net8.0/Microsoft.Extensions.DependencyModel.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyModel.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyModel.xml", + "microsoft.extensions.dependencymodel.8.0.2.nupkg.sha512", + "microsoft.extensions.dependencymodel.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Diagnostics/8.0.1": { + "sha512": "doVPCUUCY7c6LhBsEfiy3W1bvS7Mi6LkfQMS8nlC22jZWNxBv8VO8bdfeyvpYFst6Kxqk7HBC6lytmEoBssvSQ==", + "type": "package", + "path": "microsoft.extensions.diagnostics/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Diagnostics.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Diagnostics.targets", + "lib/net462/Microsoft.Extensions.Diagnostics.dll", + "lib/net462/Microsoft.Extensions.Diagnostics.xml", + "lib/net6.0/Microsoft.Extensions.Diagnostics.dll", + "lib/net6.0/Microsoft.Extensions.Diagnostics.xml", + "lib/net7.0/Microsoft.Extensions.Diagnostics.dll", + "lib/net7.0/Microsoft.Extensions.Diagnostics.xml", + "lib/net8.0/Microsoft.Extensions.Diagnostics.dll", + "lib/net8.0/Microsoft.Extensions.Diagnostics.xml", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.dll", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.xml", + "microsoft.extensions.diagnostics.8.0.1.nupkg.sha512", + "microsoft.extensions.diagnostics.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Diagnostics.Abstractions/8.0.1": { + "sha512": "elH2vmwNmsXuKmUeMQ4YW9ldXiF+gSGDgg1vORksob5POnpaI6caj1Hu8zaYbEuibhqCoWg0YRWDazBY3zjBfg==", + "type": "package", + "path": "microsoft.extensions.diagnostics.abstractions/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Diagnostics.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Diagnostics.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "microsoft.extensions.diagnostics.abstractions.8.0.1.nupkg.sha512", + "microsoft.extensions.diagnostics.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { + "sha512": "ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", + "type": "package", + "path": "microsoft.extensions.fileproviders.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.FileProviders.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.FileProviders.Abstractions.targets", + "lib/net462/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/net462/Microsoft.Extensions.FileProviders.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.FileProviders.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.xml", + "microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.fileproviders.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.FileProviders.Physical/8.0.0": { + "sha512": "UboiXxpPUpwulHvIAVE36Knq0VSHaAmfrFkegLyBZeaADuKezJ/AIXYAW8F5GBlGk/VaibN2k/Zn1ca8YAfVdA==", + "type": "package", + "path": "microsoft.extensions.fileproviders.physical/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.FileProviders.Physical.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.FileProviders.Physical.targets", + "lib/net462/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/net462/Microsoft.Extensions.FileProviders.Physical.xml", + "lib/net6.0/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/net6.0/Microsoft.Extensions.FileProviders.Physical.xml", + "lib/net7.0/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/net7.0/Microsoft.Extensions.FileProviders.Physical.xml", + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.xml", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.xml", + "microsoft.extensions.fileproviders.physical.8.0.0.nupkg.sha512", + "microsoft.extensions.fileproviders.physical.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.FileSystemGlobbing/8.0.0": { + "sha512": "OK+670i7esqlQrPjdIKRbsyMCe9g5kSLpRRQGSr4Q58AOYEe/hCnfLZprh7viNisSUUQZmMrbbuDaIrP+V1ebQ==", + "type": "package", + "path": "microsoft.extensions.filesystemglobbing/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.FileSystemGlobbing.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.FileSystemGlobbing.targets", + "lib/net462/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/net462/Microsoft.Extensions.FileSystemGlobbing.xml", + "lib/net6.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/net6.0/Microsoft.Extensions.FileSystemGlobbing.xml", + "lib/net7.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/net7.0/Microsoft.Extensions.FileSystemGlobbing.xml", + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.xml", + "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.xml", + "microsoft.extensions.filesystemglobbing.8.0.0.nupkg.sha512", + "microsoft.extensions.filesystemglobbing.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Hosting/8.0.1": { + "sha512": "bP9EEkHBEfjgYiG8nUaXqMk/ujwJrffOkNPP7onpRMO8R+OUSESSP4xHkCAXgYZ1COP2Q9lXlU5gkMFh20gRuw==", + "type": "package", + "path": "microsoft.extensions.hosting/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Hosting.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Hosting.targets", + "lib/net462/Microsoft.Extensions.Hosting.dll", + "lib/net462/Microsoft.Extensions.Hosting.xml", + "lib/net6.0/Microsoft.Extensions.Hosting.dll", + "lib/net6.0/Microsoft.Extensions.Hosting.xml", + "lib/net7.0/Microsoft.Extensions.Hosting.dll", + "lib/net7.0/Microsoft.Extensions.Hosting.xml", + "lib/net8.0/Microsoft.Extensions.Hosting.dll", + "lib/net8.0/Microsoft.Extensions.Hosting.xml", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.dll", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.xml", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.dll", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.xml", + "microsoft.extensions.hosting.8.0.1.nupkg.sha512", + "microsoft.extensions.hosting.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Hosting.Abstractions/8.0.1": { + "sha512": "nHwq9aPBdBPYXPti6wYEEfgXddfBrYC+CQLn+qISiwQq5tpfaqDZSKOJNxoe9rfQxGf1c+2wC/qWFe1QYJPYqw==", + "type": "package", + "path": "microsoft.extensions.hosting.abstractions/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Hosting.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Hosting.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.Abstractions.xml", + "microsoft.extensions.hosting.abstractions.8.0.1.nupkg.sha512", + "microsoft.extensions.hosting.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging/8.0.1": { + "sha512": "4x+pzsQEbqxhNf1QYRr5TDkLP9UsLT3A6MdRKDDEgrW7h1ljiEPgTNhKYUhNCCAaVpQECVQ+onA91PTPnIp6Lw==", + "type": "package", + "path": "microsoft.extensions.logging/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.targets", + "lib/net462/Microsoft.Extensions.Logging.dll", + "lib/net462/Microsoft.Extensions.Logging.xml", + "lib/net6.0/Microsoft.Extensions.Logging.dll", + "lib/net6.0/Microsoft.Extensions.Logging.xml", + "lib/net7.0/Microsoft.Extensions.Logging.dll", + "lib/net7.0/Microsoft.Extensions.Logging.xml", + "lib/net8.0/Microsoft.Extensions.Logging.dll", + "lib/net8.0/Microsoft.Extensions.Logging.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", + "lib/netstandard2.1/Microsoft.Extensions.Logging.dll", + "lib/netstandard2.1/Microsoft.Extensions.Logging.xml", + "microsoft.extensions.logging.8.0.1.nupkg.sha512", + "microsoft.extensions.logging.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Abstractions/8.0.2": { + "sha512": "nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==", + "type": "package", + "path": "microsoft.extensions.logging.abstractions/8.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", + "microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512", + "microsoft.extensions.logging.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Configuration/8.0.1": { + "sha512": "QWwTrsgOnJMmn+XUslm8D2H1n3PkP/u/v52FODtyBc/k4W9r3i2vcXXeeX/upnzllJYRRbrzVzT0OclfNJtBJA==", + "type": "package", + "path": "microsoft.extensions.logging.configuration/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.Configuration.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Configuration.targets", + "lib/net462/Microsoft.Extensions.Logging.Configuration.dll", + "lib/net462/Microsoft.Extensions.Logging.Configuration.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Configuration.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Configuration.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Configuration.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Configuration.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Configuration.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Configuration.xml", + "microsoft.extensions.logging.configuration.8.0.1.nupkg.sha512", + "microsoft.extensions.logging.configuration.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Console/8.0.1": { + "sha512": "uzcg/5U2eLyn5LIKlERkdSxw6VPC1yydnOSQiRRWGBGN3kphq3iL4emORzrojScDmxRhv49gp5BI8U3Dz7y4iA==", + "type": "package", + "path": "microsoft.extensions.logging.console/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.Console.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Console.targets", + "lib/net462/Microsoft.Extensions.Logging.Console.dll", + "lib/net462/Microsoft.Extensions.Logging.Console.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Console.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Console.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Console.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Console.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Console.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Console.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Console.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Console.xml", + "microsoft.extensions.logging.console.8.0.1.nupkg.sha512", + "microsoft.extensions.logging.console.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Debug/8.0.1": { + "sha512": "B8hqNuYudC2RB+L/DI33uO4rf5by41fZVdcVL2oZj0UyoAZqnwTwYHp1KafoH4nkl1/23piNeybFFASaV2HkFg==", + "type": "package", + "path": "microsoft.extensions.logging.debug/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.Debug.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Debug.targets", + "lib/net462/Microsoft.Extensions.Logging.Debug.dll", + "lib/net462/Microsoft.Extensions.Logging.Debug.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Debug.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Debug.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Debug.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Debug.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Debug.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Debug.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Debug.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Debug.xml", + "microsoft.extensions.logging.debug.8.0.1.nupkg.sha512", + "microsoft.extensions.logging.debug.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.EventLog/8.0.1": { + "sha512": "ZD1m4GXoxcZeDJIq8qePKj+QAWeQNO/OG8skvrOG8RQfxLp9MAKRoliTc27xanoNUzeqvX5HhS/I7c0BvwAYUg==", + "type": "package", + "path": "microsoft.extensions.logging.eventlog/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.EventLog.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.EventLog.targets", + "lib/net462/Microsoft.Extensions.Logging.EventLog.dll", + "lib/net462/Microsoft.Extensions.Logging.EventLog.xml", + "lib/net6.0/Microsoft.Extensions.Logging.EventLog.dll", + "lib/net6.0/Microsoft.Extensions.Logging.EventLog.xml", + "lib/net7.0/Microsoft.Extensions.Logging.EventLog.dll", + "lib/net7.0/Microsoft.Extensions.Logging.EventLog.xml", + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll", + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.EventLog.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.EventLog.xml", + "microsoft.extensions.logging.eventlog.8.0.1.nupkg.sha512", + "microsoft.extensions.logging.eventlog.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.EventSource/8.0.1": { + "sha512": "YMXMAla6B6sEf/SnfZYTty633Ool3AH7KOw2LOaaEqwSo2piK4f7HMtzyc3CNiipDnq1fsUSuG5Oc7ZzpVy8WQ==", + "type": "package", + "path": "microsoft.extensions.logging.eventsource/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.EventSource.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.EventSource.targets", + "lib/net462/Microsoft.Extensions.Logging.EventSource.dll", + "lib/net462/Microsoft.Extensions.Logging.EventSource.xml", + "lib/net6.0/Microsoft.Extensions.Logging.EventSource.dll", + "lib/net6.0/Microsoft.Extensions.Logging.EventSource.xml", + "lib/net7.0/Microsoft.Extensions.Logging.EventSource.dll", + "lib/net7.0/Microsoft.Extensions.Logging.EventSource.xml", + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll", + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.EventSource.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.EventSource.xml", + "microsoft.extensions.logging.eventsource.8.0.1.nupkg.sha512", + "microsoft.extensions.logging.eventsource.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Options/8.0.2": { + "sha512": "dWGKvhFybsaZpGmzkGCbNNwBD1rVlWzrZKANLW/CcbFJpCEceMCGzT7zZwHOGBCbwM0SzBuceMj5HN1LKV1QqA==", + "type": "package", + "path": "microsoft.extensions.options/8.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Options.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "buildTransitive/net461/Microsoft.Extensions.Options.targets", + "buildTransitive/net462/Microsoft.Extensions.Options.targets", + "buildTransitive/net6.0/Microsoft.Extensions.Options.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets", + "lib/net462/Microsoft.Extensions.Options.dll", + "lib/net462/Microsoft.Extensions.Options.xml", + "lib/net6.0/Microsoft.Extensions.Options.dll", + "lib/net6.0/Microsoft.Extensions.Options.xml", + "lib/net7.0/Microsoft.Extensions.Options.dll", + "lib/net7.0/Microsoft.Extensions.Options.xml", + "lib/net8.0/Microsoft.Extensions.Options.dll", + "lib/net8.0/Microsoft.Extensions.Options.xml", + "lib/netstandard2.0/Microsoft.Extensions.Options.dll", + "lib/netstandard2.0/Microsoft.Extensions.Options.xml", + "lib/netstandard2.1/Microsoft.Extensions.Options.dll", + "lib/netstandard2.1/Microsoft.Extensions.Options.xml", + "microsoft.extensions.options.8.0.2.nupkg.sha512", + "microsoft.extensions.options.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": { + "sha512": "0f4DMRqEd50zQh+UyJc+/HiBsZ3vhAQALgdkcQEalSH1L2isdC7Yj54M3cyo5e+BeO5fcBQ7Dxly8XiBBcvRgw==", + "type": "package", + "path": "microsoft.extensions.options.configurationextensions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Options.ConfigurationExtensions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.ConfigurationExtensions.targets", + "lib/net462/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/net462/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "lib/net6.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/net6.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "lib/net7.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/net7.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512", + "microsoft.extensions.options.configurationextensions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Primitives/8.0.0": { + "sha512": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==", + "type": "package", + "path": "microsoft.extensions.primitives/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Primitives.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets", + "lib/net462/Microsoft.Extensions.Primitives.dll", + "lib/net462/Microsoft.Extensions.Primitives.xml", + "lib/net6.0/Microsoft.Extensions.Primitives.dll", + "lib/net6.0/Microsoft.Extensions.Primitives.xml", + "lib/net7.0/Microsoft.Extensions.Primitives.dll", + "lib/net7.0/Microsoft.Extensions.Primitives.xml", + "lib/net8.0/Microsoft.Extensions.Primitives.dll", + "lib/net8.0/Microsoft.Extensions.Primitives.xml", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", + "microsoft.extensions.primitives.8.0.0.nupkg.sha512", + "microsoft.extensions.primitives.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.NET.Test.Sdk/17.14.1": { + "sha512": "HJKqKOE+vshXra2aEHpi2TlxYX7Z9VFYkr+E5rwEvHC8eIXiyO+K9kNm8vmNom3e2rA56WqxU+/N9NJlLGXsJQ==", + "type": "package", + "path": "microsoft.net.test.sdk/17.14.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "build/net462/Microsoft.NET.Test.Sdk.props", + "build/net462/Microsoft.NET.Test.Sdk.targets", + "build/net8.0/Microsoft.NET.Test.Sdk.Program.cs", + "build/net8.0/Microsoft.NET.Test.Sdk.Program.fs", + "build/net8.0/Microsoft.NET.Test.Sdk.Program.vb", + "build/net8.0/Microsoft.NET.Test.Sdk.props", + "build/net8.0/Microsoft.NET.Test.Sdk.targets", + "build/netcoreapp2.0/Microsoft.NET.Test.Sdk.props", + "build/netcoreapp2.0/Microsoft.NET.Test.Sdk.targets", + "build/netstandard2.0/Microsoft.NET.Test.Sdk.props", + "build/netstandard2.0/Microsoft.NET.Test.Sdk.targets", + "buildMultiTargeting/net462/Microsoft.NET.Test.Sdk.props", + "buildMultiTargeting/net8.0/Microsoft.NET.Test.Sdk.props", + "buildMultiTargeting/netcoreapp2.0/Microsoft.NET.Test.Sdk.props", + "buildMultiTargeting/netcoreapp2.0/Microsoft.NET.Test.Sdk.targets", + "buildMultiTargeting/netstandard2.0/Microsoft.NET.Test.Sdk.props", + "buildMultiTargeting/netstandard2.0/Microsoft.NET.Test.Sdk.targets", + "lib/native/_._", + "lib/net462/_._", + "lib/net8.0/_._", + "microsoft.net.test.sdk.17.14.1.nupkg.sha512", + "microsoft.net.test.sdk.nuspec" + ] + }, + "Microsoft.OpenApi/1.6.23": { + "sha512": "tZ1I0KXnn98CWuV8cpI247A17jaY+ILS9vvF7yhI0uPPEqF4P1d7BWL5Uwtel10w9NucllHB3nTkfYTAcHAh8g==", + "type": "package", + "path": "microsoft.openapi/1.6.23", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/netstandard2.0/Microsoft.OpenApi.dll", + "lib/netstandard2.0/Microsoft.OpenApi.pdb", + "lib/netstandard2.0/Microsoft.OpenApi.xml", + "microsoft.openapi.1.6.23.nupkg.sha512", + "microsoft.openapi.nuspec" + ] + }, + "Microsoft.TestPlatform.ObjectModel/17.14.1": { + "sha512": "xTP1W6Mi6SWmuxd3a+jj9G9UoC850WGwZUps1Wah9r1ZxgXhdJfj1QqDLJkFjHDCvN42qDL2Ps5KjQYWUU0zcQ==", + "type": "package", + "path": "microsoft.testplatform.objectmodel/17.14.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/net462/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/net462/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/net462/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/net462/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/net8.0/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/net8.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/netstandard2.0/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/netstandard2.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/netstandard2.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "microsoft.testplatform.objectmodel.17.14.1.nupkg.sha512", + "microsoft.testplatform.objectmodel.nuspec" + ] + }, + "Microsoft.TestPlatform.TestHost/17.14.1": { + "sha512": "d78LPzGKkJwsJXAQwsbJJ7LE7D1wB+rAyhHHAaODF+RDSQ0NgMjDFkSA1Djw18VrxO76GlKAjRUhl+H8NL8Z+Q==", + "type": "package", + "path": "microsoft.testplatform.testhost/17.14.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.txt", + "build/net8.0/Microsoft.TestPlatform.TestHost.props", + "build/net8.0/Microsoft.TestPlatform.TestHost.targets", + "build/net8.0/x64/testhost.dll", + "build/net8.0/x64/testhost.exe", + "build/net8.0/x86/testhost.x86.dll", + "build/net8.0/x86/testhost.x86.exe", + "lib/net462/_._", + "lib/net8.0/Microsoft.TestPlatform.CommunicationUtilities.dll", + "lib/net8.0/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/net8.0/Microsoft.TestPlatform.CrossPlatEngine.dll", + "lib/net8.0/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/net8.0/Microsoft.TestPlatform.Utilities.dll", + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.Common.dll", + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/net8.0/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/testhost.deps.json", + "lib/net8.0/testhost.dll", + "lib/net8.0/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/x64/msdia140.dll", + "lib/net8.0/x86/msdia140.dll", + "lib/net8.0/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "microsoft.testplatform.testhost.17.14.1.nupkg.sha512", + "microsoft.testplatform.testhost.nuspec" + ] + }, + "Mono.TextTemplating/2.2.1": { + "sha512": "KZYeKBET/2Z0gY1WlTAK7+RHTl7GSbtvTLDXEZZojUdAPqpQNDL6tHv7VUpqfX5VEOh+uRGKaZXkuD253nEOBQ==", + "type": "package", + "path": "mono.texttemplating/2.2.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net472/Mono.TextTemplating.dll", + "lib/netstandard2.0/Mono.TextTemplating.dll", + "mono.texttemplating.2.2.1.nupkg.sha512", + "mono.texttemplating.nuspec" + ] + }, + "Moq/4.20.72": { + "sha512": "EA55cjyNn8eTNWrgrdZJH5QLFp2L43oxl1tlkoYUKIE9pRwL784OWiTXeCV5ApS+AMYEAlt7Fo03A2XfouvHmQ==", + "type": "package", + "path": "moq/4.20.72", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "icon.png", + "lib/net462/Moq.dll", + "lib/net6.0/Moq.dll", + "lib/netstandard2.0/Moq.dll", + "lib/netstandard2.1/Moq.dll", + "moq.4.20.72.nupkg.sha512", + "moq.nuspec", + "readme.md" + ] + }, + "MySqlConnector/2.3.5": { + "sha512": "AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==", + "type": "package", + "path": "mysqlconnector/2.3.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net462/MySqlConnector.dll", + "lib/net462/MySqlConnector.xml", + "lib/net471/MySqlConnector.dll", + "lib/net471/MySqlConnector.xml", + "lib/net48/MySqlConnector.dll", + "lib/net48/MySqlConnector.xml", + "lib/net6.0/MySqlConnector.dll", + "lib/net6.0/MySqlConnector.xml", + "lib/net7.0/MySqlConnector.dll", + "lib/net7.0/MySqlConnector.xml", + "lib/net8.0/MySqlConnector.dll", + "lib/net8.0/MySqlConnector.xml", + "lib/netstandard2.0/MySqlConnector.dll", + "lib/netstandard2.0/MySqlConnector.xml", + "lib/netstandard2.1/MySqlConnector.dll", + "lib/netstandard2.1/MySqlConnector.xml", + "logo.png", + "mysqlconnector.2.3.5.nupkg.sha512", + "mysqlconnector.nuspec" + ] + }, + "Newtonsoft.Json/13.0.3": { + "sha512": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==", + "type": "package", + "path": "newtonsoft.json/13.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.md", + "README.md", + "lib/net20/Newtonsoft.Json.dll", + "lib/net20/Newtonsoft.Json.xml", + "lib/net35/Newtonsoft.Json.dll", + "lib/net35/Newtonsoft.Json.xml", + "lib/net40/Newtonsoft.Json.dll", + "lib/net40/Newtonsoft.Json.xml", + "lib/net45/Newtonsoft.Json.dll", + "lib/net45/Newtonsoft.Json.xml", + "lib/net6.0/Newtonsoft.Json.dll", + "lib/net6.0/Newtonsoft.Json.xml", + "lib/netstandard1.0/Newtonsoft.Json.dll", + "lib/netstandard1.0/Newtonsoft.Json.xml", + "lib/netstandard1.3/Newtonsoft.Json.dll", + "lib/netstandard1.3/Newtonsoft.Json.xml", + "lib/netstandard2.0/Newtonsoft.Json.dll", + "lib/netstandard2.0/Newtonsoft.Json.xml", + "newtonsoft.json.13.0.3.nupkg.sha512", + "newtonsoft.json.nuspec", + "packageIcon.png" + ] + }, + "Pfim/0.11.3": { + "sha512": "UNVStuGHVIGyBlQaLX8VY6KpzZm/pG2zpV8ewNSXNFKFVPn8dLQKJITfps3lwUMzwTL+Do7RrMUvgQ1ZsPTu4w==", + "type": "package", + "path": "pfim/0.11.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Pfim.dll", + "pfim.0.11.3.nupkg.sha512", + "pfim.nuspec" + ] + }, + "Pipelines.Sockets.Unofficial/2.2.8": { + "sha512": "zG2FApP5zxSx6OcdJQLbZDk2AVlN2BNQD6MorwIfV6gVj0RRxWPEp2LXAxqDGZqeNV1Zp0BNPcNaey/GXmTdvQ==", + "type": "package", + "path": "pipelines.sockets.unofficial/2.2.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Pipelines.Sockets.Unofficial.dll", + "lib/net461/Pipelines.Sockets.Unofficial.xml", + "lib/net472/Pipelines.Sockets.Unofficial.dll", + "lib/net472/Pipelines.Sockets.Unofficial.xml", + "lib/net5.0/Pipelines.Sockets.Unofficial.dll", + "lib/net5.0/Pipelines.Sockets.Unofficial.xml", + "lib/netcoreapp3.1/Pipelines.Sockets.Unofficial.dll", + "lib/netcoreapp3.1/Pipelines.Sockets.Unofficial.xml", + "lib/netstandard2.0/Pipelines.Sockets.Unofficial.dll", + "lib/netstandard2.0/Pipelines.Sockets.Unofficial.xml", + "lib/netstandard2.1/Pipelines.Sockets.Unofficial.dll", + "lib/netstandard2.1/Pipelines.Sockets.Unofficial.xml", + "pipelines.sockets.unofficial.2.2.8.nupkg.sha512", + "pipelines.sockets.unofficial.nuspec" + ] + }, + "Pomelo.EntityFrameworkCore.MySql/8.0.2": { + "sha512": "XjnlcxVBLnEMbyEc5cZzgZeDyLvAniACZQ04W1slWN0f4rmfNzl98gEMvHnFH0fMDF06z9MmgGi/Sr7hJ+BVnw==", + "type": "package", + "path": "pomelo.entityframeworkcore.mysql/8.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll", + "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.xml", + "pomelo.entityframeworkcore.mysql.8.0.2.nupkg.sha512", + "pomelo.entityframeworkcore.mysql.nuspec" + ] + }, + "QRCoder/1.6.0": { + "sha512": "XmPA81eo+oRxBuyVdswsSkTGTE1d3thfF11Z1PdD7oB56A6HU4G4AAOdySmGRMb/cljwlFTMWUtosGEnwpS6GA==", + "type": "package", + "path": "qrcoder/1.6.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net35/QRCoder.dll", + "lib/net40/QRCoder.dll", + "lib/net5.0-windows7.0/QRCoder.dll", + "lib/net5.0/QRCoder.dll", + "lib/net6.0-windows7.0/QRCoder.dll", + "lib/net6.0/QRCoder.dll", + "lib/netstandard1.3/QRCoder.dll", + "lib/netstandard2.0/QRCoder.dll", + "nuget-icon.png", + "nuget-readme.md", + "qrcoder.1.6.0.nupkg.sha512", + "qrcoder.nuspec" + ] + }, + "Redis.OM/1.0.1": { + "sha512": "0kreYGe1w3dy6Ymv+wbdCfcpSu8p9uGGmz3Z+Kp4XbTrF1QrcJFgq9mWMQ7Js538Mb7AR+IaKIcpYX0C0asHgg==", + "type": "package", + "path": "redis.om/1.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon-square.png", + "lib/netstandard2.0/Redis.OM.dll", + "lib/netstandard2.0/Redis.OM.xml", + "redis.om.1.0.1.nupkg.sha512", + "redis.om.nuspec" + ] + }, + "Selenium.WebDriver/4.34.0": { + "sha512": "uNx+GF7WugHDPV2zpGDPlbSn3STQ6n0xFskFSeJdhEuuUTkIDfAsYnjVUiQidWDpy7mKzTz53ae7Thjghl3dng==", + "type": "package", + "path": "selenium.webdriver/4.34.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "build/Selenium.WebDriver.targets", + "buildTransitive/Selenium.WebDriver.targets", + "icon.png", + "lib/net8.0/WebDriver.dll", + "lib/net8.0/WebDriver.xml", + "lib/netstandard2.0/WebDriver.dll", + "lib/netstandard2.0/WebDriver.xml", + "manager/linux/selenium-manager", + "manager/macos/selenium-manager", + "manager/windows/selenium-manager.exe", + "selenium.webdriver.4.34.0.nupkg.sha512", + "selenium.webdriver.nuspec" + ] + }, + "Selenium.WebDriver.ChromeDriver/138.0.7204.9400": { + "sha512": "nVFFEbOaBeY0uWJikYNPlR1SQUb69eP0Jv3s7H0gLJHEbNMXPBSvkyVY3UYMYGpiEnFg+CUQD66Lw1yTV/mAdQ==", + "type": "package", + "path": "selenium.webdriver.chromedriver/138.0.7204.9400", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE", + "README.md", + "build/DefinePropertiesChromeDriver.targets", + "build/Selenium.WebDriver.ChromeDriver.targets", + "driver/linux64/LICENSE.chromedriver", + "driver/linux64/chromedriver", + "driver/mac64/LICENSE.chromedriver", + "driver/mac64/chromedriver", + "driver/mac64arm/LICENSE.chromedriver", + "driver/mac64arm/chromedriver", + "driver/win32/LICENSE.chromedriver", + "driver/win32/chromedriver.exe", + "nupkg-icon.png", + "selenium.webdriver.chromedriver.138.0.7204.9400.nupkg.sha512", + "selenium.webdriver.chromedriver.nuspec" + ] + }, + "SharpZipLib/1.4.2": { + "sha512": "yjj+3zgz8zgXpiiC3ZdF/iyTBbz2fFvMxZFEBPUcwZjIvXOf37Ylm+K58hqMfIBt5JgU/Z2uoUS67JmTLe973A==", + "type": "package", + "path": "sharpziplib/1.4.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "images/sharpziplib-nuget-256x256.png", + "lib/net6.0/ICSharpCode.SharpZipLib.dll", + "lib/net6.0/ICSharpCode.SharpZipLib.pdb", + "lib/net6.0/ICSharpCode.SharpZipLib.xml", + "lib/netstandard2.0/ICSharpCode.SharpZipLib.dll", + "lib/netstandard2.0/ICSharpCode.SharpZipLib.pdb", + "lib/netstandard2.0/ICSharpCode.SharpZipLib.xml", + "lib/netstandard2.1/ICSharpCode.SharpZipLib.dll", + "lib/netstandard2.1/ICSharpCode.SharpZipLib.pdb", + "lib/netstandard2.1/ICSharpCode.SharpZipLib.xml", + "sharpziplib.1.4.2.nupkg.sha512", + "sharpziplib.nuspec" + ] + }, + "SixLabors.ImageSharp/3.1.10": { + "sha512": "R1HEPcqx3v+kvlOTPouP0g/Nzzud9pHtjlgGbFax3Ivaz8kkaGfS2EPfyDGpmfoTUQ3nQ5wxdhYyYa9fwYA9cw==", + "type": "package", + "path": "sixlabors.imagesharp/3.1.10", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE", + "build/SixLabors.ImageSharp.props", + "lib/net6.0/SixLabors.ImageSharp.dll", + "lib/net6.0/SixLabors.ImageSharp.xml", + "sixlabors.imagesharp.128.png", + "sixlabors.imagesharp.3.1.10.nupkg.sha512", + "sixlabors.imagesharp.nuspec" + ] + }, + "SQLitePCLRaw.bundle_e_sqlite3/2.1.6": { + "sha512": "BmAf6XWt4TqtowmiWe4/5rRot6GerAeklmOPfviOvwLoF5WwgxcJHAxZtySuyW9r9w+HLILnm8VfJFLCUJYW8A==", + "type": "package", + "path": "sqlitepclraw.bundle_e_sqlite3/2.1.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/monoandroid90/SQLitePCLRaw.batteries_v2.dll", + "lib/net461/SQLitePCLRaw.batteries_v2.dll", + "lib/net6.0-android31.0/SQLitePCLRaw.batteries_v2.dll", + "lib/net6.0-android31.0/SQLitePCLRaw.batteries_v2.xml", + "lib/net6.0-ios14.0/SQLitePCLRaw.batteries_v2.dll", + "lib/net6.0-ios14.2/SQLitePCLRaw.batteries_v2.dll", + "lib/net6.0-tvos10.0/SQLitePCLRaw.batteries_v2.dll", + "lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll", + "lib/xamarinios10/SQLitePCLRaw.batteries_v2.dll", + "sqlitepclraw.bundle_e_sqlite3.2.1.6.nupkg.sha512", + "sqlitepclraw.bundle_e_sqlite3.nuspec" + ] + }, + "SQLitePCLRaw.core/2.1.6": { + "sha512": "wO6v9GeMx9CUngAet8hbO7xdm+M42p1XeJq47ogyRoYSvNSp0NGLI+MgC0bhrMk9C17MTVFlLiN6ylyExLCc5w==", + "type": "package", + "path": "sqlitepclraw.core/2.1.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/SQLitePCLRaw.core.dll", + "sqlitepclraw.core.2.1.6.nupkg.sha512", + "sqlitepclraw.core.nuspec" + ] + }, + "SQLitePCLRaw.lib.e_sqlite3/2.1.6": { + "sha512": "2ObJJLkIUIxRpOUlZNGuD4rICpBnrBR5anjyfUFQep4hMOIeqW+XGQYzrNmHSVz5xSWZ3klSbh7sFR6UyDj68Q==", + "type": "package", + "path": "sqlitepclraw.lib.e_sqlite3/2.1.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "buildTransitive/net461/SQLitePCLRaw.lib.e_sqlite3.targets", + "buildTransitive/net6.0/SQLitePCLRaw.lib.e_sqlite3.targets", + "buildTransitive/net7.0/SQLitePCLRaw.lib.e_sqlite3.targets", + "buildTransitive/net8.0/SQLitePCLRaw.lib.e_sqlite3.targets", + "lib/net461/_._", + "lib/netstandard2.0/_._", + "runtimes/browser-wasm/nativeassets/net6.0/e_sqlite3.a", + "runtimes/browser-wasm/nativeassets/net7.0/e_sqlite3.a", + "runtimes/browser-wasm/nativeassets/net8.0/e_sqlite3.a", + "runtimes/linux-arm/native/libe_sqlite3.so", + "runtimes/linux-arm64/native/libe_sqlite3.so", + "runtimes/linux-armel/native/libe_sqlite3.so", + "runtimes/linux-mips64/native/libe_sqlite3.so", + "runtimes/linux-musl-arm/native/libe_sqlite3.so", + "runtimes/linux-musl-arm64/native/libe_sqlite3.so", + "runtimes/linux-musl-x64/native/libe_sqlite3.so", + "runtimes/linux-ppc64le/native/libe_sqlite3.so", + "runtimes/linux-s390x/native/libe_sqlite3.so", + "runtimes/linux-x64/native/libe_sqlite3.so", + "runtimes/linux-x86/native/libe_sqlite3.so", + "runtimes/maccatalyst-arm64/native/libe_sqlite3.dylib", + "runtimes/maccatalyst-x64/native/libe_sqlite3.dylib", + "runtimes/osx-arm64/native/libe_sqlite3.dylib", + "runtimes/osx-x64/native/libe_sqlite3.dylib", + "runtimes/win-arm/native/e_sqlite3.dll", + "runtimes/win-arm64/native/e_sqlite3.dll", + "runtimes/win-x64/native/e_sqlite3.dll", + "runtimes/win-x86/native/e_sqlite3.dll", + "runtimes/win10-arm/nativeassets/uap10.0/e_sqlite3.dll", + "runtimes/win10-arm64/nativeassets/uap10.0/e_sqlite3.dll", + "runtimes/win10-x64/nativeassets/uap10.0/e_sqlite3.dll", + "runtimes/win10-x86/nativeassets/uap10.0/e_sqlite3.dll", + "sqlitepclraw.lib.e_sqlite3.2.1.6.nupkg.sha512", + "sqlitepclraw.lib.e_sqlite3.nuspec" + ] + }, + "SQLitePCLRaw.provider.e_sqlite3/2.1.6": { + "sha512": "PQ2Oq3yepLY4P7ll145P3xtx2bX8xF4PzaKPRpw9jZlKvfe4LE/saAV82inND9usn1XRpmxXk7Lal3MTI+6CNg==", + "type": "package", + "path": "sqlitepclraw.provider.e_sqlite3/2.1.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net6.0-windows7.0/SQLitePCLRaw.provider.e_sqlite3.dll", + "lib/net6.0/SQLitePCLRaw.provider.e_sqlite3.dll", + "lib/netstandard2.0/SQLitePCLRaw.provider.e_sqlite3.dll", + "sqlitepclraw.provider.e_sqlite3.2.1.6.nupkg.sha512", + "sqlitepclraw.provider.e_sqlite3.nuspec" + ] + }, + "StackExchange.Redis/2.7.17": { + "sha512": "PduekHww3CrCBr1ebIPX4k4zdah9wjJ4AQZXfp+JfGJQfwf8s1SHSY7kthDi9MP0ULcYrNw4xnbRXFMbCryIig==", + "type": "package", + "path": "stackexchange.redis/2.7.17", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/StackExchange.Redis.dll", + "lib/net461/StackExchange.Redis.xml", + "lib/net472/StackExchange.Redis.dll", + "lib/net472/StackExchange.Redis.xml", + "lib/net6.0/StackExchange.Redis.dll", + "lib/net6.0/StackExchange.Redis.xml", + "lib/netcoreapp3.1/StackExchange.Redis.dll", + "lib/netcoreapp3.1/StackExchange.Redis.xml", + "lib/netstandard2.0/StackExchange.Redis.dll", + "lib/netstandard2.0/StackExchange.Redis.xml", + "stackexchange.redis.2.7.17.nupkg.sha512", + "stackexchange.redis.nuspec" + ] + }, + "Swashbuckle.AspNetCore/9.0.3": { + "sha512": "Akk4oFgy0ST8Q8pZTfPbrt045tWNyMMiKhlbYjG3qnjQZLz645IL5vhQm7NLicc2sAAQ+vftArIlsYWFevmb2g==", + "type": "package", + "path": "swashbuckle.aspnetcore/9.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "build/Swashbuckle.AspNetCore.props", + "buildMultiTargeting/Swashbuckle.AspNetCore.props", + "docs/package-readme.md", + "swashbuckle.aspnetcore.9.0.3.nupkg.sha512", + "swashbuckle.aspnetcore.nuspec" + ] + }, + "Swashbuckle.AspNetCore.Swagger/9.0.3": { + "sha512": "CGpkZDWj1g/yH/0wYkxUtBhiFo5TY/Esq2fS0vlBvLOs1UL2Jzef9tdtYmTdd3zBPtnMyXQcsXjMt9yCxz4VaA==", + "type": "package", + "path": "swashbuckle.aspnetcore.swagger/9.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.xml", + "lib/net9.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/net9.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/net9.0/Swashbuckle.AspNetCore.Swagger.xml", + "package-readme.md", + "swashbuckle.aspnetcore.swagger.9.0.3.nupkg.sha512", + "swashbuckle.aspnetcore.swagger.nuspec" + ] + }, + "Swashbuckle.AspNetCore.SwaggerGen/9.0.3": { + "sha512": "STqjhw1TZiEGmIRgE6jcJUOcgU/Fjquc6dP4GqbuwBzqWZAWr/9T7FZOGWYEwKnmkMplzlUNepGHwnUrfTP0fw==", + "type": "package", + "path": "swashbuckle.aspnetcore.swaggergen/9.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "lib/net9.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/net9.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/net9.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "package-readme.md", + "swashbuckle.aspnetcore.swaggergen.9.0.3.nupkg.sha512", + "swashbuckle.aspnetcore.swaggergen.nuspec" + ] + }, + "Swashbuckle.AspNetCore.SwaggerUI/9.0.3": { + "sha512": "DgJKJASz5OAygeKv2+N0FCZVhQylESqLXrtrRAqIT0vKpX7t5ImJ1FL6+6OqxKiamGkL0jchRXR8OgpMSsMh8w==", + "type": "package", + "path": "swashbuckle.aspnetcore.swaggerui/9.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "lib/net9.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/net9.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/net9.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "package-readme.md", + "swashbuckle.aspnetcore.swaggerui.9.0.3.nupkg.sha512", + "swashbuckle.aspnetcore.swaggerui.nuspec" + ] + }, + "System.CodeDom/4.4.0": { + "sha512": "2sCCb7doXEwtYAbqzbF/8UAeDRMNmPaQbU2q50Psg1J9KzumyVVCgKQY8s53WIPTufNT0DpSe9QRvVjOzfDWBA==", + "type": "package", + "path": "system.codedom/4.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/System.CodeDom.dll", + "lib/netstandard2.0/System.CodeDom.dll", + "ref/net461/System.CodeDom.dll", + "ref/net461/System.CodeDom.xml", + "ref/netstandard2.0/System.CodeDom.dll", + "ref/netstandard2.0/System.CodeDom.xml", + "system.codedom.4.4.0.nupkg.sha512", + "system.codedom.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Collections.Immutable/8.0.0": { + "sha512": "AurL6Y5BA1WotzlEvVaIDpqzpIPvYnnldxru8oXJU2yFxFUy3+pNXjXd1ymO+RA0rq0+590Q8gaz2l3Sr7fmqg==", + "type": "package", + "path": "system.collections.immutable/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Collections.Immutable.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Collections.Immutable.targets", + "lib/net462/System.Collections.Immutable.dll", + "lib/net462/System.Collections.Immutable.xml", + "lib/net6.0/System.Collections.Immutable.dll", + "lib/net6.0/System.Collections.Immutable.xml", + "lib/net7.0/System.Collections.Immutable.dll", + "lib/net7.0/System.Collections.Immutable.xml", + "lib/net8.0/System.Collections.Immutable.dll", + "lib/net8.0/System.Collections.Immutable.xml", + "lib/netstandard2.0/System.Collections.Immutable.dll", + "lib/netstandard2.0/System.Collections.Immutable.xml", + "system.collections.immutable.8.0.0.nupkg.sha512", + "system.collections.immutable.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition/6.0.0": { + "sha512": "d7wMuKQtfsxUa7S13tITC8n1cQzewuhD5iDjZtK2prwFfKVzdYtgrTHgjaV03Zq7feGQ5gkP85tJJntXwInsJA==", + "type": "package", + "path": "system.composition/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Composition.targets", + "buildTransitive/netcoreapp3.1/_._", + "system.composition.6.0.0.nupkg.sha512", + "system.composition.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition.AttributedModel/6.0.0": { + "sha512": "WK1nSDLByK/4VoC7fkNiFuTVEiperuCN/Hyn+VN30R+W2ijO1d0Z2Qm0ScEl9xkSn1G2MyapJi8xpf4R8WRa/w==", + "type": "package", + "path": "system.composition.attributedmodel/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Composition.AttributedModel.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Composition.AttributedModel.dll", + "lib/net461/System.Composition.AttributedModel.xml", + "lib/net6.0/System.Composition.AttributedModel.dll", + "lib/net6.0/System.Composition.AttributedModel.xml", + "lib/netstandard2.0/System.Composition.AttributedModel.dll", + "lib/netstandard2.0/System.Composition.AttributedModel.xml", + "system.composition.attributedmodel.6.0.0.nupkg.sha512", + "system.composition.attributedmodel.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition.Convention/6.0.0": { + "sha512": "XYi4lPRdu5bM4JVJ3/UIHAiG6V6lWWUlkhB9ab4IOq0FrRsp0F4wTyV4Dj+Ds+efoXJ3qbLqlvaUozDO7OLeXA==", + "type": "package", + "path": "system.composition.convention/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Composition.Convention.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Composition.Convention.dll", + "lib/net461/System.Composition.Convention.xml", + "lib/net6.0/System.Composition.Convention.dll", + "lib/net6.0/System.Composition.Convention.xml", + "lib/netstandard2.0/System.Composition.Convention.dll", + "lib/netstandard2.0/System.Composition.Convention.xml", + "system.composition.convention.6.0.0.nupkg.sha512", + "system.composition.convention.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition.Hosting/6.0.0": { + "sha512": "w/wXjj7kvxuHPLdzZ0PAUt++qJl03t7lENmb2Oev0n3zbxyNULbWBlnd5J5WUMMv15kg5o+/TCZFb6lSwfaUUQ==", + "type": "package", + "path": "system.composition.hosting/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Composition.Hosting.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Composition.Hosting.dll", + "lib/net461/System.Composition.Hosting.xml", + "lib/net6.0/System.Composition.Hosting.dll", + "lib/net6.0/System.Composition.Hosting.xml", + "lib/netstandard2.0/System.Composition.Hosting.dll", + "lib/netstandard2.0/System.Composition.Hosting.xml", + "system.composition.hosting.6.0.0.nupkg.sha512", + "system.composition.hosting.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition.Runtime/6.0.0": { + "sha512": "qkRH/YBaMPTnzxrS5RDk1juvqed4A6HOD/CwRcDGyPpYps1J27waBddiiq1y93jk2ZZ9wuA/kynM+NO0kb3PKg==", + "type": "package", + "path": "system.composition.runtime/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Composition.Runtime.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Composition.Runtime.dll", + "lib/net461/System.Composition.Runtime.xml", + "lib/net6.0/System.Composition.Runtime.dll", + "lib/net6.0/System.Composition.Runtime.xml", + "lib/netstandard2.0/System.Composition.Runtime.dll", + "lib/netstandard2.0/System.Composition.Runtime.xml", + "system.composition.runtime.6.0.0.nupkg.sha512", + "system.composition.runtime.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition.TypedParts/6.0.0": { + "sha512": "iUR1eHrL8Cwd82neQCJ00MpwNIBs4NZgXzrPqx8NJf/k4+mwBO0XCRmHYJT4OLSwDDqh5nBLJWkz5cROnrGhRA==", + "type": "package", + "path": "system.composition.typedparts/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Composition.TypedParts.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Composition.TypedParts.dll", + "lib/net461/System.Composition.TypedParts.xml", + "lib/net6.0/System.Composition.TypedParts.dll", + "lib/net6.0/System.Composition.TypedParts.xml", + "lib/netstandard2.0/System.Composition.TypedParts.dll", + "lib/netstandard2.0/System.Composition.TypedParts.xml", + "system.composition.typedparts.6.0.0.nupkg.sha512", + "system.composition.typedparts.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Diagnostics.EventLog/8.0.1": { + "sha512": "n1ZP7NM2Gkn/MgD8+eOT5MulMj6wfeQMNS2Pizvq5GHCZfjlFMXV2irQlQmJhwA2VABC57M0auudO89Iu2uRLg==", + "type": "package", + "path": "system.diagnostics.eventlog/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Diagnostics.EventLog.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Diagnostics.EventLog.targets", + "lib/net462/System.Diagnostics.EventLog.dll", + "lib/net462/System.Diagnostics.EventLog.xml", + "lib/net6.0/System.Diagnostics.EventLog.dll", + "lib/net6.0/System.Diagnostics.EventLog.xml", + "lib/net7.0/System.Diagnostics.EventLog.dll", + "lib/net7.0/System.Diagnostics.EventLog.xml", + "lib/net8.0/System.Diagnostics.EventLog.dll", + "lib/net8.0/System.Diagnostics.EventLog.xml", + "lib/netstandard2.0/System.Diagnostics.EventLog.dll", + "lib/netstandard2.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.xml", + "system.diagnostics.eventlog.8.0.1.nupkg.sha512", + "system.diagnostics.eventlog.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Interactive.Async/6.0.1": { + "sha512": "f8H1O4ZWDQo344y5NQU76G4SIjWMuKDVXL9OM1dg6K5YZnLkc8iCdQDybBvMcC6ufk61jzXGVAX6UCDu0qDSjA==", + "type": "package", + "path": "system.interactive.async/6.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Logo.png", + "lib/net48/System.Interactive.Async.dll", + "lib/net48/System.Interactive.Async.xml", + "lib/net6.0/System.Interactive.Async.dll", + "lib/net6.0/System.Interactive.Async.xml", + "lib/netstandard2.0/System.Interactive.Async.dll", + "lib/netstandard2.0/System.Interactive.Async.xml", + "lib/netstandard2.1/System.Interactive.Async.dll", + "lib/netstandard2.1/System.Interactive.Async.xml", + "system.interactive.async.6.0.1.nupkg.sha512", + "system.interactive.async.nuspec" + ] + }, + "System.IO.Pipelines/8.0.0": { + "sha512": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==", + "type": "package", + "path": "system.io.pipelines/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.IO.Pipelines.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.IO.Pipelines.targets", + "lib/net462/System.IO.Pipelines.dll", + "lib/net462/System.IO.Pipelines.xml", + "lib/net6.0/System.IO.Pipelines.dll", + "lib/net6.0/System.IO.Pipelines.xml", + "lib/net7.0/System.IO.Pipelines.dll", + "lib/net7.0/System.IO.Pipelines.xml", + "lib/net8.0/System.IO.Pipelines.dll", + "lib/net8.0/System.IO.Pipelines.xml", + "lib/netstandard2.0/System.IO.Pipelines.dll", + "lib/netstandard2.0/System.IO.Pipelines.xml", + "system.io.pipelines.8.0.0.nupkg.sha512", + "system.io.pipelines.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Linq.Async/6.0.1": { + "sha512": "0YhHcaroWpQ9UCot3Pizah7ryAzQhNvobLMSxeDIGmnXfkQn8u5owvpOH0K6EVB+z9L7u6Cc4W17Br/+jyttEQ==", + "type": "package", + "path": "system.linq.async/6.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Logo.png", + "lib/net48/System.Linq.Async.dll", + "lib/net48/System.Linq.Async.xml", + "lib/net6.0/System.Linq.Async.dll", + "lib/net6.0/System.Linq.Async.xml", + "lib/netstandard2.0/System.Linq.Async.dll", + "lib/netstandard2.0/System.Linq.Async.xml", + "lib/netstandard2.1/System.Linq.Async.dll", + "lib/netstandard2.1/System.Linq.Async.xml", + "ref/net48/System.Linq.Async.dll", + "ref/net48/System.Linq.Async.xml", + "ref/net6.0/System.Linq.Async.dll", + "ref/net6.0/System.Linq.Async.xml", + "ref/netstandard2.0/System.Linq.Async.dll", + "ref/netstandard2.0/System.Linq.Async.xml", + "ref/netstandard2.1/System.Linq.Async.dll", + "ref/netstandard2.1/System.Linq.Async.xml", + "system.linq.async.6.0.1.nupkg.sha512", + "system.linq.async.nuspec" + ] + }, + "System.Memory/4.5.3": { + "sha512": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==", + "type": "package", + "path": "system.memory/4.5.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/netcoreapp2.1/_._", + "lib/netstandard1.1/System.Memory.dll", + "lib/netstandard1.1/System.Memory.xml", + "lib/netstandard2.0/System.Memory.dll", + "lib/netstandard2.0/System.Memory.xml", + "ref/netcoreapp2.1/_._", + "system.memory.4.5.3.nupkg.sha512", + "system.memory.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Reflection.Metadata/8.0.0": { + "sha512": "ptvgrFh7PvWI8bcVqG5rsA/weWM09EnthFHR5SCnS6IN+P4mj6rE1lBDC4U8HL9/57htKAqy4KQ3bBj84cfYyQ==", + "type": "package", + "path": "system.reflection.metadata/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Reflection.Metadata.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Reflection.Metadata.targets", + "lib/net462/System.Reflection.Metadata.dll", + "lib/net462/System.Reflection.Metadata.xml", + "lib/net6.0/System.Reflection.Metadata.dll", + "lib/net6.0/System.Reflection.Metadata.xml", + "lib/net7.0/System.Reflection.Metadata.dll", + "lib/net7.0/System.Reflection.Metadata.xml", + "lib/net8.0/System.Reflection.Metadata.dll", + "lib/net8.0/System.Reflection.Metadata.xml", + "lib/netstandard2.0/System.Reflection.Metadata.dll", + "lib/netstandard2.0/System.Reflection.Metadata.xml", + "system.reflection.metadata.8.0.0.nupkg.sha512", + "system.reflection.metadata.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "sha512": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==", + "type": "package", + "path": "system.runtime.compilerservices.unsafe/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net461/System.Runtime.CompilerServices.Unsafe.xml", + "lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net6.0/System.Runtime.CompilerServices.Unsafe.xml", + "lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.xml", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", + "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512", + "system.runtime.compilerservices.unsafe.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.Encoding.CodePages/6.0.0": { + "sha512": "ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==", + "type": "package", + "path": "system.text.encoding.codepages/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Text.Encoding.CodePages.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.Text.Encoding.CodePages.dll", + "lib/net461/System.Text.Encoding.CodePages.xml", + "lib/net6.0/System.Text.Encoding.CodePages.dll", + "lib/net6.0/System.Text.Encoding.CodePages.xml", + "lib/netcoreapp3.1/System.Text.Encoding.CodePages.dll", + "lib/netcoreapp3.1/System.Text.Encoding.CodePages.xml", + "lib/netstandard2.0/System.Text.Encoding.CodePages.dll", + "lib/netstandard2.0/System.Text.Encoding.CodePages.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "runtimes/win/lib/net461/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/net461/System.Text.Encoding.CodePages.xml", + "runtimes/win/lib/net6.0/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/net6.0/System.Text.Encoding.CodePages.xml", + "runtimes/win/lib/netcoreapp3.1/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/netcoreapp3.1/System.Text.Encoding.CodePages.xml", + "runtimes/win/lib/netstandard2.0/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/netstandard2.0/System.Text.Encoding.CodePages.xml", + "system.text.encoding.codepages.6.0.0.nupkg.sha512", + "system.text.encoding.codepages.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.Json/8.0.5": { + "sha512": "0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg==", + "type": "package", + "path": "system.text.json/8.0.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "buildTransitive/net461/System.Text.Json.targets", + "buildTransitive/net462/System.Text.Json.targets", + "buildTransitive/net6.0/System.Text.Json.targets", + "buildTransitive/netcoreapp2.0/System.Text.Json.targets", + "buildTransitive/netstandard2.0/System.Text.Json.targets", + "lib/net462/System.Text.Json.dll", + "lib/net462/System.Text.Json.xml", + "lib/net6.0/System.Text.Json.dll", + "lib/net6.0/System.Text.Json.xml", + "lib/net7.0/System.Text.Json.dll", + "lib/net7.0/System.Text.Json.xml", + "lib/net8.0/System.Text.Json.dll", + "lib/net8.0/System.Text.Json.xml", + "lib/netstandard2.0/System.Text.Json.dll", + "lib/netstandard2.0/System.Text.Json.xml", + "system.text.json.8.0.5.nupkg.sha512", + "system.text.json.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Threading.Channels/6.0.0": { + "sha512": "TY8/9+tI0mNaUMgntOxxaq2ndTkdXqLSxvPmas7XEqOlv9lQtB7wLjYGd756lOaO7Dvb5r/WXhluM+0Xe87v5Q==", + "type": "package", + "path": "system.threading.channels/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Threading.Channels.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Threading.Channels.dll", + "lib/net461/System.Threading.Channels.xml", + "lib/net6.0/System.Threading.Channels.dll", + "lib/net6.0/System.Threading.Channels.xml", + "lib/netcoreapp3.1/System.Threading.Channels.dll", + "lib/netcoreapp3.1/System.Threading.Channels.xml", + "lib/netstandard2.0/System.Threading.Channels.dll", + "lib/netstandard2.0/System.Threading.Channels.xml", + "lib/netstandard2.1/System.Threading.Channels.dll", + "lib/netstandard2.1/System.Threading.Channels.xml", + "system.threading.channels.6.0.0.nupkg.sha512", + "system.threading.channels.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.ValueTuple/4.5.0": { + "sha512": "okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==", + "type": "package", + "path": "system.valuetuple/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.ValueTuple.dll", + "lib/net461/System.ValueTuple.xml", + "lib/net47/System.ValueTuple.dll", + "lib/net47/System.ValueTuple.xml", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.0/System.ValueTuple.dll", + "lib/netstandard1.0/System.ValueTuple.xml", + "lib/netstandard2.0/_._", + "lib/portable-net40+sl4+win8+wp8/System.ValueTuple.dll", + "lib/portable-net40+sl4+win8+wp8/System.ValueTuple.xml", + "lib/uap10.0.16299/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net461/System.ValueTuple.dll", + "ref/net47/System.ValueTuple.dll", + "ref/netcoreapp2.0/_._", + "ref/netstandard2.0/_._", + "ref/portable-net40+sl4+win8+wp8/System.ValueTuple.dll", + "ref/uap10.0.16299/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.valuetuple.4.5.0.nupkg.sha512", + "system.valuetuple.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Ulid/1.2.6": { + "sha512": "TDfJ/q4nJJ7LTxHErWYXRFs7laAUJhnT7Do+fpxxNg+uQOC1GKWLFuyJMKyMyIxQhFjWNC5XcFbr7R6HP9PFgw==", + "type": "package", + "path": "ulid/1.2.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/net5.0/Ulid.dll", + "lib/net5.0/Ulid.xml", + "lib/netcoreapp2.1/Ulid.dll", + "lib/netcoreapp2.1/Ulid.xml", + "lib/netcoreapp3.1/Ulid.dll", + "lib/netcoreapp3.1/Ulid.xml", + "lib/netstandard2.0/Ulid.dll", + "lib/netstandard2.0/Ulid.xml", + "ulid.1.2.6.nupkg.sha512", + "ulid.nuspec" + ] + }, + "xunit/2.9.3": { + "sha512": "TlXQBinK35LpOPKHAqbLY4xlEen9TBafjs0V5KnA4wZsoQLQJiirCR4CbIXvOH8NzkW4YeJKP5P/Bnrodm0h9Q==", + "type": "package", + "path": "xunit/2.9.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "xunit.2.9.3.nupkg.sha512", + "xunit.nuspec" + ] + }, + "xunit.abstractions/2.0.3": { + "sha512": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==", + "type": "package", + "path": "xunit.abstractions/2.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net35/xunit.abstractions.dll", + "lib/net35/xunit.abstractions.xml", + "lib/netstandard1.0/xunit.abstractions.dll", + "lib/netstandard1.0/xunit.abstractions.xml", + "lib/netstandard2.0/xunit.abstractions.dll", + "lib/netstandard2.0/xunit.abstractions.xml", + "xunit.abstractions.2.0.3.nupkg.sha512", + "xunit.abstractions.nuspec" + ] + }, + "xunit.analyzers/1.18.0": { + "sha512": "OtFMHN8yqIcYP9wcVIgJrq01AfTxijjAqVDy/WeQVSyrDC1RzBWeQPztL49DN2syXRah8TYnfvk035s7L95EZQ==", + "type": "package", + "path": "xunit.analyzers/1.18.0", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "analyzers/dotnet/cs/xunit.analyzers.dll", + "analyzers/dotnet/cs/xunit.analyzers.fixes.dll", + "tools/install.ps1", + "tools/uninstall.ps1", + "xunit.analyzers.1.18.0.nupkg.sha512", + "xunit.analyzers.nuspec" + ] + }, + "xunit.assert/2.9.3": { + "sha512": "/Kq28fCE7MjOV42YLVRAJzRF0WmEqsmflm0cfpMjGtzQ2lR5mYVj1/i0Y8uDAOLczkL3/jArrwehfMD0YogMAA==", + "type": "package", + "path": "xunit.assert/2.9.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "lib/net6.0/xunit.assert.dll", + "lib/net6.0/xunit.assert.xml", + "lib/netstandard1.1/xunit.assert.dll", + "lib/netstandard1.1/xunit.assert.xml", + "xunit.assert.2.9.3.nupkg.sha512", + "xunit.assert.nuspec" + ] + }, + "xunit.core/2.9.3": { + "sha512": "BiAEvqGvyme19wE0wTKdADH+NloYqikiU0mcnmiNyXaF9HyHmE6sr/3DC5vnBkgsWaE6yPyWszKSPSApWdRVeQ==", + "type": "package", + "path": "xunit.core/2.9.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "build/xunit.core.props", + "build/xunit.core.targets", + "buildMultiTargeting/xunit.core.props", + "buildMultiTargeting/xunit.core.targets", + "xunit.core.2.9.3.nupkg.sha512", + "xunit.core.nuspec" + ] + }, + "xunit.extensibility.core/2.9.3": { + "sha512": "kf3si0YTn2a8J8eZNb+zFpwfoyvIrQ7ivNk5ZYA5yuYk1bEtMe4DxJ2CF/qsRgmEnDr7MnW1mxylBaHTZ4qErA==", + "type": "package", + "path": "xunit.extensibility.core/2.9.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "lib/net452/xunit.core.dll", + "lib/net452/xunit.core.dll.tdnet", + "lib/net452/xunit.core.xml", + "lib/net452/xunit.runner.tdnet.dll", + "lib/net452/xunit.runner.utility.net452.dll", + "lib/netstandard1.1/xunit.core.dll", + "lib/netstandard1.1/xunit.core.xml", + "xunit.extensibility.core.2.9.3.nupkg.sha512", + "xunit.extensibility.core.nuspec" + ] + }, + "xunit.extensibility.execution/2.9.3": { + "sha512": "yMb6vMESlSrE3Wfj7V6cjQ3S4TXdXpRqYeNEI3zsX31uTsGMJjEw6oD5F5u1cHnMptjhEECnmZSsPxB6ChZHDQ==", + "type": "package", + "path": "xunit.extensibility.execution/2.9.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "lib/net452/xunit.execution.desktop.dll", + "lib/net452/xunit.execution.desktop.xml", + "lib/netstandard1.1/xunit.execution.dotnet.dll", + "lib/netstandard1.1/xunit.execution.dotnet.xml", + "xunit.extensibility.execution.2.9.3.nupkg.sha512", + "xunit.extensibility.execution.nuspec" + ] + }, + "xunit.runner.visualstudio/3.1.1": { + "sha512": "gNu2zhnuwjq5vQlU4S7yK/lfaKZDLmtcu+vTjnhfTlMAUYn+Hmgu8IIX0UCwWepYkk+Szx03DHx1bDnc9Fd+9w==", + "type": "package", + "path": "xunit.runner.visualstudio/3.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "build/net472/xunit.abstractions.dll", + "build/net472/xunit.runner.visualstudio.props", + "build/net472/xunit.runner.visualstudio.testadapter.dll", + "build/net8.0/xunit.abstractions.dll", + "build/net8.0/xunit.runner.visualstudio.props", + "build/net8.0/xunit.runner.visualstudio.testadapter.dll", + "lib/net472/_._", + "lib/net8.0/_._", + "xunit.runner.visualstudio.3.1.1.nupkg.sha512", + "xunit.runner.visualstudio.nuspec" + ] + }, + "YamlDotNet/16.3.0": { + "sha512": "SgMOdxbz8X65z8hraIs6hOEdnkH6hESTAIUa7viEngHOYaH+6q5XJmwr1+yb9vJpNQ19hCQY69xbFsLtXpobQA==", + "type": "package", + "path": "yamldotnet/16.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "images/yamldotnet.png", + "lib/net47/YamlDotNet.dll", + "lib/net47/YamlDotNet.xml", + "lib/net6.0/YamlDotNet.dll", + "lib/net6.0/YamlDotNet.xml", + "lib/net8.0/YamlDotNet.dll", + "lib/net8.0/YamlDotNet.xml", + "lib/netstandard2.0/YamlDotNet.dll", + "lib/netstandard2.0/YamlDotNet.xml", + "lib/netstandard2.1/YamlDotNet.dll", + "lib/netstandard2.1/YamlDotNet.xml", + "yamldotnet.16.3.0.nupkg.sha512", + "yamldotnet.nuspec" + ] + }, + "LBPUnion.ProjectLighthouse/1.0.0": { + "type": "project", + "path": "../ProjectLighthouse/ProjectLighthouse.csproj", + "msbuildProject": "../ProjectLighthouse/ProjectLighthouse.csproj" + }, + "LBPUnion.ProjectLighthouse.Servers.Website/1.0.0": { + "type": "project", + "path": "../ProjectLighthouse.Servers.Website/ProjectLighthouse.Servers.Website.csproj", + "msbuildProject": "../ProjectLighthouse.Servers.Website/ProjectLighthouse.Servers.Website.csproj" + }, + "LBPUnion.ProjectLighthouse.Tests/1.0.0": { + "type": "project", + "path": "../ProjectLighthouse.Tests/ProjectLighthouse.Tests.csproj", + "msbuildProject": "../ProjectLighthouse.Tests/ProjectLighthouse.Tests.csproj" + }, + "ProjectLighthouse.Localization/1.0.0": { + "type": "project", + "path": "../ProjectLighthouse.Localization/ProjectLighthouse.Localization.csproj", + "msbuildProject": "../ProjectLighthouse.Localization/ProjectLighthouse.Localization.csproj" + } + }, + "projectFileDependencyGroups": { + "net8.0": [ + "JetBrains.Annotations >= 2024.3.0", + "LBPUnion.ProjectLighthouse >= 1.0.0", + "LBPUnion.ProjectLighthouse.Servers.Website >= 1.0.0", + "LBPUnion.ProjectLighthouse.Tests >= 1.0.0", + "Microsoft.AspNetCore.Mvc.Testing >= 8.0.18", + "Microsoft.EntityFrameworkCore.Design >= 8.0.18", + "Microsoft.NET.Test.Sdk >= 17.14.1", + "ProjectLighthouse.Localization >= 1.0.0", + "Selenium.WebDriver >= 4.34.0", + "Selenium.WebDriver.ChromeDriver >= 138.0.7204.9400", + "coverlet.collector >= 6.0.4", + "xunit >= 2.9.3", + "xunit.runner.visualstudio >= 3.1.1" + ] + }, + "packageFolders": { + "C:\\Users\\Faisa\\.nuget\\packages\\": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests.WebsiteTests\\ProjectLighthouse.Tests.WebsiteTests.csproj", + "projectName": "ProjectLighthouse.Tests.WebsiteTests", + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests.WebsiteTests\\ProjectLighthouse.Tests.WebsiteTests.csproj", + "packagesPath": "C:\\Users\\Faisa\\.nuget\\packages\\", + "outputPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests.WebsiteTests\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Faisa\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Localization\\ProjectLighthouse.Localization.csproj": { + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Localization\\ProjectLighthouse.Localization.csproj" + }, + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Servers.Website\\ProjectLighthouse.Servers.Website.csproj": { + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Servers.Website\\ProjectLighthouse.Servers.Website.csproj" + }, + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests\\ProjectLighthouse.Tests.csproj": { + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests\\ProjectLighthouse.Tests.csproj" + }, + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\ProjectLighthouse.csproj": { + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\ProjectLighthouse.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.300" + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "JetBrains.Annotations": { + "target": "Package", + "version": "[2024.3.0, )" + }, + "Microsoft.AspNetCore.Mvc.Testing": { + "target": "Package", + "version": "[8.0.18, )" + }, + "Microsoft.EntityFrameworkCore.Design": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[8.0.18, )" + }, + "Microsoft.NET.Test.Sdk": { + "target": "Package", + "version": "[17.14.1, )" + }, + "Selenium.WebDriver": { + "target": "Package", + "version": "[4.34.0, )" + }, + "Selenium.WebDriver.ChromeDriver": { + "target": "Package", + "version": "[138.0.7204.9400, )" + }, + "coverlet.collector": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[6.0.4, )" + }, + "xunit": { + "target": "Package", + "version": "[2.9.3, )" + }, + "xunit.runner.visualstudio": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[3.1.1, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.NETCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.WindowsDesktop.App.Ref", + "version": "[8.0.19, 8.0.19]" + } + ], + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/ProjectLighthouse.Tests.WebsiteTests/obj/project.nuget.cache b/ProjectLighthouse.Tests.WebsiteTests/obj/project.nuget.cache new file mode 100644 index 00000000..63e68007 --- /dev/null +++ b/ProjectLighthouse.Tests.WebsiteTests/obj/project.nuget.cache @@ -0,0 +1,127 @@ +{ + "version": 2, + "dgSpecHash": "D2/2MF0NkRs=", + "success": true, + "projectFilePath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests.WebsiteTests\\ProjectLighthouse.Tests.WebsiteTests.csproj", + "expectedPackageFiles": [ + "C:\\Users\\Faisa\\.nuget\\packages\\bcrypt.net-next\\4.0.3\\bcrypt.net-next.4.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\bouncycastle.cryptography\\2.6.1\\bouncycastle.cryptography.2.6.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\castle.core\\5.1.1\\castle.core.5.1.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\coverlet.collector\\6.0.4\\coverlet.collector.6.0.4.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\discord.net.core\\3.17.4\\discord.net.core.3.17.4.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\discord.net.rest\\3.17.4\\discord.net.rest.3.17.4.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\discord.net.webhook\\3.17.4\\discord.net.webhook.3.17.4.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\distributedlock.core\\1.0.6\\distributedlock.core.1.0.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\distributedlock.mysql\\1.0.2\\distributedlock.mysql.1.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\humanizer.core\\2.14.1\\humanizer.core.2.14.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\jetbrains.annotations\\2024.3.0\\jetbrains.annotations.2024.3.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.aspnetcore.diagnostics.entityframeworkcore\\8.0.18\\microsoft.aspnetcore.diagnostics.entityframeworkcore.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.aspnetcore.mvc.testing\\8.0.18\\microsoft.aspnetcore.mvc.testing.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.aspnetcore.testhost\\8.0.18\\microsoft.aspnetcore.testhost.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\8.0.0\\microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.codeanalysis.analyzers\\3.3.3\\microsoft.codeanalysis.analyzers.3.3.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.codeanalysis.common\\4.5.0\\microsoft.codeanalysis.common.4.5.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.codeanalysis.csharp\\4.5.0\\microsoft.codeanalysis.csharp.4.5.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.codeanalysis.csharp.workspaces\\4.5.0\\microsoft.codeanalysis.csharp.workspaces.4.5.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.codeanalysis.workspaces.common\\4.5.0\\microsoft.codeanalysis.workspaces.common.4.5.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.codecoverage\\17.14.1\\microsoft.codecoverage.17.14.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.data.sqlite.core\\8.0.6\\microsoft.data.sqlite.core.8.0.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore\\8.0.18\\microsoft.entityframeworkcore.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\8.0.18\\microsoft.entityframeworkcore.abstractions.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\8.0.18\\microsoft.entityframeworkcore.analyzers.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore.design\\8.0.18\\microsoft.entityframeworkcore.design.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\8.0.18\\microsoft.entityframeworkcore.relational.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore.sqlite\\8.0.6\\microsoft.entityframeworkcore.sqlite.8.0.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore.sqlite.core\\8.0.6\\microsoft.entityframeworkcore.sqlite.core.8.0.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.apidescription.server\\8.0.0\\microsoft.extensions.apidescription.server.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\8.0.0\\microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.caching.memory\\8.0.1\\microsoft.extensions.caching.memory.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration\\8.0.0\\microsoft.extensions.configuration.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\8.0.0\\microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.binder\\8.0.2\\microsoft.extensions.configuration.binder.8.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.commandline\\8.0.0\\microsoft.extensions.configuration.commandline.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.environmentvariables\\8.0.0\\microsoft.extensions.configuration.environmentvariables.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.fileextensions\\8.0.1\\microsoft.extensions.configuration.fileextensions.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.json\\8.0.1\\microsoft.extensions.configuration.json.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.usersecrets\\8.0.1\\microsoft.extensions.configuration.usersecrets.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\8.0.1\\microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.2\\microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.dependencymodel\\8.0.2\\microsoft.extensions.dependencymodel.8.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.diagnostics\\8.0.1\\microsoft.extensions.diagnostics.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.diagnostics.abstractions\\8.0.1\\microsoft.extensions.diagnostics.abstractions.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.fileproviders.abstractions\\8.0.0\\microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.fileproviders.physical\\8.0.0\\microsoft.extensions.fileproviders.physical.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.filesystemglobbing\\8.0.0\\microsoft.extensions.filesystemglobbing.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.hosting\\8.0.1\\microsoft.extensions.hosting.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.hosting.abstractions\\8.0.1\\microsoft.extensions.hosting.abstractions.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging\\8.0.1\\microsoft.extensions.logging.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.2\\microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging.configuration\\8.0.1\\microsoft.extensions.logging.configuration.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging.console\\8.0.1\\microsoft.extensions.logging.console.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging.debug\\8.0.1\\microsoft.extensions.logging.debug.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging.eventlog\\8.0.1\\microsoft.extensions.logging.eventlog.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging.eventsource\\8.0.1\\microsoft.extensions.logging.eventsource.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.options\\8.0.2\\microsoft.extensions.options.8.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.options.configurationextensions\\8.0.0\\microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.primitives\\8.0.0\\microsoft.extensions.primitives.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.net.test.sdk\\17.14.1\\microsoft.net.test.sdk.17.14.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.openapi\\1.6.23\\microsoft.openapi.1.6.23.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.testplatform.objectmodel\\17.14.1\\microsoft.testplatform.objectmodel.17.14.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.testplatform.testhost\\17.14.1\\microsoft.testplatform.testhost.17.14.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\mono.texttemplating\\2.2.1\\mono.texttemplating.2.2.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\moq\\4.20.72\\moq.4.20.72.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\mysqlconnector\\2.3.5\\mysqlconnector.2.3.5.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\newtonsoft.json\\13.0.3\\newtonsoft.json.13.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\pfim\\0.11.3\\pfim.0.11.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\pipelines.sockets.unofficial\\2.2.8\\pipelines.sockets.unofficial.2.2.8.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\pomelo.entityframeworkcore.mysql\\8.0.2\\pomelo.entityframeworkcore.mysql.8.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\qrcoder\\1.6.0\\qrcoder.1.6.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\redis.om\\1.0.1\\redis.om.1.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\selenium.webdriver\\4.34.0\\selenium.webdriver.4.34.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\selenium.webdriver.chromedriver\\138.0.7204.9400\\selenium.webdriver.chromedriver.138.0.7204.9400.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\sharpziplib\\1.4.2\\sharpziplib.1.4.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\sixlabors.imagesharp\\3.1.10\\sixlabors.imagesharp.3.1.10.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\sqlitepclraw.bundle_e_sqlite3\\2.1.6\\sqlitepclraw.bundle_e_sqlite3.2.1.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\sqlitepclraw.core\\2.1.6\\sqlitepclraw.core.2.1.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\sqlitepclraw.lib.e_sqlite3\\2.1.6\\sqlitepclraw.lib.e_sqlite3.2.1.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\sqlitepclraw.provider.e_sqlite3\\2.1.6\\sqlitepclraw.provider.e_sqlite3.2.1.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\stackexchange.redis\\2.7.17\\stackexchange.redis.2.7.17.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\swashbuckle.aspnetcore\\9.0.3\\swashbuckle.aspnetcore.9.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\swashbuckle.aspnetcore.swagger\\9.0.3\\swashbuckle.aspnetcore.swagger.9.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\swashbuckle.aspnetcore.swaggergen\\9.0.3\\swashbuckle.aspnetcore.swaggergen.9.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\swashbuckle.aspnetcore.swaggerui\\9.0.3\\swashbuckle.aspnetcore.swaggerui.9.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.codedom\\4.4.0\\system.codedom.4.4.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.collections.immutable\\8.0.0\\system.collections.immutable.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.composition\\6.0.0\\system.composition.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.composition.attributedmodel\\6.0.0\\system.composition.attributedmodel.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.composition.convention\\6.0.0\\system.composition.convention.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.composition.hosting\\6.0.0\\system.composition.hosting.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.composition.runtime\\6.0.0\\system.composition.runtime.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.composition.typedparts\\6.0.0\\system.composition.typedparts.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.diagnostics.eventlog\\8.0.1\\system.diagnostics.eventlog.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.interactive.async\\6.0.1\\system.interactive.async.6.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.io.pipelines\\8.0.0\\system.io.pipelines.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.linq.async\\6.0.1\\system.linq.async.6.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.memory\\4.5.3\\system.memory.4.5.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.reflection.metadata\\8.0.0\\system.reflection.metadata.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.text.encoding.codepages\\6.0.0\\system.text.encoding.codepages.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.text.json\\8.0.5\\system.text.json.8.0.5.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.threading.channels\\6.0.0\\system.threading.channels.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.valuetuple\\4.5.0\\system.valuetuple.4.5.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\ulid\\1.2.6\\ulid.1.2.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit\\2.9.3\\xunit.2.9.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.abstractions\\2.0.3\\xunit.abstractions.2.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.analyzers\\1.18.0\\xunit.analyzers.1.18.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.assert\\2.9.3\\xunit.assert.2.9.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.core\\2.9.3\\xunit.core.2.9.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.extensibility.core\\2.9.3\\xunit.extensibility.core.2.9.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.extensibility.execution\\2.9.3\\xunit.extensibility.execution.2.9.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.runner.visualstudio\\3.1.1\\xunit.runner.visualstudio.3.1.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\yamldotnet\\16.3.0\\yamldotnet.16.3.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.netcore.app.ref\\8.0.19\\microsoft.netcore.app.ref.8.0.19.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.windowsdesktop.app.ref\\8.0.19\\microsoft.windowsdesktop.app.ref.8.0.19.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.aspnetcore.app.ref\\8.0.19\\microsoft.aspnetcore.app.ref.8.0.19.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/ProjectLighthouse.Tests/ExampleFiles/TestGarbage.bin b/ProjectLighthouse.Tests/ExampleFiles/TestGarbage.bin index 5ec6cb6d..21861d75 100644 --- a/ProjectLighthouse.Tests/ExampleFiles/TestGarbage.bin +++ b/ProjectLighthouse.Tests/ExampleFiles/TestGarbage.bin @@ -1,27 +1,27 @@ -��N����g��▒;ݎ�soVy��ʖQ�▒�9؋�L`� -m�]�� ��!�p�x/JY@��{�����Yj�G��4���O�c{��9���|n=�Ԫ����З�O��œRF���{����SQ��Fх �����0>� ��hλ37=��,�f��� -���C����^�ݳrY��I�����/�^�ue�ױ~WϮ���6ҝ)SgQ�ǰ�VF~]�~����GY5��o04��s[��FgƄ|��;�p�.�O�[��>d�ɉ�C��M��9�T꨿:��)�N��;z'��7�>,����cc�h0���+�c�� - B��▒��lTFH /�*�m��F�W�̚��Q��q��ϰ�R{���߂O{��_D��mM�!����?�i-1(��fK��▒&���&l���nI��/▒�6��� - �H�6��m�Ԯ��,�F�zuT���D�%�d�C��Q)N��hS�}mZ�~�>x���@� "A�O�n�� ¸��jbh��[����p�V��^+����r�F�� �]���m{����ҋ�v��4^QA+����X^O�D����`���\Y3�q#�j��#E�n��[�禽��BÙ -�E";�/�`�jS/_�j9Ƒ� - ���?�����V���\������9M��i��;k(���Z# - k��w�M�O - �r - ?�s~��Ԑ�]�!�^�'�Kw������q7��)���X�j�o&�|{0��*2����� -�b�&Jh�▒�y��7���<�� ��ꝱϷ�g -+~��&�1S�\x�Wf��J�Ԓݣpd�2=�W�Ub����i�? - ��5��ں}��j�e#=գ��Q���5�rX6���*݋���� - �у�j:1f�MG�����ϮZ��3��7��-�q������oaE+��▒ m� ����Q�/7��`�x['�7� --��nFV桖��1�smP��v�;�B��>X��u- -M�p%�3��k )�y� ���œ &Z�$��(�(�u�z�~����'B%�:��<鍷��� - ��T -��=�v���r�U������▒)���m���d,��q(f.���ίv�Rߏ ��:�F ��&V��wZ�E&����D���� -i ��9���%����w��eM▒��/qH~q@�<��YH���BLKx�V���v� - ��t�U�1�I����������|K�HL8�G�O�����6̆~� �s)��۹�zM���0cG9�(����$v�ʑd�Uy���_Sn�>��G�����y�\I*(��� - �ĀI���x�cє8�%�!c�ٮb▒l����.M�u�<�$GPx.-� - �޷���!eF9 -H`)[���▒������g���n�6j �͓�a�eߞ'���� >�`28��0��Q5d/Ǥ��q�8��J�赱r�iD(��*��Z� -����>K4��G�]�q\�}m��3����)�s&��[����1T!��t�=ӱl�;$����~��vH` - Z,޳K�_�F�?K)���i��Ի<*)�e�=��`�/i͐+U�d���i�����Wҭ���h�[̃䝍�}��:���Z���υq�ɂnRcrx깼36��b��9�-"{�a^j;�������ӵ��f�[��̓o����D`)����F7��ݩ/��>����h��r��M1��(Tc0E4 - Ol�O��ƷB�c桩��ًM[�{���>�A^C +��N����g��▒;ݎ�soVy��ʖQ�▒�9؋�L`� +m�]�� ��!�p�x/JY@��{�����Yj�G��4���O�c{��9���|n=�Ԫ����З�O��œRF���{����SQ��Fх �����0>� ��hλ37=��,�f��� +���C����^�ݳrY��I�����/�^�ue�ױ~WϮ���6ҝ)SgQ�ǰ�VF~]�~����GY5��o04��s[��FgƄ|��;�p�.�O�[��>d�ɉ�C��M��9�T꨿:��)�N��;z'��7�>,����cc�h0���+�c�� + B��▒��lTFH /�*�m��F�W�̚��Q��q��ϰ�R{���߂O{��_D��mM�!����?�i-1(��fK��▒&���&l���nI��/▒�6��� + �H�6��m�Ԯ��,�F�zuT���D�%�d�C��Q)N��hS�}mZ�~�>x���@� "A�O�n�� ¸��jbh��[����p�V��^+����r�F�� �]���m{����ҋ�v��4^QA+����X^O�D����`���\Y3�q#�j��#E�n��[�禽��BÙ +�E";�/�`�jS/_�j9Ƒ� + ���?�����V���\������9M��i��;k(���Z# + k��w�M�O + �r + ?�s~��Ԑ�]�!�^�'�Kw������q7��)���X�j�o&�|{0��*2����� +�b�&Jh�▒�y��7���<�� ��ꝱϷ�g ++~��&�1S�\x�Wf��J�Ԓݣpd�2=�W�Ub����i�? + ��5��ں}��j�e#=գ��Q���5�rX6���*݋���� + �у�j:1f�MG�����ϮZ��3��7��-�q������oaE+��▒ m� ����Q�/7��`�x['�7� +-��nFV桖��1�smP��v�;�B��>X��u- +M�p%�3��k )�y� ���œ &Z�$��(�(�u�z�~����'B%�:��<鍷��� + ��T +��=�v���r�U������▒)���m���d,��q(f.���ίv�Rߏ ��:�F ��&V��wZ�E&����D���� +i ��9���%����w��eM▒��/qH~q@�<��YH���BLKx�V���v� + ��t�U�1�I����������|K�HL8�G�O�����6̆~� �s)��۹�zM���0cG9�(����$v�ʑd�Uy���_Sn�>��G�����y�\I*(��� + �ĀI���x�cє8�%�!c�ٮb▒l����.M�u�<�$GPx.-� + �޷���!eF9 +H`)[���▒������g���n�6j �͓�a�eߞ'���� >�`28��0��Q5d/Ǥ��q�8��J�赱r�iD(��*��Z� +����>K4��G�]�q\�}m��3����)�s&��[����1T!��t�=ӱl�;$����~��vH` + Z,޳K�_�F�?K)���i��Ի<*)�e�=��`�/i͐+U�d���i�����Wҭ���h�[̃䝍�}��:���Z���υq�ɂnRcrx깼36��b��9�-"{�a^j;�������ӵ��f�[��̓o����D`)����F7��ݩ/��>����h��r��M1��(Tc0E4 + Ol�O��ƷB�c桩��ًM[�{���>�A^C diff --git a/ProjectLighthouse.Tests/ExampleFiles/TestScript.ff b/ProjectLighthouse.Tests/ExampleFiles/TestScript.ff index dfc876f9..a1852222 100644 --- a/ProjectLighthouse.Tests/ExampleFiles/TestScript.ff +++ b/ProjectLighthouse.Tests/ExampleFiles/TestScript.ff @@ -1,3 +1,3 @@ -FSHb - +FSHb + this is not my stuff to upload so its just gonna be a file like this for now :/ \ No newline at end of file diff --git a/ProjectLighthouse.Tests/Helpers/IntegrationHelper.cs b/ProjectLighthouse.Tests/Helpers/IntegrationHelper.cs index 5562036a..bf19afa8 100644 --- a/ProjectLighthouse.Tests/Helpers/IntegrationHelper.cs +++ b/ProjectLighthouse.Tests/Helpers/IntegrationHelper.cs @@ -1,43 +1,43 @@ -using System; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Configuration; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Helpers; - -namespace LBPUnion.ProjectLighthouse.Tests.Helpers; - -public static class IntegrationHelper -{ - private static readonly Lazy dbConnected = new(() => - { - using DatabaseContext database = DatabaseContext.CreateNewInstance(); - return database.Database.CanConnect(); - }); - - - /// - /// Resets the database to a clean state and returns a new DatabaseContext. - /// - /// A new fresh instance of DatabaseContext - public static async Task GetIntegrationDatabase() - { - if (!dbConnected.Value) - { - throw new Exception("Database is not connected.\n" + - "Please ensure that the database is running and that the connection string is correct.\n" + - $"Connection string: {ServerConfiguration.Instance.DbConnectionString}"); - } - await ClearRooms(); - await using DatabaseContext database = DatabaseContext.CreateNewInstance(); - await database.Database.EnsureDeletedAsync(); - await database.Database.EnsureCreatedAsync(); - - return DatabaseContext.CreateNewInstance(); - } - - private static async Task ClearRooms() - { - await RoomHelper.Rooms.RemoveAllAsync(); - } - +using System; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Configuration; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Helpers; + +namespace LBPUnion.ProjectLighthouse.Tests.Helpers; + +public static class IntegrationHelper +{ + private static readonly Lazy dbConnected = new(() => + { + using DatabaseContext database = DatabaseContext.CreateNewInstance(); + return database.Database.CanConnect(); + }); + + + /// + /// Resets the database to a clean state and returns a new DatabaseContext. + /// + /// A new fresh instance of DatabaseContext + public static async Task GetIntegrationDatabase() + { + if (!dbConnected.Value) + { + throw new Exception("Database is not connected.\n" + + "Please ensure that the database is running and that the connection string is correct.\n" + + $"Connection string: {ServerConfiguration.Instance.DbConnectionString}"); + } + await ClearRooms(); + await using DatabaseContext database = DatabaseContext.CreateNewInstance(); + await database.Database.EnsureDeletedAsync(); + await database.Database.EnsureCreatedAsync(); + + return DatabaseContext.CreateNewInstance(); + } + + private static async Task ClearRooms() + { + await RoomHelper.Rooms.RemoveAllAsync(); + } + } \ No newline at end of file diff --git a/ProjectLighthouse.Tests/Helpers/MockHelper.cs b/ProjectLighthouse.Tests/Helpers/MockHelper.cs index 64dc10c3..a3550c60 100644 --- a/ProjectLighthouse.Tests/Helpers/MockHelper.cs +++ b/ProjectLighthouse.Tests/Helpers/MockHelper.cs @@ -1,149 +1,149 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using System.Data.Common; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Helpers; -using LBPUnion.ProjectLighthouse.Types.Entities.Profile; -using LBPUnion.ProjectLighthouse.Types.Entities.Token; -using LBPUnion.ProjectLighthouse.Types.Users; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Controllers; -using Microsoft.Data.Sqlite; -using Microsoft.EntityFrameworkCore; -using Xunit; - -namespace LBPUnion.ProjectLighthouse.Tests.Helpers; - -public static class MockHelper -{ - - public static UserEntity GetUnitTestUser() => - new() - { - Username = "unittest", - UserId = 1, - }; - - public static GameTokenEntity GetUnitTestToken() => - new() - { - Platform = Platform.UnitTest, - UserId = 1, - ExpiresAt = DateTime.MaxValue, - TokenId = 1, - UserToken = "unittest", - }; - - public static T2 CastTo(this IActionResult result) where T1 : ObjectResult - { - T1 typedResult = Assert.IsType(result); - Assert.NotNull(typedResult); - Assert.NotNull(typedResult.Value); - T2 finalResult = Assert.IsType(typedResult.Value); - Assert.NotNull(finalResult); - return finalResult; - } - - private static async Task> GetInMemoryDbOptions() - { - DbConnection connection = new SqliteConnection("DataSource=:memory:"); - await connection.OpenAsync(); - return new DbContextOptionsBuilder().UseSqlite(connection); - } - - public static async Task GetTestDatabase(params object[] sets) - { - await RoomHelper.Rooms.RemoveAllAsync(); - - Dictionary setDict = new(); - foreach (IList list in sets) - { - Type? type = list.GetType().GetGenericArguments().ElementAtOrDefault(0); - if (type == null) continue; - setDict[type] = list; - } - - setDict.TryAdd(typeof(GameTokenEntity), new List()); - setDict.TryAdd(typeof(UserEntity), new List()); - - // add the default user token if another token with id 1 isn't specified - if (setDict.TryGetValue(typeof(GameTokenEntity), out IList? tokens)) - { - if (tokens.Cast().FirstOrDefault(t => t.TokenId == 1) == null) - { - setDict[typeof(GameTokenEntity)].Add(GetUnitTestToken()); - } - } - - // add the default user if another user with id 1 isn't specified - if (setDict.TryGetValue(typeof(UserEntity), out IList? users)) - { - if (users.Cast().FirstOrDefault(u => u.UserId == 1) == null) - { - setDict[typeof(UserEntity)].Add(GetUnitTestUser()); - } - } - - DbContextOptions options = (await GetInMemoryDbOptions()).Options; - - await using DatabaseContext context = new(options); - await context.Database.EnsureCreatedAsync(); - - foreach (IList list in setDict.Select(p => p.Value)) - { - foreach (object item in list) - { - context.Add(item); - } - } - - await context.SaveChangesAsync(); - - return new DatabaseContext(options); - } - - public static void SetupTestController(this ControllerBase controllerBase, string? body = null) - { - SetupTestController(controllerBase, GetUnitTestToken(), body); - } - - public static void SetupTestController(this ControllerBase controllerBase, GameTokenEntity token, string? body = null) - { - controllerBase.ControllerContext = GetMockControllerContext(body); - SetupTestGameToken(controllerBase, token); - } - - public static ControllerContext GetMockControllerContext() => - new() - { - HttpContext = new DefaultHttpContext(), - }; - - private static ControllerContext GetMockControllerContext(string? body) => - new() - { - HttpContext = new DefaultHttpContext - { - Request = - { - ContentLength = body?.Length ?? 0, - Body = new MemoryStream(Encoding.ASCII.GetBytes(body ?? string.Empty)), - }, - }, - ActionDescriptor = new ControllerActionDescriptor - { - ActionName = "", - }, - }; - - private static void SetupTestGameToken(ControllerBase controller, GameTokenEntity token) - { - controller.HttpContext.Items["Token"] = token; - } +using System; +using System.Collections; +using System.Collections.Generic; +using System.Data.Common; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Helpers; +using LBPUnion.ProjectLighthouse.Types.Entities.Profile; +using LBPUnion.ProjectLighthouse.Types.Entities.Token; +using LBPUnion.ProjectLighthouse.Types.Users; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Controllers; +using Microsoft.Data.Sqlite; +using Microsoft.EntityFrameworkCore; +using Xunit; + +namespace LBPUnion.ProjectLighthouse.Tests.Helpers; + +public static class MockHelper +{ + + public static UserEntity GetUnitTestUser() => + new() + { + Username = "unittest", + UserId = 1, + }; + + public static GameTokenEntity GetUnitTestToken() => + new() + { + Platform = Platform.UnitTest, + UserId = 1, + ExpiresAt = DateTime.MaxValue, + TokenId = 1, + UserToken = "unittest", + }; + + public static T2 CastTo(this IActionResult result) where T1 : ObjectResult + { + T1 typedResult = Assert.IsType(result); + Assert.NotNull(typedResult); + Assert.NotNull(typedResult.Value); + T2 finalResult = Assert.IsType(typedResult.Value); + Assert.NotNull(finalResult); + return finalResult; + } + + private static async Task> GetInMemoryDbOptions() + { + DbConnection connection = new SqliteConnection("DataSource=:memory:"); + await connection.OpenAsync(); + return new DbContextOptionsBuilder().UseSqlite(connection); + } + + public static async Task GetTestDatabase(params object[] sets) + { + await RoomHelper.Rooms.RemoveAllAsync(); + + Dictionary setDict = new(); + foreach (IList list in sets) + { + Type? type = list.GetType().GetGenericArguments().ElementAtOrDefault(0); + if (type == null) continue; + setDict[type] = list; + } + + setDict.TryAdd(typeof(GameTokenEntity), new List()); + setDict.TryAdd(typeof(UserEntity), new List()); + + // add the default user token if another token with id 1 isn't specified + if (setDict.TryGetValue(typeof(GameTokenEntity), out IList? tokens)) + { + if (tokens.Cast().FirstOrDefault(t => t.TokenId == 1) == null) + { + setDict[typeof(GameTokenEntity)].Add(GetUnitTestToken()); + } + } + + // add the default user if another user with id 1 isn't specified + if (setDict.TryGetValue(typeof(UserEntity), out IList? users)) + { + if (users.Cast().FirstOrDefault(u => u.UserId == 1) == null) + { + setDict[typeof(UserEntity)].Add(GetUnitTestUser()); + } + } + + DbContextOptions options = (await GetInMemoryDbOptions()).Options; + + await using DatabaseContext context = new(options); + await context.Database.EnsureCreatedAsync(); + + foreach (IList list in setDict.Select(p => p.Value)) + { + foreach (object item in list) + { + context.Add(item); + } + } + + await context.SaveChangesAsync(); + + return new DatabaseContext(options); + } + + public static void SetupTestController(this ControllerBase controllerBase, string? body = null) + { + SetupTestController(controllerBase, GetUnitTestToken(), body); + } + + public static void SetupTestController(this ControllerBase controllerBase, GameTokenEntity token, string? body = null) + { + controllerBase.ControllerContext = GetMockControllerContext(body); + SetupTestGameToken(controllerBase, token); + } + + public static ControllerContext GetMockControllerContext() => + new() + { + HttpContext = new DefaultHttpContext(), + }; + + private static ControllerContext GetMockControllerContext(string? body) => + new() + { + HttpContext = new DefaultHttpContext + { + Request = + { + ContentLength = body?.Length ?? 0, + Body = new MemoryStream(Encoding.ASCII.GetBytes(body ?? string.Empty)), + }, + }, + ActionDescriptor = new ControllerActionDescriptor + { + ActionName = "", + }, + }; + + private static void SetupTestGameToken(ControllerBase controller, GameTokenEntity token) + { + controller.HttpContext.Items["Token"] = token; + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests/Integration/LighthouseServerTest.cs b/ProjectLighthouse.Tests/Integration/LighthouseServerTest.cs index 5faa9ff9..2b8ee166 100644 --- a/ProjectLighthouse.Tests/Integration/LighthouseServerTest.cs +++ b/ProjectLighthouse.Tests/Integration/LighthouseServerTest.cs @@ -1,145 +1,145 @@ -using System; -using System.IO; -using System.Net.Http; -using System.Security.Cryptography; -using System.Threading.Tasks; -using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Configuration; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Helpers; -using LBPUnion.ProjectLighthouse.Tickets; -using LBPUnion.ProjectLighthouse.Types.Entities.Profile; -using LBPUnion.ProjectLighthouse.Types.Users; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.TestHost; -using Microsoft.EntityFrameworkCore; -using Xunit; - -namespace LBPUnion.ProjectLighthouse.Tests.Integration; - -[Collection(nameof(LighthouseServerTest))] -public class LighthouseServerTest where TStartup : class -{ - protected readonly HttpClient Client; - private readonly TestServer server; - - protected LighthouseServerTest() - { - ServerConfiguration.Instance.DbConnectionString = "server=127.0.0.1;uid=root;pwd=lighthouse_tests;database=lighthouse_tests"; - ServerConfiguration.Instance.DigestKey.PrimaryDigestKey = "lighthouse"; - this.server = new TestServer(new WebHostBuilder().UseStartup()); - this.Client = this.server.CreateClient(); - } - - public TestServer GetTestServer() => this.server; - - protected async Task CreateRandomUser() - { - await using DatabaseContext database = DatabaseContext.CreateNewInstance(); - - int userId = RandomNumberGenerator.GetInt32(int.MaxValue); - const string username = "unitTestUser"; - // if user already exists, find another random number - while (await database.Users.AnyAsync(u => u.Username == $"{username}{userId}")) - { - userId = RandomNumberGenerator.GetInt32(int.MaxValue); - } - - UserEntity user = new() - { - UserId = userId, - Username = $"{username}{userId}", - Password = CryptoHelper.BCryptHash($"unitTestPassword{userId}"), - LinkedPsnId = (ulong)userId, - }; - - database.Add(user); - await database.SaveChangesAsync(); - return user; - } - - protected async Task AuthenticateResponse() - { - UserEntity user = await this.CreateRandomUser(); - - byte[] ticketData = new TicketBuilder() - .SetUsername($"{user.Username}{user.UserId}") - .SetUserId((ulong)user.UserId) - .Build(); - - HttpResponseMessage response = await this.Client.PostAsync - ($"/LITTLEBIGPLANETPS3_XML/login?titleID={GameVersionHelper.LittleBigPlanet2TitleIds[0]}", new ByteArrayContent(ticketData)); - return response; - } - - protected async Task Authenticate() - { - HttpResponseMessage response = await this.AuthenticateResponse(); - - string responseContent = await response.Content.ReadAsStringAsync(); - - XmlSerializer serializer = new(typeof(LoginResult)); - return (LoginResult)serializer.Deserialize(new StringReader(responseContent))!; - } - - protected Task AuthenticatedRequest(string endpoint, string mmAuth) => this.AuthenticatedRequest(endpoint, mmAuth, HttpMethod.Get); - - private static string GetDigestCookie(string mmAuth) => mmAuth["MM_AUTH=".Length..]; - - private Task AuthenticatedRequest(string endpoint, string mmAuth, HttpMethod method) - { - if (!endpoint.StartsWith("/")) endpoint = $"/{endpoint}"; - - using HttpRequestMessage requestMessage = new(method, endpoint); - requestMessage.Headers.Add("Cookie", mmAuth); - string path = endpoint.Split("?", StringSplitOptions.RemoveEmptyEntries)[0]; - - string digest = CryptoHelper.ComputeDigest(path, GetDigestCookie(mmAuth), Array.Empty(), "lighthouse"); - requestMessage.Headers.Add("X-Digest-A", digest); - - return this.Client.SendAsync(requestMessage); - } - - public async Task UploadFileEndpointRequest(string filePath) - { - byte[] bytes = await File.ReadAllBytesAsync(filePath); - string hash = CryptoHelper.Sha1Hash(bytes).ToLower(); - - return await this.Client.PostAsync($"/LITTLEBIGPLANETPS3_XML/upload/{hash}", new ByteArrayContent(bytes)); - } - - protected async Task AuthenticatedUploadFileEndpointRequest(string filePath, string mmAuth) - { - byte[] bytes = await File.ReadAllBytesAsync(filePath); - string hash = CryptoHelper.Sha1Hash(bytes).ToLower(); - using HttpRequestMessage requestMessage = new(HttpMethod.Post, $"/LITTLEBIGPLANETPS3_XML/upload/{hash}"); - requestMessage.Headers.Add("Cookie", mmAuth); - requestMessage.Content = new ByteArrayContent(bytes); - string digest = CryptoHelper.ComputeDigest($"/LITTLEBIGPLANETPS3_XML/upload/{hash}", GetDigestCookie(mmAuth), bytes, "lighthouse", true); - requestMessage.Headers.Add("X-Digest-B", digest); - return await this.Client.SendAsync(requestMessage); - } - - public async Task UploadFileRequest(string endpoint, string filePath) - => await this.Client.PostAsync(endpoint, new StringContent(await File.ReadAllTextAsync(filePath))); - - public async Task UploadDataRequest(string endpoint, byte[] data) => await this.Client.PostAsync(endpoint, new ByteArrayContent(data)); - - public async Task AuthenticatedUploadFileRequest(string endpoint, string filePath, string mmAuth) - { - using HttpRequestMessage requestMessage = new(HttpMethod.Post, endpoint); - requestMessage.Headers.Add("Cookie", mmAuth); - requestMessage.Content = new StringContent(await File.ReadAllTextAsync(filePath)); - return await this.Client.SendAsync(requestMessage); - } - - protected async Task AuthenticatedUploadDataRequest(string endpoint, byte[] data, string mmAuth) - { - using HttpRequestMessage requestMessage = new(HttpMethod.Post, endpoint); - requestMessage.Headers.Add("Cookie", mmAuth); - requestMessage.Content = new ByteArrayContent(data); - string digest = CryptoHelper.ComputeDigest(endpoint, GetDigestCookie(mmAuth), data, "lighthouse"); - requestMessage.Headers.Add("X-Digest-A", digest); - return await this.Client.SendAsync(requestMessage); - } +using System; +using System.IO; +using System.Net.Http; +using System.Security.Cryptography; +using System.Threading.Tasks; +using System.Xml.Serialization; +using LBPUnion.ProjectLighthouse.Configuration; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Helpers; +using LBPUnion.ProjectLighthouse.Tickets; +using LBPUnion.ProjectLighthouse.Types.Entities.Profile; +using LBPUnion.ProjectLighthouse.Types.Users; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.TestHost; +using Microsoft.EntityFrameworkCore; +using Xunit; + +namespace LBPUnion.ProjectLighthouse.Tests.Integration; + +[Collection(nameof(LighthouseServerTest))] +public class LighthouseServerTest where TStartup : class +{ + protected readonly HttpClient Client; + private readonly TestServer server; + + protected LighthouseServerTest() + { + ServerConfiguration.Instance.DbConnectionString = "server=127.0.0.1;uid=root;pwd=lighthouse_tests;database=lighthouse_tests"; + ServerConfiguration.Instance.DigestKey.PrimaryDigestKey = "lighthouse"; + this.server = new TestServer(new WebHostBuilder().UseStartup()); + this.Client = this.server.CreateClient(); + } + + public TestServer GetTestServer() => this.server; + + protected async Task CreateRandomUser() + { + await using DatabaseContext database = DatabaseContext.CreateNewInstance(); + + int userId = RandomNumberGenerator.GetInt32(int.MaxValue); + const string username = "unitTestUser"; + // if user already exists, find another random number + while (await database.Users.AnyAsync(u => u.Username == $"{username}{userId}")) + { + userId = RandomNumberGenerator.GetInt32(int.MaxValue); + } + + UserEntity user = new() + { + UserId = userId, + Username = $"{username}{userId}", + Password = CryptoHelper.BCryptHash($"unitTestPassword{userId}"), + LinkedPsnId = (ulong)userId, + }; + + database.Add(user); + await database.SaveChangesAsync(); + return user; + } + + protected async Task AuthenticateResponse() + { + UserEntity user = await this.CreateRandomUser(); + + byte[] ticketData = new TicketBuilder() + .SetUsername($"{user.Username}{user.UserId}") + .SetUserId((ulong)user.UserId) + .Build(); + + HttpResponseMessage response = await this.Client.PostAsync + ($"/LITTLEBIGPLANETPS3_XML/login?titleID={GameVersionHelper.LittleBigPlanet2TitleIds[0]}", new ByteArrayContent(ticketData)); + return response; + } + + protected async Task Authenticate() + { + HttpResponseMessage response = await this.AuthenticateResponse(); + + string responseContent = await response.Content.ReadAsStringAsync(); + + XmlSerializer serializer = new(typeof(LoginResult)); + return (LoginResult)serializer.Deserialize(new StringReader(responseContent))!; + } + + protected Task AuthenticatedRequest(string endpoint, string mmAuth) => this.AuthenticatedRequest(endpoint, mmAuth, HttpMethod.Get); + + private static string GetDigestCookie(string mmAuth) => mmAuth["MM_AUTH=".Length..]; + + private Task AuthenticatedRequest(string endpoint, string mmAuth, HttpMethod method) + { + if (!endpoint.StartsWith("/")) endpoint = $"/{endpoint}"; + + using HttpRequestMessage requestMessage = new(method, endpoint); + requestMessage.Headers.Add("Cookie", mmAuth); + string path = endpoint.Split("?", StringSplitOptions.RemoveEmptyEntries)[0]; + + string digest = CryptoHelper.ComputeDigest(path, GetDigestCookie(mmAuth), Array.Empty(), "lighthouse"); + requestMessage.Headers.Add("X-Digest-A", digest); + + return this.Client.SendAsync(requestMessage); + } + + public async Task UploadFileEndpointRequest(string filePath) + { + byte[] bytes = await File.ReadAllBytesAsync(filePath); + string hash = CryptoHelper.Sha1Hash(bytes).ToLower(); + + return await this.Client.PostAsync($"/LITTLEBIGPLANETPS3_XML/upload/{hash}", new ByteArrayContent(bytes)); + } + + protected async Task AuthenticatedUploadFileEndpointRequest(string filePath, string mmAuth) + { + byte[] bytes = await File.ReadAllBytesAsync(filePath); + string hash = CryptoHelper.Sha1Hash(bytes).ToLower(); + using HttpRequestMessage requestMessage = new(HttpMethod.Post, $"/LITTLEBIGPLANETPS3_XML/upload/{hash}"); + requestMessage.Headers.Add("Cookie", mmAuth); + requestMessage.Content = new ByteArrayContent(bytes); + string digest = CryptoHelper.ComputeDigest($"/LITTLEBIGPLANETPS3_XML/upload/{hash}", GetDigestCookie(mmAuth), bytes, "lighthouse", true); + requestMessage.Headers.Add("X-Digest-B", digest); + return await this.Client.SendAsync(requestMessage); + } + + public async Task UploadFileRequest(string endpoint, string filePath) + => await this.Client.PostAsync(endpoint, new StringContent(await File.ReadAllTextAsync(filePath))); + + public async Task UploadDataRequest(string endpoint, byte[] data) => await this.Client.PostAsync(endpoint, new ByteArrayContent(data)); + + public async Task AuthenticatedUploadFileRequest(string endpoint, string filePath, string mmAuth) + { + using HttpRequestMessage requestMessage = new(HttpMethod.Post, endpoint); + requestMessage.Headers.Add("Cookie", mmAuth); + requestMessage.Content = new StringContent(await File.ReadAllTextAsync(filePath)); + return await this.Client.SendAsync(requestMessage); + } + + protected async Task AuthenticatedUploadDataRequest(string endpoint, byte[] data, string mmAuth) + { + using HttpRequestMessage requestMessage = new(HttpMethod.Post, endpoint); + requestMessage.Headers.Add("Cookie", mmAuth); + requestMessage.Content = new ByteArrayContent(data); + string digest = CryptoHelper.ComputeDigest(endpoint, GetDigestCookie(mmAuth), data, "lighthouse"); + requestMessage.Headers.Add("X-Digest-A", digest); + return await this.Client.SendAsync(requestMessage); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests/Integration/Serialization/SerializationDependencyTests.cs b/ProjectLighthouse.Tests/Integration/Serialization/SerializationDependencyTests.cs index 96f7f800..a4e0c517 100644 --- a/ProjectLighthouse.Tests/Integration/Serialization/SerializationDependencyTests.cs +++ b/ProjectLighthouse.Tests/Integration/Serialization/SerializationDependencyTests.cs @@ -1,160 +1,160 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; -using LBPUnion.ProjectLighthouse.Types.Serialization; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.DependencyInjection.Extensions; -using Xunit; - -namespace LBPUnion.ProjectLighthouse.Tests.Integration.Serialization; - -[Trait("Category", "Integration")] -public class SerializationDependencyTests -{ - private static IServiceProvider GetTestServiceProvider(params object[] dependencies) - { - ServiceCollection collection = new(); - foreach (object o in dependencies) - { - ServiceDescriptor descriptor = new(o.GetType(), o); - collection.Add(descriptor); - } - return new DefaultServiceProviderFactory().CreateServiceProvider(collection); - } - - public class TestDependency - { - public TestDependency(string secret) - { - this.Secret = secret; - } - public string Secret { get; } - } - - public class DependencyTest : TestSerializable, INeedsPreparationForSerialization - { - [DefaultValue("")] - [XmlElement("secret")] - public string Secret { get; set; } = ""; - - public void PrepareSerialization(TestDependency testDependency) - { - this.Secret = testDependency.Secret; - } - } - - [Fact] - public void ShouldInjectDependency() - { - DependencyTest serializable = new(); - TestDependency testDependency = new("bruh"); - string serialized = LighthouseSerializer.Serialize(GetTestServiceProvider(testDependency), serializable); - Assert.True(serialized == "bruh"); - } - - public class RecursiveDependencyTest : TestSerializable - { - [XmlElement("dependency")] - public DependencyTest Dependency { get; set; } = new(); - } - - [Fact] - public void ShouldInjectDependencyIntoNestedClass() - { - RecursiveDependencyTest serializable = new(); - TestDependency testDependency = new("bruh"); - string serialized = LighthouseSerializer.Serialize(GetTestServiceProvider(testDependency), serializable); - Assert.True(serialized == "bruh"); - } - - public class RecursiveDependencyTestWithPreparation : TestSerializable, INeedsPreparationForSerialization - { - [XmlElement("dependency")] - public DependencyTest Dependency { get; set; } = new(); - - [XmlElement("prepared")] - public string PreparedField { get; set; } = ""; - - public void PrepareSerialization() - { - this.PreparedField = "test"; - } - } - - public class DependencyOrderTest : TestSerializable, INeedsPreparationForSerialization - { - [XmlElement("dependency")] - public DependencyTest Dependency { get; set; } = null!; - - [XmlElement("nestedDependency")] - public RecursiveDependencyTestWithPreparation RecursiveDependency { get; set; } = null!; - - public void PrepareSerialization(TestDependency testDependency) - { - this.Dependency = new DependencyTest(); - this.RecursiveDependency = new RecursiveDependencyTestWithPreparation(); - } - } - - [Fact] - public void ShouldDependenciesBePreparedInOrder() - { - DependencyOrderTest serializable = new(); - TestDependency testDependency = new("bruh"); - string serialized = LighthouseSerializer.Serialize(GetTestServiceProvider(testDependency), serializable); - Assert.True(serialized == - "" + - "bruh" + - "bruhtest" + - ""); - } - - public class CounterDependency - { - private int counter; - public int Counter => this.counter++; - - public CounterDependency() - { - this.counter = 0; - } - - } - - public class ListDependencyItem : ILbpSerializable, INeedsPreparationForSerialization - { - [XmlElement("counter")] - public int Counter { get; set; } = -1; - - public void PrepareSerialization(CounterDependency counter) - { - this.Counter = counter.Counter; - } - } - - public class ListDependencyTest : TestSerializable - { - [XmlElement("item")] - public List Items { get; set; } = new(); - } - - [Fact] - public void ShouldPrepareItemsInList() - { - ListDependencyTest serializable = new() - { - Items = new List - { - new(), - new(), - new(), - }, - }; - CounterDependency counterDependency = new(); - string serialized = LighthouseSerializer.Serialize(GetTestServiceProvider(counterDependency), serializable); - Assert.True(serialized == "012"); - } - +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Xml.Serialization; +using LBPUnion.ProjectLighthouse.Serialization; +using LBPUnion.ProjectLighthouse.Types.Serialization; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; +using Xunit; + +namespace LBPUnion.ProjectLighthouse.Tests.Integration.Serialization; + +[Trait("Category", "Integration")] +public class SerializationDependencyTests +{ + private static IServiceProvider GetTestServiceProvider(params object[] dependencies) + { + ServiceCollection collection = new(); + foreach (object o in dependencies) + { + ServiceDescriptor descriptor = new(o.GetType(), o); + collection.Add(descriptor); + } + return new DefaultServiceProviderFactory().CreateServiceProvider(collection); + } + + public class TestDependency + { + public TestDependency(string secret) + { + this.Secret = secret; + } + public string Secret { get; } + } + + public class DependencyTest : TestSerializable, INeedsPreparationForSerialization + { + [DefaultValue("")] + [XmlElement("secret")] + public string Secret { get; set; } = ""; + + public void PrepareSerialization(TestDependency testDependency) + { + this.Secret = testDependency.Secret; + } + } + + [Fact] + public void ShouldInjectDependency() + { + DependencyTest serializable = new(); + TestDependency testDependency = new("bruh"); + string serialized = LighthouseSerializer.Serialize(GetTestServiceProvider(testDependency), serializable); + Assert.True(serialized == "bruh"); + } + + public class RecursiveDependencyTest : TestSerializable + { + [XmlElement("dependency")] + public DependencyTest Dependency { get; set; } = new(); + } + + [Fact] + public void ShouldInjectDependencyIntoNestedClass() + { + RecursiveDependencyTest serializable = new(); + TestDependency testDependency = new("bruh"); + string serialized = LighthouseSerializer.Serialize(GetTestServiceProvider(testDependency), serializable); + Assert.True(serialized == "bruh"); + } + + public class RecursiveDependencyTestWithPreparation : TestSerializable, INeedsPreparationForSerialization + { + [XmlElement("dependency")] + public DependencyTest Dependency { get; set; } = new(); + + [XmlElement("prepared")] + public string PreparedField { get; set; } = ""; + + public void PrepareSerialization() + { + this.PreparedField = "test"; + } + } + + public class DependencyOrderTest : TestSerializable, INeedsPreparationForSerialization + { + [XmlElement("dependency")] + public DependencyTest Dependency { get; set; } = null!; + + [XmlElement("nestedDependency")] + public RecursiveDependencyTestWithPreparation RecursiveDependency { get; set; } = null!; + + public void PrepareSerialization(TestDependency testDependency) + { + this.Dependency = new DependencyTest(); + this.RecursiveDependency = new RecursiveDependencyTestWithPreparation(); + } + } + + [Fact] + public void ShouldDependenciesBePreparedInOrder() + { + DependencyOrderTest serializable = new(); + TestDependency testDependency = new("bruh"); + string serialized = LighthouseSerializer.Serialize(GetTestServiceProvider(testDependency), serializable); + Assert.True(serialized == + "" + + "bruh" + + "bruhtest" + + ""); + } + + public class CounterDependency + { + private int counter; + public int Counter => this.counter++; + + public CounterDependency() + { + this.counter = 0; + } + + } + + public class ListDependencyItem : ILbpSerializable, INeedsPreparationForSerialization + { + [XmlElement("counter")] + public int Counter { get; set; } = -1; + + public void PrepareSerialization(CounterDependency counter) + { + this.Counter = counter.Counter; + } + } + + public class ListDependencyTest : TestSerializable + { + [XmlElement("item")] + public List Items { get; set; } = new(); + } + + [Fact] + public void ShouldPrepareItemsInList() + { + ListDependencyTest serializable = new() + { + Items = new List + { + new(), + new(), + new(), + }, + }; + CounterDependency counterDependency = new(); + string serialized = LighthouseSerializer.Serialize(GetTestServiceProvider(counterDependency), serializable); + Assert.True(serialized == "012"); + } + } \ No newline at end of file diff --git a/ProjectLighthouse.Tests/Integration/Serialization/SerializationTests.cs b/ProjectLighthouse.Tests/Integration/Serialization/SerializationTests.cs index 8d30fbd0..d06bc7bc 100644 --- a/ProjectLighthouse.Tests/Integration/Serialization/SerializationTests.cs +++ b/ProjectLighthouse.Tests/Integration/Serialization/SerializationTests.cs @@ -1,219 +1,219 @@ -using System; -using System.ComponentModel; -using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Serialization; -using LBPUnion.ProjectLighthouse.Types.Serialization; -using Microsoft.Extensions.DependencyInjection; -using Xunit; - -namespace LBPUnion.ProjectLighthouse.Tests.Integration.Serialization; - -public class TestSerializable : ILbpSerializable, IHasCustomRoot -{ - public virtual string GetRoot() => "xmlRoot"; -} - -[Trait("Category", "Integration")] -public class SerializationTests -{ - private static IServiceProvider GetEmptyServiceProvider() => new DefaultServiceProviderFactory().CreateServiceProvider(new ServiceCollection()); - - [Fact] - public void ShouldNotSerializeNullObject() - { - TestSerializable? serializable = null; - string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); - Assert.True(serialized == ""); - } - - [Fact] - public void ShouldSerializeFullEmptyTag() - { - TestSerializable serializable = new(); - string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); - Assert.True(serialized == ""); - } - - [Fact] - public void ShouldSerializeWithCustomRoot() - { - TestSerializable serializable = new(); - string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); - Assert.True(serialized == ""); - } - - public class OverriddenRoot : TestSerializable - { - public override string GetRoot() => "xmlRoot2"; - } - - [Fact] - public void ShouldSerializeWithOverriddenRoot() - { - OverriddenRoot serializable = new(); - string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); - Assert.True(serialized == ""); - } - - [XmlRoot("xmlRoot3")] - public class RootAttribute : ILbpSerializable { } - - [Fact] - public void ShouldSerializeWithRootAttribute() - { - RootAttribute serializable = new(); - string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); - Assert.True(serialized == ""); - } - - public class DefaultValueInt : TestSerializable - { - [DefaultValue(6)] - [XmlElement("defaultValueInt")] - public int DefaultValueTest { get; set; } = 6; - } - - [Fact] - public void ShouldNotSerializeDefaultValueInt() - { - DefaultValueInt serializable = new(); - string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); - Assert.False(string.IsNullOrWhiteSpace(serialized)); - Assert.True(serialized == ""); - } - - public class NonDefaultValueInt : TestSerializable - { - [DefaultValue(6)] - [XmlElement("nonDefaultValueInt")] - public int NonDefaultValueTest { get; set; } - } - - [Fact] - public void ShouldNotSerializeNonDefaultValueInt() - { - NonDefaultValueInt serializable = new(); - string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); - Assert.False(string.IsNullOrWhiteSpace(serialized)); - Assert.True(serialized == "0"); - } - - public class DefaultNullableStringTest : TestSerializable - { - [DefaultValue(null)] - [XmlElement("defaultNullableString")] - public string? DefaultNullableString { get; set; } - } - - [Fact] - public void ShouldNotSerializeDefaultNullableString() - { - DefaultNullableStringTest serializable = new(); - string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); - Assert.False(string.IsNullOrWhiteSpace(serialized)); - Assert.True(serialized == ""); - } - - public class NullNullableStringTest : TestSerializable - { - [XmlElement("nullableString")] - public string? NullableString { get; set; } - } - - [Fact] - public void ShouldNotSerializeNullNullableString() - { - NullNullableStringTest serializable = new(); - string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); - Assert.False(string.IsNullOrWhiteSpace(serialized)); - Assert.True(serialized == ""); - } - - [Fact] - public void ShouldSerializeNonNullNullableString() - { - NullNullableStringTest serializable = new() - { - NullableString = "notNull", - }; - string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); - Assert.False(string.IsNullOrWhiteSpace(serialized)); - Assert.True(serialized == "notNull"); - } - - public class NonEmptyStringTest : TestSerializable - { - [XmlElement("stringTest")] - public string StringTest { get; set; } = "test"; - } - - [Fact] - public void ShouldSerializeNonNullableString() - { - NonEmptyStringTest serializable = new(); - string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); - Assert.False(string.IsNullOrWhiteSpace(serialized)); - Assert.True(serialized == "test"); - } - - [XmlRoot("xmlRoot", Namespace = "test")] - public class NameSpaceTest : TestSerializable - { - [XmlElement("test", Namespace = "test2")] - public int TestValue { get; set; } = 1; - } - - [Fact] - public void ShouldExcludeNamespace() - { - NameSpaceTest serializable = new(); - string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); - Assert.False(string.IsNullOrWhiteSpace(serialized)); - Assert.True(serialized == "1"); - } - - public class AttributeTest : TestSerializable - { - [XmlAttribute("string")] - public string StringAttribute { get; set; } = "test"; - [XmlAttribute("int")] - public int NumberAttribute { get; set; } = 5; - } - - [Fact] - public void ShouldSerializeAttributes() - { - AttributeTest serializable = new(); - string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); - Assert.False(string.IsNullOrWhiteSpace(serialized)); - Assert.True(serialized == ""); - } - - public class NestingTest : TestSerializable - { - [XmlElement("nested")] - public NestedType NestedType { get; set; } = new(); - } - - public class NestedType : ILbpSerializable - { - [XmlElement("attributeTest")] - public AttributeTest AttributeTest { get; set; } = new(); - [XmlElement("nestedString")] - public NonEmptyStringTest NonEmptyString { get; set; } = new(); - } - - [Fact] - public void ShouldSerializeNestedType() - { - NestingTest serializable = new(); - string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); - Assert.False(string.IsNullOrWhiteSpace(serialized)); - Assert.True(serialized == - "" + - "" + - "test" + - ""); - } - +using System; +using System.ComponentModel; +using System.Xml.Serialization; +using LBPUnion.ProjectLighthouse.Serialization; +using LBPUnion.ProjectLighthouse.Types.Serialization; +using Microsoft.Extensions.DependencyInjection; +using Xunit; + +namespace LBPUnion.ProjectLighthouse.Tests.Integration.Serialization; + +public class TestSerializable : ILbpSerializable, IHasCustomRoot +{ + public virtual string GetRoot() => "xmlRoot"; +} + +[Trait("Category", "Integration")] +public class SerializationTests +{ + private static IServiceProvider GetEmptyServiceProvider() => new DefaultServiceProviderFactory().CreateServiceProvider(new ServiceCollection()); + + [Fact] + public void ShouldNotSerializeNullObject() + { + TestSerializable? serializable = null; + string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); + Assert.True(serialized == ""); + } + + [Fact] + public void ShouldSerializeFullEmptyTag() + { + TestSerializable serializable = new(); + string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); + Assert.True(serialized == ""); + } + + [Fact] + public void ShouldSerializeWithCustomRoot() + { + TestSerializable serializable = new(); + string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); + Assert.True(serialized == ""); + } + + public class OverriddenRoot : TestSerializable + { + public override string GetRoot() => "xmlRoot2"; + } + + [Fact] + public void ShouldSerializeWithOverriddenRoot() + { + OverriddenRoot serializable = new(); + string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); + Assert.True(serialized == ""); + } + + [XmlRoot("xmlRoot3")] + public class RootAttribute : ILbpSerializable { } + + [Fact] + public void ShouldSerializeWithRootAttribute() + { + RootAttribute serializable = new(); + string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); + Assert.True(serialized == ""); + } + + public class DefaultValueInt : TestSerializable + { + [DefaultValue(6)] + [XmlElement("defaultValueInt")] + public int DefaultValueTest { get; set; } = 6; + } + + [Fact] + public void ShouldNotSerializeDefaultValueInt() + { + DefaultValueInt serializable = new(); + string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); + Assert.False(string.IsNullOrWhiteSpace(serialized)); + Assert.True(serialized == ""); + } + + public class NonDefaultValueInt : TestSerializable + { + [DefaultValue(6)] + [XmlElement("nonDefaultValueInt")] + public int NonDefaultValueTest { get; set; } + } + + [Fact] + public void ShouldNotSerializeNonDefaultValueInt() + { + NonDefaultValueInt serializable = new(); + string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); + Assert.False(string.IsNullOrWhiteSpace(serialized)); + Assert.True(serialized == "0"); + } + + public class DefaultNullableStringTest : TestSerializable + { + [DefaultValue(null)] + [XmlElement("defaultNullableString")] + public string? DefaultNullableString { get; set; } + } + + [Fact] + public void ShouldNotSerializeDefaultNullableString() + { + DefaultNullableStringTest serializable = new(); + string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); + Assert.False(string.IsNullOrWhiteSpace(serialized)); + Assert.True(serialized == ""); + } + + public class NullNullableStringTest : TestSerializable + { + [XmlElement("nullableString")] + public string? NullableString { get; set; } + } + + [Fact] + public void ShouldNotSerializeNullNullableString() + { + NullNullableStringTest serializable = new(); + string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); + Assert.False(string.IsNullOrWhiteSpace(serialized)); + Assert.True(serialized == ""); + } + + [Fact] + public void ShouldSerializeNonNullNullableString() + { + NullNullableStringTest serializable = new() + { + NullableString = "notNull", + }; + string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); + Assert.False(string.IsNullOrWhiteSpace(serialized)); + Assert.True(serialized == "notNull"); + } + + public class NonEmptyStringTest : TestSerializable + { + [XmlElement("stringTest")] + public string StringTest { get; set; } = "test"; + } + + [Fact] + public void ShouldSerializeNonNullableString() + { + NonEmptyStringTest serializable = new(); + string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); + Assert.False(string.IsNullOrWhiteSpace(serialized)); + Assert.True(serialized == "test"); + } + + [XmlRoot("xmlRoot", Namespace = "test")] + public class NameSpaceTest : TestSerializable + { + [XmlElement("test", Namespace = "test2")] + public int TestValue { get; set; } = 1; + } + + [Fact] + public void ShouldExcludeNamespace() + { + NameSpaceTest serializable = new(); + string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); + Assert.False(string.IsNullOrWhiteSpace(serialized)); + Assert.True(serialized == "1"); + } + + public class AttributeTest : TestSerializable + { + [XmlAttribute("string")] + public string StringAttribute { get; set; } = "test"; + [XmlAttribute("int")] + public int NumberAttribute { get; set; } = 5; + } + + [Fact] + public void ShouldSerializeAttributes() + { + AttributeTest serializable = new(); + string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); + Assert.False(string.IsNullOrWhiteSpace(serialized)); + Assert.True(serialized == ""); + } + + public class NestingTest : TestSerializable + { + [XmlElement("nested")] + public NestedType NestedType { get; set; } = new(); + } + + public class NestedType : ILbpSerializable + { + [XmlElement("attributeTest")] + public AttributeTest AttributeTest { get; set; } = new(); + [XmlElement("nestedString")] + public NonEmptyStringTest NonEmptyString { get; set; } = new(); + } + + [Fact] + public void ShouldSerializeNestedType() + { + NestingTest serializable = new(); + string serialized = LighthouseSerializer.Serialize(GetEmptyServiceProvider(), serializable); + Assert.False(string.IsNullOrWhiteSpace(serialized)); + Assert.True(serialized == + "" + + "" + + "test" + + ""); + } + } \ No newline at end of file diff --git a/ProjectLighthouse.Tests/ProjectLighthouse.Tests.csproj b/ProjectLighthouse.Tests/ProjectLighthouse.Tests.csproj index 15874823..76ef3522 100644 --- a/ProjectLighthouse.Tests/ProjectLighthouse.Tests.csproj +++ b/ProjectLighthouse.Tests/ProjectLighthouse.Tests.csproj @@ -1,42 +1,42 @@ - - - - enable - - false - - net8.0 - - LBPUnion.ProjectLighthouse.Tests - - LBPUnion.ProjectLighthouse.Tests - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - - - - - PreserveNewest - - - - + + + + enable + + false + + net8.0 + + LBPUnion.ProjectLighthouse.Tests + + LBPUnion.ProjectLighthouse.Tests + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + PreserveNewest + + + + diff --git a/ProjectLighthouse.Tests/ProjectLighthouse.Tests.csproj.DotSettings b/ProjectLighthouse.Tests/ProjectLighthouse.Tests.csproj.DotSettings index eccc8454..a502f551 100644 --- a/ProjectLighthouse.Tests/ProjectLighthouse.Tests.csproj.DotSettings +++ b/ProjectLighthouse.Tests/ProjectLighthouse.Tests.csproj.DotSettings @@ -1,2 +1,2 @@ - + True \ No newline at end of file diff --git a/ProjectLighthouse.Tests/Unit/EmailCooldownTests.cs b/ProjectLighthouse.Tests/Unit/EmailCooldownTests.cs index 682fe576..3a5b0f1b 100644 --- a/ProjectLighthouse.Tests/Unit/EmailCooldownTests.cs +++ b/ProjectLighthouse.Tests/Unit/EmailCooldownTests.cs @@ -1,97 +1,97 @@ -using System.Collections.Concurrent; -using System.Reflection; -using LBPUnion.ProjectLighthouse.Helpers; -using LBPUnion.ProjectLighthouse.Types.Entities.Profile; -using Xunit; - -namespace LBPUnion.ProjectLighthouse.Tests.Unit; - -[Trait("Category", "Unit")] -public class EmailCooldownTests -{ - private static ConcurrentDictionary? GetInternalDict => - typeof(SMTPHelper).GetField("recentlySentMail", BindingFlags.NonPublic | BindingFlags.Static)?.GetValue(null) as ConcurrentDictionary; - - /* - * TODO This way of testing sucks because it relies on internal implementation, - * but half of this codebase is static singletons so my hand has kinda been forced - */ - - [Fact] - public void CanSendMail_WhenExpirationReached() - { - MethodInfo? canSendMethod = typeof(SMTPHelper).GetMethod("CanSendMail", BindingFlags.NonPublic | BindingFlags.Static); - Assert.NotNull(canSendMethod); - - UserEntity userEntity = new() - { - UserId = 1, - }; - - Assert.NotNull(GetInternalDict); - - GetInternalDict.Clear(); - - GetInternalDict.TryAdd(1, 0); - - bool? canSend = (bool?)canSendMethod.Invoke(null, new object?[] { userEntity, }); - - const bool expectedValue = true; - - Assert.NotNull(canSend); - Assert.Equal(expectedValue, canSend); - } - - [Fact] - public void CanSendMail_WhenExpirationNotReached() - { - MethodInfo? canSendMethod = - typeof(SMTPHelper).GetMethod("CanSendMail", BindingFlags.NonPublic | BindingFlags.Static); - Assert.NotNull(canSendMethod); - - UserEntity userEntity = new() - { - UserId = 1, - }; - - Assert.NotNull(GetInternalDict); - - GetInternalDict.Clear(); - - GetInternalDict.TryAdd(1, long.MaxValue); - - bool? canSend = (bool?)canSendMethod.Invoke(null, new object?[] { userEntity, }); - - const bool expectedValue = false; - - Assert.NotNull(canSend); - Assert.Equal(expectedValue, canSend); - } - - [Fact] - public void CanSendMail_ExpiredEntriesAreRemoved() - { - MethodInfo? canSendMethod = typeof(SMTPHelper).GetMethod("CanSendMail", BindingFlags.NonPublic | BindingFlags.Static); - Assert.NotNull(canSendMethod); - - UserEntity userEntity = new() - { - UserId = 1, - }; - - Assert.NotNull(GetInternalDict); - - GetInternalDict.Clear(); - - GetInternalDict.TryAdd(2, 0); - GetInternalDict.TryAdd(3, TimeHelper.TimestampMillis - 100); - GetInternalDict.TryAdd(4, long.MaxValue); - - canSendMethod.Invoke(null, new object?[] { userEntity, }); - - Assert.False(GetInternalDict.TryGetValue(2, out _)); - Assert.False(GetInternalDict.TryGetValue(3, out _)); - Assert.True(GetInternalDict.TryGetValue(4, out _)); - } - +using System.Collections.Concurrent; +using System.Reflection; +using LBPUnion.ProjectLighthouse.Helpers; +using LBPUnion.ProjectLighthouse.Types.Entities.Profile; +using Xunit; + +namespace LBPUnion.ProjectLighthouse.Tests.Unit; + +[Trait("Category", "Unit")] +public class EmailCooldownTests +{ + private static ConcurrentDictionary? GetInternalDict => + typeof(SMTPHelper).GetField("recentlySentMail", BindingFlags.NonPublic | BindingFlags.Static)?.GetValue(null) as ConcurrentDictionary; + + /* + * TODO This way of testing sucks because it relies on internal implementation, + * but half of this codebase is static singletons so my hand has kinda been forced + */ + + [Fact] + public void CanSendMail_WhenExpirationReached() + { + MethodInfo? canSendMethod = typeof(SMTPHelper).GetMethod("CanSendMail", BindingFlags.NonPublic | BindingFlags.Static); + Assert.NotNull(canSendMethod); + + UserEntity userEntity = new() + { + UserId = 1, + }; + + Assert.NotNull(GetInternalDict); + + GetInternalDict.Clear(); + + GetInternalDict.TryAdd(1, 0); + + bool? canSend = (bool?)canSendMethod.Invoke(null, new object?[] { userEntity, }); + + const bool expectedValue = true; + + Assert.NotNull(canSend); + Assert.Equal(expectedValue, canSend); + } + + [Fact] + public void CanSendMail_WhenExpirationNotReached() + { + MethodInfo? canSendMethod = + typeof(SMTPHelper).GetMethod("CanSendMail", BindingFlags.NonPublic | BindingFlags.Static); + Assert.NotNull(canSendMethod); + + UserEntity userEntity = new() + { + UserId = 1, + }; + + Assert.NotNull(GetInternalDict); + + GetInternalDict.Clear(); + + GetInternalDict.TryAdd(1, long.MaxValue); + + bool? canSend = (bool?)canSendMethod.Invoke(null, new object?[] { userEntity, }); + + const bool expectedValue = false; + + Assert.NotNull(canSend); + Assert.Equal(expectedValue, canSend); + } + + [Fact] + public void CanSendMail_ExpiredEntriesAreRemoved() + { + MethodInfo? canSendMethod = typeof(SMTPHelper).GetMethod("CanSendMail", BindingFlags.NonPublic | BindingFlags.Static); + Assert.NotNull(canSendMethod); + + UserEntity userEntity = new() + { + UserId = 1, + }; + + Assert.NotNull(GetInternalDict); + + GetInternalDict.Clear(); + + GetInternalDict.TryAdd(2, 0); + GetInternalDict.TryAdd(3, TimeHelper.TimestampMillis - 100); + GetInternalDict.TryAdd(4, long.MaxValue); + + canSendMethod.Invoke(null, new object?[] { userEntity, }); + + Assert.False(GetInternalDict.TryGetValue(2, out _)); + Assert.False(GetInternalDict.TryGetValue(3, out _)); + Assert.True(GetInternalDict.TryGetValue(4, out _)); + } + } \ No newline at end of file diff --git a/ProjectLighthouse.Tests/Unit/FileTypeTests.cs b/ProjectLighthouse.Tests/Unit/FileTypeTests.cs index 719b0d84..be891239 100644 --- a/ProjectLighthouse.Tests/Unit/FileTypeTests.cs +++ b/ProjectLighthouse.Tests/Unit/FileTypeTests.cs @@ -1,60 +1,60 @@ -using System; -using System.IO; -using LBPUnion.ProjectLighthouse.Types.Resources; -using Xunit; - -namespace LBPUnion.ProjectLighthouse.Tests.Unit; - -[Trait("Category", "Unit")] -public class FileTypeTests -{ - [Fact] - public void ShouldRecognizeLevel() - { - LbpFile file = new(File.ReadAllBytes("ExampleFiles/TestLevel.lvl")); - Assert.True(file.FileType == LbpFileType.Level); - } - - [Fact] - public void ShouldRecognizeScript() - { - LbpFile file = new(File.ReadAllBytes("ExampleFiles/TestScript.ff")); - Assert.True(file.FileType == LbpFileType.Script); - } - - [Fact] - public void ShouldRecognizeTexture() - { - LbpFile file = new(File.ReadAllBytes("ExampleFiles/TestTexture.tex")); - Assert.True(file.FileType == LbpFileType.Texture); - } - - [Fact] - public void ShouldRecognizeFileArchive() - { - LbpFile file = new(File.ReadAllBytes("ExampleFiles/TestFarc.farc")); - Assert.True(file.FileType == LbpFileType.FileArchive); - } - - [Fact] - public void ShouldNotRecognizeFileArchiveAsScript() - { - LbpFile file = new(File.ReadAllBytes("ExampleFiles/TestFarc.farc")); - Assert.False(file.FileType == LbpFileType.Script); - Assert.True(file.FileType == LbpFileType.FileArchive); - } - - [Fact] - public void ShouldRecognizeNothingAsUnknown() - { - LbpFile file = new(Array.Empty()); - Assert.True(file.FileType == LbpFileType.Unknown); - } - - [Fact] - public void ShouldRecognizeGarbageAsUnknown() - { - LbpFile file = new("free pc only $900"u8.ToArray()); - Assert.True(file.FileType == LbpFileType.Unknown); - } +using System; +using System.IO; +using LBPUnion.ProjectLighthouse.Types.Resources; +using Xunit; + +namespace LBPUnion.ProjectLighthouse.Tests.Unit; + +[Trait("Category", "Unit")] +public class FileTypeTests +{ + [Fact] + public void ShouldRecognizeLevel() + { + LbpFile file = new(File.ReadAllBytes("ExampleFiles/TestLevel.lvl")); + Assert.True(file.FileType == LbpFileType.Level); + } + + [Fact] + public void ShouldRecognizeScript() + { + LbpFile file = new(File.ReadAllBytes("ExampleFiles/TestScript.ff")); + Assert.True(file.FileType == LbpFileType.Script); + } + + [Fact] + public void ShouldRecognizeTexture() + { + LbpFile file = new(File.ReadAllBytes("ExampleFiles/TestTexture.tex")); + Assert.True(file.FileType == LbpFileType.Texture); + } + + [Fact] + public void ShouldRecognizeFileArchive() + { + LbpFile file = new(File.ReadAllBytes("ExampleFiles/TestFarc.farc")); + Assert.True(file.FileType == LbpFileType.FileArchive); + } + + [Fact] + public void ShouldNotRecognizeFileArchiveAsScript() + { + LbpFile file = new(File.ReadAllBytes("ExampleFiles/TestFarc.farc")); + Assert.False(file.FileType == LbpFileType.Script); + Assert.True(file.FileType == LbpFileType.FileArchive); + } + + [Fact] + public void ShouldRecognizeNothingAsUnknown() + { + LbpFile file = new(Array.Empty()); + Assert.True(file.FileType == LbpFileType.Unknown); + } + + [Fact] + public void ShouldRecognizeGarbageAsUnknown() + { + LbpFile file = new("free pc only $900"u8.ToArray()); + Assert.True(file.FileType == LbpFileType.Unknown); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests/Unit/FilterTests.cs b/ProjectLighthouse.Tests/Unit/FilterTests.cs index a3eae2e9..96b9dbad 100644 --- a/ProjectLighthouse.Tests/Unit/FilterTests.cs +++ b/ProjectLighthouse.Tests/Unit/FilterTests.cs @@ -1,869 +1,869 @@ -using System; -using System.Collections.Generic; -using LBPUnion.ProjectLighthouse.Filter; -using LBPUnion.ProjectLighthouse.Filter.Filters; -using LBPUnion.ProjectLighthouse.Types.Entities.Level; -using LBPUnion.ProjectLighthouse.Types.Entities.Profile; -using LBPUnion.ProjectLighthouse.Types.Levels; -using LBPUnion.ProjectLighthouse.Types.Users; -using Xunit; - -namespace LBPUnion.ProjectLighthouse.Tests.Unit; - -[Trait("Category", "Unit")] -public class FilterTests -{ - [Fact] - public void QueryBuilder_DoesDeepClone() - { - SlotQueryBuilder queryBuilder = new(); - queryBuilder.AddFilter(new CrossControlFilter()); - - SlotQueryBuilder clonedBuilder = queryBuilder.Clone(); - - Assert.NotEqual(queryBuilder, clonedBuilder); - } - - [Fact] - public void AdventureFilter_ShouldAccept_WhenAdventure() - { - AdventureFilter adventureFilter = new(); - Func adventureFunc = adventureFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - IsAdventurePlanet = true, - }; - - Assert.True(adventureFunc(slot)); - } - - [Fact] - public void AdventureFilter_ShouldReject_WhenNotAdventure() - { - AdventureFilter adventureFilter = new(); - Func adventureFunc = adventureFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - IsAdventurePlanet = false, - }; - - Assert.False(adventureFunc(slot)); - } - - [Fact] - public void AuthorLabelFilter_ShouldAccept_WhenExactMatch() - { - string[] filters = - { - "LABEL_Test", "LABEL_Unit", - }; - AuthorLabelFilter labelFilter = new(filters); - Func labelFunc = labelFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - AuthorLabels = "LABEL_Test,LABEL_Unit", - }; - - Assert.True(labelFunc(slot)); - } - - [Fact] - public void AuthorLabelFilter_ShouldAccept_WhenExactMatch_AndExtraLabelsPresent() - { - string[] filters = - { - "LABEL_Test", "LABEL_Unit", - }; - AuthorLabelFilter labelFilter = new(filters); - Func labelFunc = labelFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - AuthorLabels = "LABEL_Test,LABEL_Unit,LABEL_Lighthouse,LABEL_Bruh", - }; - - Assert.True(labelFunc(slot)); - } - - [Fact] - public void AuthorLabelFilter_ShouldAccept_WhenFilterEmpty_AndLabelsEmpty() - { - string[] filters = Array.Empty(); - AuthorLabelFilter labelFilter = new(filters); - Func labelFunc = labelFilter.GetPredicate().Compile(); - - SlotEntity slotWithNoLabels = new() - { - AuthorLabels = "", - }; - - Assert.True(labelFunc(slotWithNoLabels)); - } - - [Fact] - public void AuthorLabelFilter_ShouldReject_WhenNoneMatch() - { - string[] filters = - { - "LABEL_Test", "LABEL_Unit", - }; - AuthorLabelFilter labelFilter = new(filters); - Func labelFunc = labelFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - AuthorLabels = "LABEL_Adventure,LABEL_Versus", - }; - - Assert.False(labelFunc(slot)); - } - - [Fact] - public void CreatorFilter_ShouldAccept_WhenCreatorIdMatch() - { - const int creatorId = 27; - CreatorFilter creatorFilter = new(creatorId); - Func creatorFunc = creatorFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - CreatorId = creatorId, - }; - - Assert.True(creatorFunc(slot)); - } - - [Fact] - public void CreatorFilter_ShouldReject_WhenCreatorIdMismatch() - { - const int filterCreatorId = 27; - const int slotCreatorId = 28; - CreatorFilter creatorFilter = new(filterCreatorId); - Func creatorFunc = creatorFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - CreatorId = slotCreatorId, - }; - - Assert.False(creatorFunc(slot)); - } - - [Fact] - public void CrossControlFilter_ShouldAccept_WhenCrossControlRequired() - { - CrossControlFilter crossControlFilter = new(); - Func ccFunc = crossControlFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - CrossControllerRequired = true, - }; - - Assert.True(ccFunc(slot)); - } - - [Fact] - public void CrossControlFilter_ShouldReject_WhenCrossControlNotRequired() - { - CrossControlFilter crossControlFilter = new(); - Func ccFunc = crossControlFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - CrossControllerRequired = false, - }; - - Assert.False(ccFunc(slot)); - } - - [Fact] - public void ExcludeAdventureFilter_ShouldReject_WhenAdventure() - { - ExcludeAdventureFilter excludeAdventureFilter = new(); - Func adventureFunc = excludeAdventureFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - IsAdventurePlanet = true, - }; - - Assert.False(adventureFunc(slot)); - } - - [Fact] - public void ExcludeAdventureFilter_ShouldAccept_WhenNotAdventure() - { - ExcludeAdventureFilter excludeAdventureFilter = new(); - Func adventureFunc = excludeAdventureFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - IsAdventurePlanet = false, - }; - - Assert.True(adventureFunc(slot)); - } - - [Fact] - public void ExcludeCrossControlFilter_ShouldAccept_WhenNotCrossControl() - { - ExcludeCrossControlFilter crossControlFilter = new(); - Func crossControlFunc = crossControlFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - CrossControllerRequired = false, - }; - - Assert.True(crossControlFunc(slot)); - } - - [Fact] - public void ExcludeCrossControlFilter_ShouldReject_WhenCrossControl() - { - ExcludeCrossControlFilter crossControlFilter = new(); - Func crossControlFunc = crossControlFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - CrossControllerRequired = true, - }; - - Assert.False(crossControlFunc(slot)); - } - - [Fact] - public void ExcludeLBP1OnlyFilter_ShouldReject_WhenLbp1Only_AndTokenNotLbp1_AndNotCreator() - { - ExcludeLBP1OnlyFilter excludeLBP1 = new(10, GameVersion.LittleBigPlanet2); - Func excludeFunc = excludeLBP1.GetPredicate().Compile(); - - SlotEntity slot = new() - { - Lbp1Only = true, - }; - - Assert.False(excludeFunc(slot)); - } - - [Fact] - public void ExcludeLBP1OnlyFilter_ShouldAccept_WhenLbp1Only_AndTokenLbp1() - { - ExcludeLBP1OnlyFilter excludeLBP1 = new(10, GameVersion.LittleBigPlanet1); - Func excludeFunc = excludeLBP1.GetPredicate().Compile(); - - SlotEntity slot = new() - { - Lbp1Only = true, - }; - - Assert.True(excludeFunc(slot)); - } - - [Fact] - public void ExcludeLBP1OnlyFilter_ShouldAccept_WhenLbp1Only_AndTokenNotLbp1_AndIsCreator() - { - ExcludeLBP1OnlyFilter excludeLBP1 = new(10, GameVersion.LittleBigPlanet2); - Func excludeFunc = excludeLBP1.GetPredicate().Compile(); - - SlotEntity slot = new() - { - CreatorId = 10, - Lbp1Only = true, - }; - - Assert.True(excludeFunc(slot)); - } - - [Fact] - public void ExcludeMovePackFilter_ShouldReject_WhenMoveRequired() - { - ExcludeMovePackFilter excludeMove = new(); - Func excludeFunc = excludeMove.GetPredicate().Compile(); - - SlotEntity slot = new() - { - MoveRequired = true, - }; - - Assert.False(excludeFunc(slot)); - } - - [Fact] - public void ExcludeMovePackFilter_ShouldAccept_WhenMoveNotRequired() - { - ExcludeMovePackFilter excludeMove = new(); - Func excludeFunc = excludeMove.GetPredicate().Compile(); - - SlotEntity slot = new() - { - MoveRequired = false, - }; - - Assert.True(excludeFunc(slot)); - } - - [Fact] - public void FirstUploadedFilter_ShouldReject_WhenOlderThanStartTime() - { - FirstUploadedFilter uploadFilter = new(1000); - Func uploadFunc = uploadFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - FirstUploaded = 999, - }; - - Assert.False(uploadFunc(slot)); - } - - [Fact] - public void FirstUploadedFilter_ShouldAccept_WhenNewerThanStartTime() - { - FirstUploadedFilter uploadFilter = new(1000); - Func uploadFunc = uploadFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - FirstUploaded = 1001, - }; - - Assert.True(uploadFunc(slot)); - } - - [Fact] - public void FirstUploadedFilter_ShouldReject_WhenOlderThanEndTime() - { - FirstUploadedFilter uploadFilter = new(0, 1000); - Func uploadFunc = uploadFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - FirstUploaded = 1001, - }; - - Assert.False(uploadFunc(slot)); - } - - [Fact] - public void FirstUploadedFilter_ShouldAccept_WhenNewerThanEndTime() - { - FirstUploadedFilter uploadFilter = new(0, 1000); - Func uploadFunc = uploadFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - FirstUploaded = 999, - }; - - Assert.True(uploadFunc(slot)); - } - - [Fact] - public void GameVersionFilter_ShouldAccept_WhenExact_AndEqual() - { - GameVersionFilter gameVersionFilter = new(GameVersion.LittleBigPlanet1, true); - Func versionFunc = gameVersionFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - GameVersion = GameVersion.LittleBigPlanet1, - }; - - Assert.True(versionFunc(slot)); - } - - [Fact] - public void GameVersionFilter_ShouldReject_WhenExact_AndNotEqual() - { - GameVersionFilter gameVersionFilter = new(GameVersion.LittleBigPlanet2, true); - Func versionFunc = gameVersionFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - GameVersion = GameVersion.LittleBigPlanet1, - }; - - Assert.False(versionFunc(slot)); - } - - [Fact] - public void GameVersionFilter_ShouldAccept_WhenNotExact_AndGreaterThan() - { - GameVersionFilter gameVersionFilter = new(GameVersion.LittleBigPlanet2); - Func versionFunc = gameVersionFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - GameVersion = GameVersion.LittleBigPlanet1, - }; - - Assert.True(versionFunc(slot)); - } - - [Fact] - public void GameVersionFilter_ShouldAccept_WhenNotExact_AndEqual() - { - GameVersionFilter gameVersionFilter = new(GameVersion.LittleBigPlanet2); - Func versionFunc = gameVersionFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - GameVersion = GameVersion.LittleBigPlanet2, - }; - - Assert.True(versionFunc(slot)); - } - - [Fact] - public void GameVersionFilter_ShouldReject_WhenNotExact_AndLessThan() - { - GameVersionFilter gameVersionFilter = new(GameVersion.LittleBigPlanet1); - Func versionFunc = gameVersionFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - GameVersion = GameVersion.LittleBigPlanet2, - }; - - Assert.False(versionFunc(slot)); - } - - [Fact] - public void GameVersionFilter_ShouldReject_WhenVersionNotInList() - { - GameVersionListFilter gameVersionListFilter = new(GameVersion.LittleBigPlanet1, GameVersion.LittleBigPlanet2); - Func versionFunc = gameVersionListFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - GameVersion = GameVersion.LittleBigPlanet3, - }; - - Assert.False(versionFunc(slot)); - } - - [Fact] - public void GameVersionFilter_ShouldAccept_WhenVersionIsInList() - { - GameVersionListFilter gameVersionListFilter = new(GameVersion.LittleBigPlanet1, GameVersion.LittleBigPlanet2); - Func versionFunc = gameVersionListFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - GameVersion = GameVersion.LittleBigPlanet1, - }; - - Assert.True(versionFunc(slot)); - } - - [Fact] - public void HiddenSlotFilter_ShouldReject_WhenHidden() - { - HiddenSlotFilter hiddenSlotFilter = new(); - Func hiddenFunc = hiddenSlotFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - Hidden = true, - }; - - Assert.False(hiddenFunc(slot)); - } - - [Fact] - public void HiddenSlotFilter_ShouldAccept_WhenNotHidden() - { - HiddenSlotFilter hiddenSlotFilter = new(); - Func hiddenFunc = hiddenSlotFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - Hidden = false, - }; - - Assert.True(hiddenFunc(slot)); - } - - [Fact] - public void MoveFilter_ShouldAccept_WhenMoveRequired() - { - MovePackFilter movePackFilter = new(); - Func moveFunc = movePackFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - MoveRequired = true, - }; - - Assert.True(moveFunc(slot)); - } - - [Fact] - public void MoveFilter_ShouldReject_WhenMoveNotRequired() - { - MovePackFilter movePackFilter = new(); - Func moveFunc = movePackFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - MoveRequired = false, - }; - - Assert.False(moveFunc(slot)); - } - - [Fact] - public void PlayerCountFilter_ShouldReject_WhenHigherThanMaxPlayers() - { - PlayerCountFilter playerCountFilter = new(maxPlayers: 2); - Func countFunc = playerCountFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - MinimumPlayers = 1, - MaximumPlayers = 4, - }; - - Assert.False(countFunc(slot)); - } - - [Fact] - public void PlayerCountFilter_ShouldReject_WhenLowerThanMinPlayers() - { - PlayerCountFilter playerCountFilter = new(minPlayers: 2); - Func countFunc = playerCountFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - MinimumPlayers = 1, - MaximumPlayers = 4, - }; - - Assert.False(countFunc(slot)); - } - - [Fact] - public void PlayerCountFilter_ShouldAccept_WhenLowerThanMaxPlayers() - { - PlayerCountFilter playerCountFilter = new(maxPlayers: 3); - Func countFunc = playerCountFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - MinimumPlayers = 1, - MaximumPlayers = 2, - }; - - Assert.True(countFunc(slot)); - } - - [Fact] - public void PlayerCountFilter_ShouldAccept_WhenHigherThanMinPlayers() - { - PlayerCountFilter playerCountFilter = new(minPlayers: 2); - Func countFunc = playerCountFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - MinimumPlayers = 3, - MaximumPlayers = 4, - }; - - Assert.True(countFunc(slot)); - } - - [Fact] - public void ResultTypeFilter_ShouldReject_WhenSlotNotPresent() - { - ResultTypeFilter resultFilter = new(); - Func resultFunc = resultFilter.GetPredicate().Compile(); - - SlotEntity slot = new(); - - Assert.False(resultFunc(slot)); - } - - [Fact] - public void ResultTypeFilter_ShouldAccept_WhenSlotPresent() - { - ResultTypeFilter resultFilter = new("slot"); - Func resultFunc = resultFilter.GetPredicate().Compile(); - - SlotEntity slot = new(); - - Assert.True(resultFunc(slot)); - } - - [Fact] - public void SlotIdFilter_ShouldReject_WhenSlotIdNotPresent() - { - SlotIdFilter idFilter = new(new List - { - 2, - }); - Func idFunc = idFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - SlotId = 1, - }; - - Assert.False(idFunc(slot)); - } - - [Fact] - public void SlotIdFilter_ShouldAccept_WhenSlotIdPresent() - { - SlotIdFilter idFilter = new(new List - { - 2, - }); - Func idFunc = idFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - SlotId = 2, - }; - - Assert.True(idFunc(slot)); - } - - [Fact] - public void SlotTypeFilter_ShouldAccept_WhenSlotTypeMatches() - { - SlotTypeFilter slotTypeFilter = new(SlotType.User); - Func typeFunc = slotTypeFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - Type = SlotType.User, - }; - - Assert.True(typeFunc(slot)); - } - - [Fact] - public void SlotTypeFilter_ShouldAccept_WhenSlotTypeDoesNotMatch() - { - SlotTypeFilter slotTypeFilter = new(SlotType.User); - Func typeFunc = slotTypeFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - Type = SlotType.Developer, - }; - - Assert.False(typeFunc(slot)); - } - - [Fact] - public void SubLevelFilter_ShouldAccept_WhenUserIsCreator_AndNotSubLevel() - { - SubLevelFilter subLevelFilter = new(2); - Func subLevelFunc = subLevelFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - CreatorId = 2, - SubLevel = false, - }; - - Assert.True(subLevelFunc(slot)); - } - - [Fact] - public void SubLevelFilter_ShouldAccept_WhenUserIsCreator_AndSubLevel() - { - SubLevelFilter subLevelFilter = new(2); - Func subLevelFunc = subLevelFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - CreatorId = 2, - SubLevel = true, - }; - - Assert.True(subLevelFunc(slot)); - } - - [Fact] - public void SubLevelFilter_ShouldReject_WhenUserIsNotCreator_AndSubLevel() - { - SubLevelFilter subLevelFilter = new(2); - Func subLevelFunc = subLevelFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - CreatorId = 1, - SubLevel = true, - }; - - Assert.False(subLevelFunc(slot)); - } - - [Fact] - public void SubLevelFilter_ShouldAccept_WhenUserIsNotCreator_AndNotSubLevel() - { - SubLevelFilter subLevelFilter = new(2); - Func subLevelFunc = subLevelFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - CreatorId = 1, - SubLevel = false, - }; - - Assert.True(subLevelFunc(slot)); - } - - [Fact] - public void TeamPickFilter_ShouldAccept_WhenTeamPick() - { - TeamPickFilter teamPickFilter = new(); - Func teamPickFunc = teamPickFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - TeamPickTime = 1, - }; - - Assert.True(teamPickFunc(slot)); - } - - [Fact] - public void TeamPickFilter_ShouldReject_WhenNotTeamPick() - { - TeamPickFilter teamPickFilter = new(); - Func teamPickFunc = teamPickFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - TeamPickTime = 0, - }; - - Assert.False(teamPickFunc(slot)); - } - - [Fact] - public void TextFilter_ShouldAccept_WhenDescriptionContainsText() - { - TextFilter textFilter = new("test"); - Func textFunc = textFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - Description = "unit test", - }; - - Assert.True(textFunc(slot)); - } - - [Fact] - public void TextFilter_ShouldReject_WhenDescriptionDoesNotContainText() - { - TextFilter textFilter = new("test"); - Func textFunc = textFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - Description = "fraction exam", - }; - - Assert.False(textFunc(slot)); - } - - [Fact] - public void TextFilter_ShouldAccept_WhenNameContainsText() - { - TextFilter textFilter = new("test"); - Func textFunc = textFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - Name = "unit test", - }; - - Assert.True(textFunc(slot)); - } - - [Fact] - public void TextFilter_ShouldReject_WhenNameDoesNotContainText() - { - TextFilter textFilter = new("test"); - Func textFunc = textFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - Name = "fraction exam", - }; - - Assert.False(textFunc(slot)); - } - - [Fact] - public void TextFilter_ShouldAccept_WhenIdContainsText() - { - TextFilter textFilter = new("21"); - Func textFunc = textFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - SlotId = 21, - }; - - Assert.True(textFunc(slot)); - } - - [Fact] - public void TextFilter_ShouldReject_WhenIdDoesNotContainText() - { - TextFilter textFilter = new("21"); - Func textFunc = textFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - SlotId = 19, - }; - - Assert.False(textFunc(slot)); - } - - [Fact] - public void TextFilter_ShouldAccept_WhenCreatorUsernameContainsText() - { - TextFilter textFilter = new("test"); - Func textFunc = textFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - Creator = new UserEntity - { - Username = "test", - }, - }; - - Assert.True(textFunc(slot)); - } - - [Fact] - public void TextFilter_ShouldReject_WhenCreatorUsernameDoesNotContainText() - { - TextFilter textFilter = new("test"); - Func textFunc = textFilter.GetPredicate().Compile(); - - SlotEntity slot = new() - { - Creator = new UserEntity - { - Username = "bruh", - }, - }; - - Assert.False(textFunc(slot)); - } +using System; +using System.Collections.Generic; +using LBPUnion.ProjectLighthouse.Filter; +using LBPUnion.ProjectLighthouse.Filter.Filters; +using LBPUnion.ProjectLighthouse.Types.Entities.Level; +using LBPUnion.ProjectLighthouse.Types.Entities.Profile; +using LBPUnion.ProjectLighthouse.Types.Levels; +using LBPUnion.ProjectLighthouse.Types.Users; +using Xunit; + +namespace LBPUnion.ProjectLighthouse.Tests.Unit; + +[Trait("Category", "Unit")] +public class FilterTests +{ + [Fact] + public void QueryBuilder_DoesDeepClone() + { + SlotQueryBuilder queryBuilder = new(); + queryBuilder.AddFilter(new CrossControlFilter()); + + SlotQueryBuilder clonedBuilder = queryBuilder.Clone(); + + Assert.NotEqual(queryBuilder, clonedBuilder); + } + + [Fact] + public void AdventureFilter_ShouldAccept_WhenAdventure() + { + AdventureFilter adventureFilter = new(); + Func adventureFunc = adventureFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + IsAdventurePlanet = true, + }; + + Assert.True(adventureFunc(slot)); + } + + [Fact] + public void AdventureFilter_ShouldReject_WhenNotAdventure() + { + AdventureFilter adventureFilter = new(); + Func adventureFunc = adventureFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + IsAdventurePlanet = false, + }; + + Assert.False(adventureFunc(slot)); + } + + [Fact] + public void AuthorLabelFilter_ShouldAccept_WhenExactMatch() + { + string[] filters = + { + "LABEL_Test", "LABEL_Unit", + }; + AuthorLabelFilter labelFilter = new(filters); + Func labelFunc = labelFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + AuthorLabels = "LABEL_Test,LABEL_Unit", + }; + + Assert.True(labelFunc(slot)); + } + + [Fact] + public void AuthorLabelFilter_ShouldAccept_WhenExactMatch_AndExtraLabelsPresent() + { + string[] filters = + { + "LABEL_Test", "LABEL_Unit", + }; + AuthorLabelFilter labelFilter = new(filters); + Func labelFunc = labelFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + AuthorLabels = "LABEL_Test,LABEL_Unit,LABEL_Lighthouse,LABEL_Bruh", + }; + + Assert.True(labelFunc(slot)); + } + + [Fact] + public void AuthorLabelFilter_ShouldAccept_WhenFilterEmpty_AndLabelsEmpty() + { + string[] filters = Array.Empty(); + AuthorLabelFilter labelFilter = new(filters); + Func labelFunc = labelFilter.GetPredicate().Compile(); + + SlotEntity slotWithNoLabels = new() + { + AuthorLabels = "", + }; + + Assert.True(labelFunc(slotWithNoLabels)); + } + + [Fact] + public void AuthorLabelFilter_ShouldReject_WhenNoneMatch() + { + string[] filters = + { + "LABEL_Test", "LABEL_Unit", + }; + AuthorLabelFilter labelFilter = new(filters); + Func labelFunc = labelFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + AuthorLabels = "LABEL_Adventure,LABEL_Versus", + }; + + Assert.False(labelFunc(slot)); + } + + [Fact] + public void CreatorFilter_ShouldAccept_WhenCreatorIdMatch() + { + const int creatorId = 27; + CreatorFilter creatorFilter = new(creatorId); + Func creatorFunc = creatorFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + CreatorId = creatorId, + }; + + Assert.True(creatorFunc(slot)); + } + + [Fact] + public void CreatorFilter_ShouldReject_WhenCreatorIdMismatch() + { + const int filterCreatorId = 27; + const int slotCreatorId = 28; + CreatorFilter creatorFilter = new(filterCreatorId); + Func creatorFunc = creatorFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + CreatorId = slotCreatorId, + }; + + Assert.False(creatorFunc(slot)); + } + + [Fact] + public void CrossControlFilter_ShouldAccept_WhenCrossControlRequired() + { + CrossControlFilter crossControlFilter = new(); + Func ccFunc = crossControlFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + CrossControllerRequired = true, + }; + + Assert.True(ccFunc(slot)); + } + + [Fact] + public void CrossControlFilter_ShouldReject_WhenCrossControlNotRequired() + { + CrossControlFilter crossControlFilter = new(); + Func ccFunc = crossControlFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + CrossControllerRequired = false, + }; + + Assert.False(ccFunc(slot)); + } + + [Fact] + public void ExcludeAdventureFilter_ShouldReject_WhenAdventure() + { + ExcludeAdventureFilter excludeAdventureFilter = new(); + Func adventureFunc = excludeAdventureFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + IsAdventurePlanet = true, + }; + + Assert.False(adventureFunc(slot)); + } + + [Fact] + public void ExcludeAdventureFilter_ShouldAccept_WhenNotAdventure() + { + ExcludeAdventureFilter excludeAdventureFilter = new(); + Func adventureFunc = excludeAdventureFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + IsAdventurePlanet = false, + }; + + Assert.True(adventureFunc(slot)); + } + + [Fact] + public void ExcludeCrossControlFilter_ShouldAccept_WhenNotCrossControl() + { + ExcludeCrossControlFilter crossControlFilter = new(); + Func crossControlFunc = crossControlFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + CrossControllerRequired = false, + }; + + Assert.True(crossControlFunc(slot)); + } + + [Fact] + public void ExcludeCrossControlFilter_ShouldReject_WhenCrossControl() + { + ExcludeCrossControlFilter crossControlFilter = new(); + Func crossControlFunc = crossControlFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + CrossControllerRequired = true, + }; + + Assert.False(crossControlFunc(slot)); + } + + [Fact] + public void ExcludeLBP1OnlyFilter_ShouldReject_WhenLbp1Only_AndTokenNotLbp1_AndNotCreator() + { + ExcludeLBP1OnlyFilter excludeLBP1 = new(10, GameVersion.LittleBigPlanet2); + Func excludeFunc = excludeLBP1.GetPredicate().Compile(); + + SlotEntity slot = new() + { + Lbp1Only = true, + }; + + Assert.False(excludeFunc(slot)); + } + + [Fact] + public void ExcludeLBP1OnlyFilter_ShouldAccept_WhenLbp1Only_AndTokenLbp1() + { + ExcludeLBP1OnlyFilter excludeLBP1 = new(10, GameVersion.LittleBigPlanet1); + Func excludeFunc = excludeLBP1.GetPredicate().Compile(); + + SlotEntity slot = new() + { + Lbp1Only = true, + }; + + Assert.True(excludeFunc(slot)); + } + + [Fact] + public void ExcludeLBP1OnlyFilter_ShouldAccept_WhenLbp1Only_AndTokenNotLbp1_AndIsCreator() + { + ExcludeLBP1OnlyFilter excludeLBP1 = new(10, GameVersion.LittleBigPlanet2); + Func excludeFunc = excludeLBP1.GetPredicate().Compile(); + + SlotEntity slot = new() + { + CreatorId = 10, + Lbp1Only = true, + }; + + Assert.True(excludeFunc(slot)); + } + + [Fact] + public void ExcludeMovePackFilter_ShouldReject_WhenMoveRequired() + { + ExcludeMovePackFilter excludeMove = new(); + Func excludeFunc = excludeMove.GetPredicate().Compile(); + + SlotEntity slot = new() + { + MoveRequired = true, + }; + + Assert.False(excludeFunc(slot)); + } + + [Fact] + public void ExcludeMovePackFilter_ShouldAccept_WhenMoveNotRequired() + { + ExcludeMovePackFilter excludeMove = new(); + Func excludeFunc = excludeMove.GetPredicate().Compile(); + + SlotEntity slot = new() + { + MoveRequired = false, + }; + + Assert.True(excludeFunc(slot)); + } + + [Fact] + public void FirstUploadedFilter_ShouldReject_WhenOlderThanStartTime() + { + FirstUploadedFilter uploadFilter = new(1000); + Func uploadFunc = uploadFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + FirstUploaded = 999, + }; + + Assert.False(uploadFunc(slot)); + } + + [Fact] + public void FirstUploadedFilter_ShouldAccept_WhenNewerThanStartTime() + { + FirstUploadedFilter uploadFilter = new(1000); + Func uploadFunc = uploadFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + FirstUploaded = 1001, + }; + + Assert.True(uploadFunc(slot)); + } + + [Fact] + public void FirstUploadedFilter_ShouldReject_WhenOlderThanEndTime() + { + FirstUploadedFilter uploadFilter = new(0, 1000); + Func uploadFunc = uploadFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + FirstUploaded = 1001, + }; + + Assert.False(uploadFunc(slot)); + } + + [Fact] + public void FirstUploadedFilter_ShouldAccept_WhenNewerThanEndTime() + { + FirstUploadedFilter uploadFilter = new(0, 1000); + Func uploadFunc = uploadFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + FirstUploaded = 999, + }; + + Assert.True(uploadFunc(slot)); + } + + [Fact] + public void GameVersionFilter_ShouldAccept_WhenExact_AndEqual() + { + GameVersionFilter gameVersionFilter = new(GameVersion.LittleBigPlanet1, true); + Func versionFunc = gameVersionFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + GameVersion = GameVersion.LittleBigPlanet1, + }; + + Assert.True(versionFunc(slot)); + } + + [Fact] + public void GameVersionFilter_ShouldReject_WhenExact_AndNotEqual() + { + GameVersionFilter gameVersionFilter = new(GameVersion.LittleBigPlanet2, true); + Func versionFunc = gameVersionFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + GameVersion = GameVersion.LittleBigPlanet1, + }; + + Assert.False(versionFunc(slot)); + } + + [Fact] + public void GameVersionFilter_ShouldAccept_WhenNotExact_AndGreaterThan() + { + GameVersionFilter gameVersionFilter = new(GameVersion.LittleBigPlanet2); + Func versionFunc = gameVersionFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + GameVersion = GameVersion.LittleBigPlanet1, + }; + + Assert.True(versionFunc(slot)); + } + + [Fact] + public void GameVersionFilter_ShouldAccept_WhenNotExact_AndEqual() + { + GameVersionFilter gameVersionFilter = new(GameVersion.LittleBigPlanet2); + Func versionFunc = gameVersionFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + GameVersion = GameVersion.LittleBigPlanet2, + }; + + Assert.True(versionFunc(slot)); + } + + [Fact] + public void GameVersionFilter_ShouldReject_WhenNotExact_AndLessThan() + { + GameVersionFilter gameVersionFilter = new(GameVersion.LittleBigPlanet1); + Func versionFunc = gameVersionFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + GameVersion = GameVersion.LittleBigPlanet2, + }; + + Assert.False(versionFunc(slot)); + } + + [Fact] + public void GameVersionFilter_ShouldReject_WhenVersionNotInList() + { + GameVersionListFilter gameVersionListFilter = new(GameVersion.LittleBigPlanet1, GameVersion.LittleBigPlanet2); + Func versionFunc = gameVersionListFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + GameVersion = GameVersion.LittleBigPlanet3, + }; + + Assert.False(versionFunc(slot)); + } + + [Fact] + public void GameVersionFilter_ShouldAccept_WhenVersionIsInList() + { + GameVersionListFilter gameVersionListFilter = new(GameVersion.LittleBigPlanet1, GameVersion.LittleBigPlanet2); + Func versionFunc = gameVersionListFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + GameVersion = GameVersion.LittleBigPlanet1, + }; + + Assert.True(versionFunc(slot)); + } + + [Fact] + public void HiddenSlotFilter_ShouldReject_WhenHidden() + { + HiddenSlotFilter hiddenSlotFilter = new(); + Func hiddenFunc = hiddenSlotFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + Hidden = true, + }; + + Assert.False(hiddenFunc(slot)); + } + + [Fact] + public void HiddenSlotFilter_ShouldAccept_WhenNotHidden() + { + HiddenSlotFilter hiddenSlotFilter = new(); + Func hiddenFunc = hiddenSlotFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + Hidden = false, + }; + + Assert.True(hiddenFunc(slot)); + } + + [Fact] + public void MoveFilter_ShouldAccept_WhenMoveRequired() + { + MovePackFilter movePackFilter = new(); + Func moveFunc = movePackFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + MoveRequired = true, + }; + + Assert.True(moveFunc(slot)); + } + + [Fact] + public void MoveFilter_ShouldReject_WhenMoveNotRequired() + { + MovePackFilter movePackFilter = new(); + Func moveFunc = movePackFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + MoveRequired = false, + }; + + Assert.False(moveFunc(slot)); + } + + [Fact] + public void PlayerCountFilter_ShouldReject_WhenHigherThanMaxPlayers() + { + PlayerCountFilter playerCountFilter = new(maxPlayers: 2); + Func countFunc = playerCountFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + MinimumPlayers = 1, + MaximumPlayers = 4, + }; + + Assert.False(countFunc(slot)); + } + + [Fact] + public void PlayerCountFilter_ShouldReject_WhenLowerThanMinPlayers() + { + PlayerCountFilter playerCountFilter = new(minPlayers: 2); + Func countFunc = playerCountFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + MinimumPlayers = 1, + MaximumPlayers = 4, + }; + + Assert.False(countFunc(slot)); + } + + [Fact] + public void PlayerCountFilter_ShouldAccept_WhenLowerThanMaxPlayers() + { + PlayerCountFilter playerCountFilter = new(maxPlayers: 3); + Func countFunc = playerCountFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + MinimumPlayers = 1, + MaximumPlayers = 2, + }; + + Assert.True(countFunc(slot)); + } + + [Fact] + public void PlayerCountFilter_ShouldAccept_WhenHigherThanMinPlayers() + { + PlayerCountFilter playerCountFilter = new(minPlayers: 2); + Func countFunc = playerCountFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + MinimumPlayers = 3, + MaximumPlayers = 4, + }; + + Assert.True(countFunc(slot)); + } + + [Fact] + public void ResultTypeFilter_ShouldReject_WhenSlotNotPresent() + { + ResultTypeFilter resultFilter = new(); + Func resultFunc = resultFilter.GetPredicate().Compile(); + + SlotEntity slot = new(); + + Assert.False(resultFunc(slot)); + } + + [Fact] + public void ResultTypeFilter_ShouldAccept_WhenSlotPresent() + { + ResultTypeFilter resultFilter = new("slot"); + Func resultFunc = resultFilter.GetPredicate().Compile(); + + SlotEntity slot = new(); + + Assert.True(resultFunc(slot)); + } + + [Fact] + public void SlotIdFilter_ShouldReject_WhenSlotIdNotPresent() + { + SlotIdFilter idFilter = new(new List + { + 2, + }); + Func idFunc = idFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + SlotId = 1, + }; + + Assert.False(idFunc(slot)); + } + + [Fact] + public void SlotIdFilter_ShouldAccept_WhenSlotIdPresent() + { + SlotIdFilter idFilter = new(new List + { + 2, + }); + Func idFunc = idFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + SlotId = 2, + }; + + Assert.True(idFunc(slot)); + } + + [Fact] + public void SlotTypeFilter_ShouldAccept_WhenSlotTypeMatches() + { + SlotTypeFilter slotTypeFilter = new(SlotType.User); + Func typeFunc = slotTypeFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + Type = SlotType.User, + }; + + Assert.True(typeFunc(slot)); + } + + [Fact] + public void SlotTypeFilter_ShouldAccept_WhenSlotTypeDoesNotMatch() + { + SlotTypeFilter slotTypeFilter = new(SlotType.User); + Func typeFunc = slotTypeFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + Type = SlotType.Developer, + }; + + Assert.False(typeFunc(slot)); + } + + [Fact] + public void SubLevelFilter_ShouldAccept_WhenUserIsCreator_AndNotSubLevel() + { + SubLevelFilter subLevelFilter = new(2); + Func subLevelFunc = subLevelFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + CreatorId = 2, + SubLevel = false, + }; + + Assert.True(subLevelFunc(slot)); + } + + [Fact] + public void SubLevelFilter_ShouldAccept_WhenUserIsCreator_AndSubLevel() + { + SubLevelFilter subLevelFilter = new(2); + Func subLevelFunc = subLevelFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + CreatorId = 2, + SubLevel = true, + }; + + Assert.True(subLevelFunc(slot)); + } + + [Fact] + public void SubLevelFilter_ShouldReject_WhenUserIsNotCreator_AndSubLevel() + { + SubLevelFilter subLevelFilter = new(2); + Func subLevelFunc = subLevelFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + CreatorId = 1, + SubLevel = true, + }; + + Assert.False(subLevelFunc(slot)); + } + + [Fact] + public void SubLevelFilter_ShouldAccept_WhenUserIsNotCreator_AndNotSubLevel() + { + SubLevelFilter subLevelFilter = new(2); + Func subLevelFunc = subLevelFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + CreatorId = 1, + SubLevel = false, + }; + + Assert.True(subLevelFunc(slot)); + } + + [Fact] + public void TeamPickFilter_ShouldAccept_WhenTeamPick() + { + TeamPickFilter teamPickFilter = new(); + Func teamPickFunc = teamPickFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + TeamPickTime = 1, + }; + + Assert.True(teamPickFunc(slot)); + } + + [Fact] + public void TeamPickFilter_ShouldReject_WhenNotTeamPick() + { + TeamPickFilter teamPickFilter = new(); + Func teamPickFunc = teamPickFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + TeamPickTime = 0, + }; + + Assert.False(teamPickFunc(slot)); + } + + [Fact] + public void TextFilter_ShouldAccept_WhenDescriptionContainsText() + { + TextFilter textFilter = new("test"); + Func textFunc = textFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + Description = "unit test", + }; + + Assert.True(textFunc(slot)); + } + + [Fact] + public void TextFilter_ShouldReject_WhenDescriptionDoesNotContainText() + { + TextFilter textFilter = new("test"); + Func textFunc = textFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + Description = "fraction exam", + }; + + Assert.False(textFunc(slot)); + } + + [Fact] + public void TextFilter_ShouldAccept_WhenNameContainsText() + { + TextFilter textFilter = new("test"); + Func textFunc = textFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + Name = "unit test", + }; + + Assert.True(textFunc(slot)); + } + + [Fact] + public void TextFilter_ShouldReject_WhenNameDoesNotContainText() + { + TextFilter textFilter = new("test"); + Func textFunc = textFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + Name = "fraction exam", + }; + + Assert.False(textFunc(slot)); + } + + [Fact] + public void TextFilter_ShouldAccept_WhenIdContainsText() + { + TextFilter textFilter = new("21"); + Func textFunc = textFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + SlotId = 21, + }; + + Assert.True(textFunc(slot)); + } + + [Fact] + public void TextFilter_ShouldReject_WhenIdDoesNotContainText() + { + TextFilter textFilter = new("21"); + Func textFunc = textFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + SlotId = 19, + }; + + Assert.False(textFunc(slot)); + } + + [Fact] + public void TextFilter_ShouldAccept_WhenCreatorUsernameContainsText() + { + TextFilter textFilter = new("test"); + Func textFunc = textFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + Creator = new UserEntity + { + Username = "test", + }, + }; + + Assert.True(textFunc(slot)); + } + + [Fact] + public void TextFilter_ShouldReject_WhenCreatorUsernameDoesNotContainText() + { + TextFilter textFilter = new("test"); + Func textFunc = textFilter.GetPredicate().Compile(); + + SlotEntity slot = new() + { + Creator = new UserEntity + { + Username = "bruh", + }, + }; + + Assert.False(textFunc(slot)); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests/Unit/LocationTests.cs b/ProjectLighthouse.Tests/Unit/LocationTests.cs index a97b80af..061a21c7 100644 --- a/ProjectLighthouse.Tests/Unit/LocationTests.cs +++ b/ProjectLighthouse.Tests/Unit/LocationTests.cs @@ -1,85 +1,85 @@ -using System.IO; -using System.Xml.Serialization; -using LBPUnion.ProjectLighthouse.Types.Entities.Level; -using LBPUnion.ProjectLighthouse.Types.Entities.Profile; -using LBPUnion.ProjectLighthouse.Types.Misc; -using LBPUnion.ProjectLighthouse.Types.Serialization; -using Xunit; - -namespace LBPUnion.ProjectLighthouse.Tests.Unit; - -[Trait("Category", "Unit")] -public class LocationTests -{ - [Fact] - public void ShouldSetAndReadUserLocation() - { - Location expected = new() - { - X = 1000, - Y = 5000, - }; - UserEntity user = new() - { - Location = new Location - { - X = expected.X, - Y = expected.Y, - }, - }; - Assert.True(user.Location.X == expected.X); - Assert.True(user.Location.Y == expected.Y); - Assert.True(user.LocationPacked == 4_294_967_301_000); - } - - [Fact] - public void ShouldSetAndReadSlotLocation() - { - Location expected = new() - { - X = 1000, - Y = 5000, - }; - SlotEntity slot = new() - { - Location = new Location - { - X = expected.X, - Y = expected.Y, - }, - }; - Assert.True(slot.Location.X == expected.X); - Assert.True(slot.Location.Y == expected.Y); - Assert.True(slot.LocationPacked == 4_294_967_301_000); - } - - [Fact] - public void ShouldReadLocationAfterDeserialization() - { - XmlSerializer deserializer = new(typeof(GameUserSlot)); - const string slotData = "testtest40009000"; - - GameUserSlot? deserialized = (GameUserSlot?)deserializer.Deserialize(new StringReader(slotData)); - Assert.True(deserialized != null); - Assert.True(deserialized.Name == "test"); - Assert.True(deserialized.Location.X == 4000); - Assert.True(deserialized.Location.Y == 9000); - SlotEntity entity = SlotBase.ConvertToEntity(deserialized); - Assert.True(entity.LocationPacked == 17_179_869_193_000); - } - - [Fact] - public void ShouldDeserializeEmptyLocation() - { - XmlSerializer deserializer = new(typeof(GameUserSlot)); - const string slotData = "test"; - - GameUserSlot? deserialized = (GameUserSlot?)deserializer.Deserialize(new StringReader(slotData)); - Assert.True(deserialized != null); - Assert.True(deserialized.Name == "test"); - Assert.True(deserialized.Location.X == 0); - Assert.True(deserialized.Location.Y == 0); - SlotEntity entity = SlotBase.ConvertToEntity(deserialized); - Assert.True(entity.LocationPacked == 0); - } +using System.IO; +using System.Xml.Serialization; +using LBPUnion.ProjectLighthouse.Types.Entities.Level; +using LBPUnion.ProjectLighthouse.Types.Entities.Profile; +using LBPUnion.ProjectLighthouse.Types.Misc; +using LBPUnion.ProjectLighthouse.Types.Serialization; +using Xunit; + +namespace LBPUnion.ProjectLighthouse.Tests.Unit; + +[Trait("Category", "Unit")] +public class LocationTests +{ + [Fact] + public void ShouldSetAndReadUserLocation() + { + Location expected = new() + { + X = 1000, + Y = 5000, + }; + UserEntity user = new() + { + Location = new Location + { + X = expected.X, + Y = expected.Y, + }, + }; + Assert.True(user.Location.X == expected.X); + Assert.True(user.Location.Y == expected.Y); + Assert.True(user.LocationPacked == 4_294_967_301_000); + } + + [Fact] + public void ShouldSetAndReadSlotLocation() + { + Location expected = new() + { + X = 1000, + Y = 5000, + }; + SlotEntity slot = new() + { + Location = new Location + { + X = expected.X, + Y = expected.Y, + }, + }; + Assert.True(slot.Location.X == expected.X); + Assert.True(slot.Location.Y == expected.Y); + Assert.True(slot.LocationPacked == 4_294_967_301_000); + } + + [Fact] + public void ShouldReadLocationAfterDeserialization() + { + XmlSerializer deserializer = new(typeof(GameUserSlot)); + const string slotData = "testtest40009000"; + + GameUserSlot? deserialized = (GameUserSlot?)deserializer.Deserialize(new StringReader(slotData)); + Assert.True(deserialized != null); + Assert.True(deserialized.Name == "test"); + Assert.True(deserialized.Location.X == 4000); + Assert.True(deserialized.Location.Y == 9000); + SlotEntity entity = SlotBase.ConvertToEntity(deserialized); + Assert.True(entity.LocationPacked == 17_179_869_193_000); + } + + [Fact] + public void ShouldDeserializeEmptyLocation() + { + XmlSerializer deserializer = new(typeof(GameUserSlot)); + const string slotData = "test"; + + GameUserSlot? deserialized = (GameUserSlot?)deserializer.Deserialize(new StringReader(slotData)); + Assert.True(deserialized != null); + Assert.True(deserialized.Name == "test"); + Assert.True(deserialized.Location.X == 0); + Assert.True(deserialized.Location.Y == 0); + SlotEntity entity = SlotBase.ConvertToEntity(deserialized); + Assert.True(entity.LocationPacked == 0); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests/Unit/ModerationTests.cs b/ProjectLighthouse.Tests/Unit/ModerationTests.cs index c574abf4..15a0c0b9 100644 --- a/ProjectLighthouse.Tests/Unit/ModerationTests.cs +++ b/ProjectLighthouse.Tests/Unit/ModerationTests.cs @@ -1,86 +1,86 @@ -using System; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Administration.Maintenance.RepeatingTasks; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Tests.Helpers; -using LBPUnion.ProjectLighthouse.Types.Entities.Moderation; -using Microsoft.EntityFrameworkCore; -using Xunit; - -namespace LBPUnion.ProjectLighthouse.Tests.Unit; - -[Trait("Category", "Unit")] -public class ModerationTests -{ - [Fact] - public async Task DismissExpiredCases_ShouldDismissExpiredCase() - { - await using DatabaseContext database = await MockHelper.GetTestDatabase(); - - ModerationCaseEntity @case = new() - { - CaseId = 1, - CreatorId = 1, - ExpiresAt = DateTime.UnixEpoch, - CreatorUsername = "unitTestUser", - }; - - database.Cases.Add(@case); - - await database.SaveChangesAsync(); - - DismissExpiredCasesTask task = new(); - await task.Run(database); - - Assert.NotNull(await database.Cases.FirstOrDefaultAsync(c => c.CaseId == 1 && c.DismissedAt != null)); - } - - [Fact] - public async Task DismissExpiredCases_ShouldNotDismissActiveCase() - { - await using DatabaseContext database = await MockHelper.GetTestDatabase(); - - ModerationCaseEntity @case = new() - { - CaseId = 2, - CreatorId = 1, - ExpiresAt = DateTime.UtcNow.AddHours(1), - CreatorUsername = "unitTestUser", - }; - - database.Cases.Add(@case); - - await database.SaveChangesAsync(); - - DismissExpiredCasesTask task = new(); - await task.Run(database); - - Assert.NotNull(await database.Cases.FirstOrDefaultAsync(c => c.CaseId == 2 && c.DismissedAt == null)); - } - - [Fact] - public async Task DismissExpiredCases_ShouldNotDismissAlreadyDismissedCase() - { - await using DatabaseContext database = await MockHelper.GetTestDatabase(); - - ModerationCaseEntity @case = new() - { - CaseId = 3, - CreatorId = 1, - ExpiresAt = DateTime.UnixEpoch, - DismissedAt = DateTime.UnixEpoch, - CreatorUsername = "unitTestUser", - }; - - database.Cases.Add(@case); - - await database.SaveChangesAsync(); - - DismissExpiredCasesTask task = new(); - await task.Run(database); - - // check that the case was not dismissed again by comparing original time to new time - Assert.NotNull( - await database.Cases.FirstOrDefaultAsync(c => c.CaseId == 3 && c.DismissedAt == DateTime.UnixEpoch)); - } +using System; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Administration.Maintenance.RepeatingTasks; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Tests.Helpers; +using LBPUnion.ProjectLighthouse.Types.Entities.Moderation; +using Microsoft.EntityFrameworkCore; +using Xunit; + +namespace LBPUnion.ProjectLighthouse.Tests.Unit; + +[Trait("Category", "Unit")] +public class ModerationTests +{ + [Fact] + public async Task DismissExpiredCases_ShouldDismissExpiredCase() + { + await using DatabaseContext database = await MockHelper.GetTestDatabase(); + + ModerationCaseEntity @case = new() + { + CaseId = 1, + CreatorId = 1, + ExpiresAt = DateTime.UnixEpoch, + CreatorUsername = "unitTestUser", + }; + + database.Cases.Add(@case); + + await database.SaveChangesAsync(); + + DismissExpiredCasesTask task = new(); + await task.Run(database); + + Assert.NotNull(await database.Cases.FirstOrDefaultAsync(c => c.CaseId == 1 && c.DismissedAt != null)); + } + + [Fact] + public async Task DismissExpiredCases_ShouldNotDismissActiveCase() + { + await using DatabaseContext database = await MockHelper.GetTestDatabase(); + + ModerationCaseEntity @case = new() + { + CaseId = 2, + CreatorId = 1, + ExpiresAt = DateTime.UtcNow.AddHours(1), + CreatorUsername = "unitTestUser", + }; + + database.Cases.Add(@case); + + await database.SaveChangesAsync(); + + DismissExpiredCasesTask task = new(); + await task.Run(database); + + Assert.NotNull(await database.Cases.FirstOrDefaultAsync(c => c.CaseId == 2 && c.DismissedAt == null)); + } + + [Fact] + public async Task DismissExpiredCases_ShouldNotDismissAlreadyDismissedCase() + { + await using DatabaseContext database = await MockHelper.GetTestDatabase(); + + ModerationCaseEntity @case = new() + { + CaseId = 3, + CreatorId = 1, + ExpiresAt = DateTime.UnixEpoch, + DismissedAt = DateTime.UnixEpoch, + CreatorUsername = "unitTestUser", + }; + + database.Cases.Add(@case); + + await database.SaveChangesAsync(); + + DismissExpiredCasesTask task = new(); + await task.Run(database); + + // check that the case was not dismissed again by comparing original time to new time + Assert.NotNull( + await database.Cases.FirstOrDefaultAsync(c => c.CaseId == 3 && c.DismissedAt == DateTime.UnixEpoch)); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests/Unit/PaginationTests.cs b/ProjectLighthouse.Tests/Unit/PaginationTests.cs index de591d94..5518972e 100644 --- a/ProjectLighthouse.Tests/Unit/PaginationTests.cs +++ b/ProjectLighthouse.Tests/Unit/PaginationTests.cs @@ -1,238 +1,238 @@ -using System.Collections.Generic; -using System.Linq; -using LBPUnion.ProjectLighthouse.Configuration; -using LBPUnion.ProjectLighthouse.Extensions; -using LBPUnion.ProjectLighthouse.Types.Filter; -using LBPUnion.ProjectLighthouse.Types.Serialization; -using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.Primitives; -using Xunit; - -namespace LBPUnion.ProjectLighthouse.Tests.Unit; - -[Trait("Category", "Unit")] -public class PaginationTests -{ - [Fact] - public void GetPaginationData_IsReadFromQuery() - { - DefaultHttpContext defaultHttpContext = new() - { - Request = - { - Query = new QueryCollection(new Dictionary - { - { - "pageStart", new StringValues("10") - }, - { - "pageSize", new StringValues("15") - }, - }), - }, - }; - - PaginationData pageData = defaultHttpContext.Request.GetPaginationData(); - - const int expectedPageStart = 10; - const int expectedPageSize = 15; - - Assert.Equal(expectedPageStart, pageData.PageStart); - Assert.Equal(expectedPageSize, pageData.PageSize); - } - - [Fact] - public void GetPaginationData_IsPageStartSetToDefault_WhenMissing() - { - DefaultHttpContext defaultHttpContext = new() - { - Request = - { - Query = new QueryCollection(new Dictionary - { - { - "pageSize", new StringValues("15") - }, - }), - }, - }; - PaginationData pageData = defaultHttpContext.Request.GetPaginationData(); - - const int expectedPageStart = 0; - const int expectedPageSize = 15; - - Assert.Equal(expectedPageStart, pageData.PageStart); - Assert.Equal(expectedPageSize, pageData.PageSize); - } - - [Fact] - public void GetPaginationData_IsPageSizeSetToDefault_WhenMissing() - { - ServerConfiguration.Instance.UserGeneratedContentLimits.EntitledSlots = 50; - - DefaultHttpContext defaultHttpContext = new() - { - Request = - { - Query = new QueryCollection(new Dictionary - { - { - "pageStart", new StringValues("10") - }, - }), - }, - }; - PaginationData pageData = defaultHttpContext.Request.GetPaginationData(); - - const int expectedPageStart = 10; - const int expectedPageSize = 50; - - Assert.Equal(expectedPageStart, pageData.PageStart); - Assert.Equal(expectedPageSize, pageData.PageSize); - } - - [Fact] - public void GetPaginationData_NegativeValuesAreSetToZero() - { - ServerConfiguration.Instance.UserGeneratedContentLimits.EntitledSlots = 50; - - DefaultHttpContext defaultHttpContext = new() - { - Request = - { - Query = new QueryCollection(new Dictionary - { - { - "pageStart", new StringValues("-10") - }, - { - "pageSize", new StringValues("-10") - }, - }), - }, - }; - PaginationData pageData = defaultHttpContext.Request.GetPaginationData(); - - const int expectedPageStart = 0; - const int expectedPageSize = 10; - - Assert.Equal(expectedPageStart, pageData.PageStart); - Assert.Equal(expectedPageSize, pageData.PageSize); - } - - [Fact] - public void ApplyPagination_ShouldApplyCorrectPagination() - { - List users = new(); - for (int i = 0; i < 30; i++) - { - users.Add(new GameUser - { - UserId = i+1, - }); - } - - PaginationData pageData = new() - { - PageSize = 5, - PageStart = 6, - }; - List pagedUsers = users.AsQueryable().ApplyPagination(pageData).ToList(); - - Assert.Equal(pageData.PageSize, pagedUsers.Count); - Assert.Equal(6, pagedUsers[0].UserId); - Assert.Equal(10, pagedUsers[4].UserId); - } - - [Fact] - public void ApplyPagination_ShouldClampPageStart_WhenNegative() - { - List users = new(); - for (int i = 0; i < 30; i++) - { - users.Add(new GameUser - { - UserId = i + 1, - }); - } - - PaginationData pageData = new() - { - PageSize = 5, - PageStart = -5, - }; - List pagedUsers = users.AsQueryable().ApplyPagination(pageData).ToList(); - - Assert.Equal(pageData.PageSize, pagedUsers.Count); - Assert.Equal(1, pagedUsers[0].UserId); - Assert.Equal(5, pagedUsers[4].UserId); - } - - [Fact] - public void ApplyPagination_ShouldReturnEmpty_WhenPageSizeNegative() - { - List users = new(); - for (int i = 0; i < 30; i++) - { - users.Add(new GameUser - { - UserId = i + 1, - }); - } - - PaginationData pageData = new() - { - PageSize = -5, - PageStart = 0, - }; - List pagedUsers = users.AsQueryable().ApplyPagination(pageData).ToList(); - - Assert.Empty(pagedUsers); - } - - [Fact] - public void ApplyPagination_ShouldClampPageSize_WhenSizeExceedsMaxElements() - { - List users = new(); - for (int i = 0; i < 30; i++) - { - users.Add(new GameUser - { - UserId = i + 1, - }); - } - - PaginationData pageData = new() - { - PageSize = 10, - PageStart = 0, - MaxElements = 1, - }; - List pagedUsers = users.AsQueryable().ApplyPagination(pageData).ToList(); - - Assert.Single(pagedUsers); - } - - [Fact] - public void ApplyPagination_ShouldClampPageSize_WhenSizeExceedsInternalLimit() - { - List users = new(); - for (int i = 0; i < 1001; i++) - { - users.Add(new GameUser - { - UserId = i + 1, - }); - } - - PaginationData pageData = new() - { - PageSize = int.MaxValue, - PageStart = 0, - MaxElements = int.MaxValue, - }; - List pagedUsers = users.AsQueryable().ApplyPagination(pageData).ToList(); - - Assert.Equal(1000, pagedUsers.Count); - } +using System.Collections.Generic; +using System.Linq; +using LBPUnion.ProjectLighthouse.Configuration; +using LBPUnion.ProjectLighthouse.Extensions; +using LBPUnion.ProjectLighthouse.Types.Filter; +using LBPUnion.ProjectLighthouse.Types.Serialization; +using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Primitives; +using Xunit; + +namespace LBPUnion.ProjectLighthouse.Tests.Unit; + +[Trait("Category", "Unit")] +public class PaginationTests +{ + [Fact] + public void GetPaginationData_IsReadFromQuery() + { + DefaultHttpContext defaultHttpContext = new() + { + Request = + { + Query = new QueryCollection(new Dictionary + { + { + "pageStart", new StringValues("10") + }, + { + "pageSize", new StringValues("15") + }, + }), + }, + }; + + PaginationData pageData = defaultHttpContext.Request.GetPaginationData(); + + const int expectedPageStart = 10; + const int expectedPageSize = 15; + + Assert.Equal(expectedPageStart, pageData.PageStart); + Assert.Equal(expectedPageSize, pageData.PageSize); + } + + [Fact] + public void GetPaginationData_IsPageStartSetToDefault_WhenMissing() + { + DefaultHttpContext defaultHttpContext = new() + { + Request = + { + Query = new QueryCollection(new Dictionary + { + { + "pageSize", new StringValues("15") + }, + }), + }, + }; + PaginationData pageData = defaultHttpContext.Request.GetPaginationData(); + + const int expectedPageStart = 0; + const int expectedPageSize = 15; + + Assert.Equal(expectedPageStart, pageData.PageStart); + Assert.Equal(expectedPageSize, pageData.PageSize); + } + + [Fact] + public void GetPaginationData_IsPageSizeSetToDefault_WhenMissing() + { + ServerConfiguration.Instance.UserGeneratedContentLimits.EntitledSlots = 50; + + DefaultHttpContext defaultHttpContext = new() + { + Request = + { + Query = new QueryCollection(new Dictionary + { + { + "pageStart", new StringValues("10") + }, + }), + }, + }; + PaginationData pageData = defaultHttpContext.Request.GetPaginationData(); + + const int expectedPageStart = 10; + const int expectedPageSize = 50; + + Assert.Equal(expectedPageStart, pageData.PageStart); + Assert.Equal(expectedPageSize, pageData.PageSize); + } + + [Fact] + public void GetPaginationData_NegativeValuesAreSetToZero() + { + ServerConfiguration.Instance.UserGeneratedContentLimits.EntitledSlots = 50; + + DefaultHttpContext defaultHttpContext = new() + { + Request = + { + Query = new QueryCollection(new Dictionary + { + { + "pageStart", new StringValues("-10") + }, + { + "pageSize", new StringValues("-10") + }, + }), + }, + }; + PaginationData pageData = defaultHttpContext.Request.GetPaginationData(); + + const int expectedPageStart = 0; + const int expectedPageSize = 10; + + Assert.Equal(expectedPageStart, pageData.PageStart); + Assert.Equal(expectedPageSize, pageData.PageSize); + } + + [Fact] + public void ApplyPagination_ShouldApplyCorrectPagination() + { + List users = new(); + for (int i = 0; i < 30; i++) + { + users.Add(new GameUser + { + UserId = i+1, + }); + } + + PaginationData pageData = new() + { + PageSize = 5, + PageStart = 6, + }; + List pagedUsers = users.AsQueryable().ApplyPagination(pageData).ToList(); + + Assert.Equal(pageData.PageSize, pagedUsers.Count); + Assert.Equal(6, pagedUsers[0].UserId); + Assert.Equal(10, pagedUsers[4].UserId); + } + + [Fact] + public void ApplyPagination_ShouldClampPageStart_WhenNegative() + { + List users = new(); + for (int i = 0; i < 30; i++) + { + users.Add(new GameUser + { + UserId = i + 1, + }); + } + + PaginationData pageData = new() + { + PageSize = 5, + PageStart = -5, + }; + List pagedUsers = users.AsQueryable().ApplyPagination(pageData).ToList(); + + Assert.Equal(pageData.PageSize, pagedUsers.Count); + Assert.Equal(1, pagedUsers[0].UserId); + Assert.Equal(5, pagedUsers[4].UserId); + } + + [Fact] + public void ApplyPagination_ShouldReturnEmpty_WhenPageSizeNegative() + { + List users = new(); + for (int i = 0; i < 30; i++) + { + users.Add(new GameUser + { + UserId = i + 1, + }); + } + + PaginationData pageData = new() + { + PageSize = -5, + PageStart = 0, + }; + List pagedUsers = users.AsQueryable().ApplyPagination(pageData).ToList(); + + Assert.Empty(pagedUsers); + } + + [Fact] + public void ApplyPagination_ShouldClampPageSize_WhenSizeExceedsMaxElements() + { + List users = new(); + for (int i = 0; i < 30; i++) + { + users.Add(new GameUser + { + UserId = i + 1, + }); + } + + PaginationData pageData = new() + { + PageSize = 10, + PageStart = 0, + MaxElements = 1, + }; + List pagedUsers = users.AsQueryable().ApplyPagination(pageData).ToList(); + + Assert.Single(pagedUsers); + } + + [Fact] + public void ApplyPagination_ShouldClampPageSize_WhenSizeExceedsInternalLimit() + { + List users = new(); + for (int i = 0; i < 1001; i++) + { + users.Add(new GameUser + { + UserId = i + 1, + }); + } + + PaginationData pageData = new() + { + PageSize = int.MaxValue, + PageStart = 0, + MaxElements = int.MaxValue, + }; + List pagedUsers = users.AsQueryable().ApplyPagination(pageData).ToList(); + + Assert.Equal(1000, pagedUsers.Count); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests/Unit/RepeatingTaskTests.cs b/ProjectLighthouse.Tests/Unit/RepeatingTaskTests.cs index 678f434c..6499692f 100644 --- a/ProjectLighthouse.Tests/Unit/RepeatingTaskTests.cs +++ b/ProjectLighthouse.Tests/Unit/RepeatingTaskTests.cs @@ -1,120 +1,120 @@ -using System; -using System.Collections.Generic; -using System.Threading; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Database; -using LBPUnion.ProjectLighthouse.Services; -using LBPUnion.ProjectLighthouse.Types.Maintenance; -using Microsoft.Extensions.DependencyInjection; -using Moq; -using Xunit; - -namespace LBPUnion.ProjectLighthouse.Tests.Unit; - -[Trait("Category", "Unit")] -public class RepeatingTaskTests -{ - private class TestTask : IRepeatingTask - { - public string Name { get; init; } = ""; - public TimeSpan RepeatInterval => TimeSpan.FromSeconds(5); - public DateTime LastRan { get; set; } - public Task Run(DatabaseContext database) => Task.CompletedTask; - } - - [Fact] - public void GetNextTask_ShouldReturnNull_WhenTaskListEmpty() - { - List tasks = new(); - IServiceProvider provider = new DefaultServiceProviderFactory().CreateServiceProvider(new ServiceCollection()); - RepeatingTaskService service = new(provider, tasks); - - bool gotTask = service.TryGetNextTask(out IRepeatingTask? outTask); - Assert.False(gotTask); - Assert.Null(outTask); - } - - [Fact] - public void GetNextTask_ShouldReturnTask_WhenTaskListContainsOne() - { - List tasks = new() - { - new TestTask(), - }; - IServiceProvider provider = new DefaultServiceProviderFactory().CreateServiceProvider(new ServiceCollection()); - RepeatingTaskService service = new(provider, tasks); - - bool gotTask = service.TryGetNextTask(out IRepeatingTask? outTask); - Assert.True(gotTask); - Assert.NotNull(outTask); - } - - [Fact] - public void GetNextTask_ShouldReturnShortestTask_WhenTaskListContainsMultiple() - { - List tasks = new() - { - new TestTask - { - Name = "Task 1", - LastRan = DateTime.UtcNow, - }, - new TestTask - { - Name = "Task 2", - LastRan = DateTime.UtcNow.AddMinutes(1), - }, - new TestTask - { - Name = "Task 3", - LastRan = DateTime.UtcNow.AddMinutes(-1), - }, - }; - IServiceProvider provider = new DefaultServiceProviderFactory().CreateServiceProvider(new ServiceCollection()); - RepeatingTaskService service = new(provider, tasks); - - bool gotTask = service.TryGetNextTask(out IRepeatingTask? outTask); - Assert.True(gotTask); - Assert.NotNull(outTask); - Assert.Equal("Task 3", outTask.Name); - } - - [Fact] - public async Task BackgroundService_ShouldExecuteTask_AndUpdateTime() - { - Mock taskMock = new(); - taskMock.Setup(t => t.Run(It.IsAny())).Returns(Task.CompletedTask); - taskMock.SetupGet(t => t.RepeatInterval).Returns(TimeSpan.FromSeconds(10)); - TaskCompletionSource taskCompletion = new(); - DateTime lastRan = default; - taskMock.SetupSet(t => t.LastRan = It.IsAny()) - .Callback(time => - { - lastRan = time; - taskCompletion.TrySetResult(); - }); - taskMock.SetupGet(t => t.LastRan).Returns(() => lastRan); - List tasks = new() - { - taskMock.Object, - }; - ServiceCollection serviceCollection = new(); - serviceCollection.AddScoped(_ => new Mock().Object); - IServiceProvider provider = new DefaultServiceProviderFactory().CreateServiceProvider(serviceCollection); - - RepeatingTaskService service = new(provider, tasks); - - CancellationTokenSource stoppingToken = new(); - - await service.StartAsync(stoppingToken.Token); - - await taskCompletion.Task; - stoppingToken.Cancel(); - - Assert.NotNull(service.ExecuteTask); - await service.ExecuteTask; - - taskMock.Verify(x => x.Run(It.IsAny()), Times.Once); - taskMock.VerifySet(x => x.LastRan = It.IsAny(), Times.Once()); - } +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Database; +using LBPUnion.ProjectLighthouse.Services; +using LBPUnion.ProjectLighthouse.Types.Maintenance; +using Microsoft.Extensions.DependencyInjection; +using Moq; +using Xunit; + +namespace LBPUnion.ProjectLighthouse.Tests.Unit; + +[Trait("Category", "Unit")] +public class RepeatingTaskTests +{ + private class TestTask : IRepeatingTask + { + public string Name { get; init; } = ""; + public TimeSpan RepeatInterval => TimeSpan.FromSeconds(5); + public DateTime LastRan { get; set; } + public Task Run(DatabaseContext database) => Task.CompletedTask; + } + + [Fact] + public void GetNextTask_ShouldReturnNull_WhenTaskListEmpty() + { + List tasks = new(); + IServiceProvider provider = new DefaultServiceProviderFactory().CreateServiceProvider(new ServiceCollection()); + RepeatingTaskService service = new(provider, tasks); + + bool gotTask = service.TryGetNextTask(out IRepeatingTask? outTask); + Assert.False(gotTask); + Assert.Null(outTask); + } + + [Fact] + public void GetNextTask_ShouldReturnTask_WhenTaskListContainsOne() + { + List tasks = new() + { + new TestTask(), + }; + IServiceProvider provider = new DefaultServiceProviderFactory().CreateServiceProvider(new ServiceCollection()); + RepeatingTaskService service = new(provider, tasks); + + bool gotTask = service.TryGetNextTask(out IRepeatingTask? outTask); + Assert.True(gotTask); + Assert.NotNull(outTask); + } + + [Fact] + public void GetNextTask_ShouldReturnShortestTask_WhenTaskListContainsMultiple() + { + List tasks = new() + { + new TestTask + { + Name = "Task 1", + LastRan = DateTime.UtcNow, + }, + new TestTask + { + Name = "Task 2", + LastRan = DateTime.UtcNow.AddMinutes(1), + }, + new TestTask + { + Name = "Task 3", + LastRan = DateTime.UtcNow.AddMinutes(-1), + }, + }; + IServiceProvider provider = new DefaultServiceProviderFactory().CreateServiceProvider(new ServiceCollection()); + RepeatingTaskService service = new(provider, tasks); + + bool gotTask = service.TryGetNextTask(out IRepeatingTask? outTask); + Assert.True(gotTask); + Assert.NotNull(outTask); + Assert.Equal("Task 3", outTask.Name); + } + + [Fact] + public async Task BackgroundService_ShouldExecuteTask_AndUpdateTime() + { + Mock taskMock = new(); + taskMock.Setup(t => t.Run(It.IsAny())).Returns(Task.CompletedTask); + taskMock.SetupGet(t => t.RepeatInterval).Returns(TimeSpan.FromSeconds(10)); + TaskCompletionSource taskCompletion = new(); + DateTime lastRan = default; + taskMock.SetupSet(t => t.LastRan = It.IsAny()) + .Callback(time => + { + lastRan = time; + taskCompletion.TrySetResult(); + }); + taskMock.SetupGet(t => t.LastRan).Returns(() => lastRan); + List tasks = new() + { + taskMock.Object, + }; + ServiceCollection serviceCollection = new(); + serviceCollection.AddScoped(_ => new Mock().Object); + IServiceProvider provider = new DefaultServiceProviderFactory().CreateServiceProvider(serviceCollection); + + RepeatingTaskService service = new(provider, tasks); + + CancellationTokenSource stoppingToken = new(); + + await service.StartAsync(stoppingToken.Token); + + await taskCompletion.Task; + stoppingToken.Cancel(); + + Assert.NotNull(service.ExecuteTask); + await service.ExecuteTask; + + taskMock.Verify(x => x.Run(It.IsAny()), Times.Once); + taskMock.VerifySet(x => x.LastRan = It.IsAny(), Times.Once()); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests/Unit/ResourceTests.cs b/ProjectLighthouse.Tests/Unit/ResourceTests.cs index 314a2475..bbfadd4b 100644 --- a/ProjectLighthouse.Tests/Unit/ResourceTests.cs +++ b/ProjectLighthouse.Tests/Unit/ResourceTests.cs @@ -1,100 +1,100 @@ -using System; -using System.IO; -using System.Threading.Tasks; -using LBPUnion.ProjectLighthouse.Files; -using LBPUnion.ProjectLighthouse.Types.Resources; -using Xunit; - -namespace LBPUnion.ProjectLighthouse.Tests.Unit; - -[Trait("Category", "Unit")] -public class ResourceTests -{ - - [Fact] - public void IsResourceValid_ReturnsTrue_ForValidResource() - { - string[] resources = { - "g123456", "g123", "98f54143ab4e86b28c3afee0f50f2f51cfb2ed38", "0ebe53fc820a544798000188d39bfda94f53fe37" - }; - Assert.Multiple(() => - { - foreach (string resource in resources) - { - Assert.True(FileHelper.IsResourceValid(resource)); - } - }); - - } - - [Fact] - public void IsResourceValid_ReturnsFalse_ForInvalidResource() - { - string[] resources = - { - "G0234", "g123456789012334567", "b28c3afee0f50f2f51cfb2ed38", "../Test", - }; - Assert.Multiple(() => - { - foreach (string resource in resources) - { - Assert.False(FileHelper.IsResourceValid(resource)); - } - }); - } - - [Fact] - public void ShouldNotDeleteResourceFolder() - { - FileHelper.EnsureDirectoryCreated(FileHelper.ResourcePath); - Assert.True(Directory.Exists(FileHelper.ResourcePath)); - FileHelper.DeleteResource(FileHelper.ResourcePath); - Assert.True(Directory.Exists(FileHelper.ResourcePath)); - } - - [Fact] - public void ShouldNotDeleteImagesFolder() - { - FileHelper.EnsureDirectoryCreated(FileHelper.ImagePath); - Assert.True(Directory.Exists(FileHelper.ImagePath)); - FileHelper.DeleteResource(FileHelper.ImagePath); - Assert.True(Directory.Exists(FileHelper.ImagePath)); - } - - [Fact] - public void ShouldNotRecursivelyTraverseImage() - { - string path = Path.Combine(FileHelper.ImagePath, $"..{Path.DirectorySeparatorChar}appsettings.json"); - FileHelper.DeleteResource(path); - Assert.True(File.Exists(Path.Combine(FileHelper.ImagePath, $"..{Path.DirectorySeparatorChar}appsettings.json"))); - } - - [Fact] - public void ShouldNotRecursivelyTraverseResource() - { - string path = Path.Combine(FileHelper.ResourcePath, $"..{Path.DirectorySeparatorChar}appsettings.json"); - FileHelper.DeleteResource(path); - Assert.True(File.Exists(Path.Combine(FileHelper.ResourcePath, $"..{Path.DirectorySeparatorChar}appsettings.json"))); - } - - [Fact] - public async Task ShouldDeleteResourceAndImage() - { - FileHelper.EnsureDirectoryCreated(FileHelper.ResourcePath); - FileHelper.EnsureDirectoryCreated(FileHelper.ImagePath); - string? hash = await FileHelper.ParseBase64Image("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8r8NQDwAFCQGsNA7jBAAAAABJRU5ErkJggg=="); - LbpFile? file = LbpFile.FromHash("ed4e2857a2e315e4487ea976d1b398f57b863ff4"); - Assert.True(file != null); - // Convert resource to png - FileHelper.LbpFileToPNG(file); - - Assert.True(hash != null); - Assert.True(hash.Equals("ed4e2857a2e315e4487ea976d1b398f57b863ff4", StringComparison.InvariantCultureIgnoreCase)); - Assert.True(File.Exists(Path.Combine(FileHelper.ResourcePath, hash))); - Assert.True(File.Exists(Path.Combine(FileHelper.ImagePath, $"{hash}.png"))); - - FileHelper.DeleteResource(hash); - Assert.False(File.Exists(Path.Combine(FileHelper.ResourcePath, hash))); - Assert.False(File.Exists(Path.Combine(FileHelper.ImagePath, $"{hash}.png"))); - } +using System; +using System.IO; +using System.Threading.Tasks; +using LBPUnion.ProjectLighthouse.Files; +using LBPUnion.ProjectLighthouse.Types.Resources; +using Xunit; + +namespace LBPUnion.ProjectLighthouse.Tests.Unit; + +[Trait("Category", "Unit")] +public class ResourceTests +{ + + [Fact] + public void IsResourceValid_ReturnsTrue_ForValidResource() + { + string[] resources = { + "g123456", "g123", "98f54143ab4e86b28c3afee0f50f2f51cfb2ed38", "0ebe53fc820a544798000188d39bfda94f53fe37" + }; + Assert.Multiple(() => + { + foreach (string resource in resources) + { + Assert.True(FileHelper.IsResourceValid(resource)); + } + }); + + } + + [Fact] + public void IsResourceValid_ReturnsFalse_ForInvalidResource() + { + string[] resources = + { + "G0234", "g123456789012334567", "b28c3afee0f50f2f51cfb2ed38", "../Test", + }; + Assert.Multiple(() => + { + foreach (string resource in resources) + { + Assert.False(FileHelper.IsResourceValid(resource)); + } + }); + } + + [Fact] + public void ShouldNotDeleteResourceFolder() + { + FileHelper.EnsureDirectoryCreated(FileHelper.ResourcePath); + Assert.True(Directory.Exists(FileHelper.ResourcePath)); + FileHelper.DeleteResource(FileHelper.ResourcePath); + Assert.True(Directory.Exists(FileHelper.ResourcePath)); + } + + [Fact] + public void ShouldNotDeleteImagesFolder() + { + FileHelper.EnsureDirectoryCreated(FileHelper.ImagePath); + Assert.True(Directory.Exists(FileHelper.ImagePath)); + FileHelper.DeleteResource(FileHelper.ImagePath); + Assert.True(Directory.Exists(FileHelper.ImagePath)); + } + + [Fact] + public void ShouldNotRecursivelyTraverseImage() + { + string path = Path.Combine(FileHelper.ImagePath, $"..{Path.DirectorySeparatorChar}appsettings.json"); + FileHelper.DeleteResource(path); + Assert.True(File.Exists(Path.Combine(FileHelper.ImagePath, $"..{Path.DirectorySeparatorChar}appsettings.json"))); + } + + [Fact] + public void ShouldNotRecursivelyTraverseResource() + { + string path = Path.Combine(FileHelper.ResourcePath, $"..{Path.DirectorySeparatorChar}appsettings.json"); + FileHelper.DeleteResource(path); + Assert.True(File.Exists(Path.Combine(FileHelper.ResourcePath, $"..{Path.DirectorySeparatorChar}appsettings.json"))); + } + + [Fact] + public async Task ShouldDeleteResourceAndImage() + { + FileHelper.EnsureDirectoryCreated(FileHelper.ResourcePath); + FileHelper.EnsureDirectoryCreated(FileHelper.ImagePath); + string? hash = await FileHelper.ParseBase64Image("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8r8NQDwAFCQGsNA7jBAAAAABJRU5ErkJggg=="); + LbpFile? file = LbpFile.FromHash("ed4e2857a2e315e4487ea976d1b398f57b863ff4"); + Assert.True(file != null); + // Convert resource to png + FileHelper.LbpFileToPNG(file); + + Assert.True(hash != null); + Assert.True(hash.Equals("ed4e2857a2e315e4487ea976d1b398f57b863ff4", StringComparison.InvariantCultureIgnoreCase)); + Assert.True(File.Exists(Path.Combine(FileHelper.ResourcePath, hash))); + Assert.True(File.Exists(Path.Combine(FileHelper.ImagePath, $"{hash}.png"))); + + FileHelper.DeleteResource(hash); + Assert.False(File.Exists(Path.Combine(FileHelper.ResourcePath, hash))); + Assert.False(File.Exists(Path.Combine(FileHelper.ImagePath, $"{hash}.png"))); + } } \ No newline at end of file diff --git a/ProjectLighthouse.Tests/bin/Debug/net8.0/CoverletSourceRootsMapping_LBPUnion.ProjectLighthouse.Tests b/ProjectLighthouse.Tests/bin/Debug/net8.0/CoverletSourceRootsMapping_LBPUnion.ProjectLighthouse.Tests new file mode 100644 index 0000000000000000000000000000000000000000..208be3042fb5add65faa6c03f1bbfb3d0fa807b1 GIT binary patch literal 1874 zcmezW&z-@FA%?++!HFS&L4m=TL4m=a!H>a*!IQy{!IeRQ!I2?|!I{B>!IL43!4gdv8ZfFY3~nIW4Y5i9~yYfGViUIs3Pp%>123_c9`49N_M3^@#$3{?z?3?&Si q4EYRsM8y(r-J@|cFnM6Gr9j(3mnTN^DRM4H&!?m5hfux+r5^wym^+yO literal 0 HcmV?d00001 diff --git a/ProjectLighthouse.Tests/obj/Debug/net8.0/ProjectLighthouse.Tests.AssemblyInfo.cs b/ProjectLighthouse.Tests/obj/Debug/net8.0/ProjectLighthouse.Tests.AssemblyInfo.cs new file mode 100644 index 00000000..8d52e60e --- /dev/null +++ b/ProjectLighthouse.Tests/obj/Debug/net8.0/ProjectLighthouse.Tests.AssemblyInfo.cs @@ -0,0 +1,22 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Reflection; + +[assembly: System.Reflection.AssemblyCompanyAttribute("LBPUnion.ProjectLighthouse.Tests")] +[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] +[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+509240db396eac0c69bd7ed8e09b71f630a8de72")] +[assembly: System.Reflection.AssemblyProductAttribute("LBPUnion.ProjectLighthouse.Tests")] +[assembly: System.Reflection.AssemblyTitleAttribute("LBPUnion.ProjectLighthouse.Tests")] +[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] + +// Generated by the MSBuild WriteCodeFragment class. + diff --git a/ProjectLighthouse.Tests/obj/Debug/net8.0/ProjectLighthouse.Tests.AssemblyInfoInputs.cache b/ProjectLighthouse.Tests/obj/Debug/net8.0/ProjectLighthouse.Tests.AssemblyInfoInputs.cache new file mode 100644 index 00000000..faaf237e --- /dev/null +++ b/ProjectLighthouse.Tests/obj/Debug/net8.0/ProjectLighthouse.Tests.AssemblyInfoInputs.cache @@ -0,0 +1 @@ +6b89ea06ddc2a1c8a938ca178c0f85915603434fc871268ec6f76c4cd69a13e7 diff --git a/ProjectLighthouse.Tests/obj/Debug/net8.0/ProjectLighthouse.Tests.GeneratedMSBuildEditorConfig.editorconfig b/ProjectLighthouse.Tests/obj/Debug/net8.0/ProjectLighthouse.Tests.GeneratedMSBuildEditorConfig.editorconfig new file mode 100644 index 00000000..9b736bd3 --- /dev/null +++ b/ProjectLighthouse.Tests/obj/Debug/net8.0/ProjectLighthouse.Tests.GeneratedMSBuildEditorConfig.editorconfig @@ -0,0 +1,15 @@ +is_global = true +build_property.TargetFramework = net8.0 +build_property.TargetPlatformMinVersion = +build_property.UsingMicrosoftNETSdkWeb = +build_property.ProjectTypeGuids = +build_property.InvariantGlobalization = +build_property.PlatformNeutralAssembly = +build_property.EnforceExtendedAnalyzerRules = +build_property._SupportedPlatformList = Linux,macOS,Windows +build_property.RootNamespace = LBPUnion.ProjectLighthouse.Tests +build_property.ProjectDir = G:\LBP 3 ONLINE ARCHIVE\LBP 3 ONLINE SITE RECREACTION\ProjectLighthouse\ProjectLighthouse.Tests\ +build_property.EnableComHosting = +build_property.EnableGeneratedComInterfaceComImportInterop = +build_property.EffectiveAnalysisLevelStyle = 8.0 +build_property.EnableCodeStyleSeverity = diff --git a/ProjectLighthouse.Tests/obj/Debug/net8.0/ProjectLighthouse.Tests.assets.cache b/ProjectLighthouse.Tests/obj/Debug/net8.0/ProjectLighthouse.Tests.assets.cache new file mode 100644 index 0000000000000000000000000000000000000000..75405a1de6b6be8a75e12859fd5de8ead9afc5e4 GIT binary patch literal 107705 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 literal 0 HcmV?d00001 diff --git a/ProjectLighthouse.Tests/obj/Debug/net8.0/ProjectLighthouse.Tests.csproj.AssemblyReference.cache b/ProjectLighthouse.Tests/obj/Debug/net8.0/ProjectLighthouse.Tests.csproj.AssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..4e1b4ed86dcd0474fbf21a0f7dd7e2e0f67662ce GIT binary patch literal 26296 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 literal 0 HcmV?d00001 diff --git a/ProjectLighthouse.Tests/obj/ProjectLighthouse.Tests.csproj.nuget.dgspec.json b/ProjectLighthouse.Tests/obj/ProjectLighthouse.Tests.csproj.nuget.dgspec.json new file mode 100644 index 00000000..d3d38714 --- /dev/null +++ b/ProjectLighthouse.Tests/obj/ProjectLighthouse.Tests.csproj.nuget.dgspec.json @@ -0,0 +1,352 @@ +{ + "format": 1, + "restore": { + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests\\ProjectLighthouse.Tests.csproj": {} + }, + "projects": { + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Localization\\ProjectLighthouse.Localization.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Localization\\ProjectLighthouse.Localization.csproj", + "projectName": "ProjectLighthouse.Localization", + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Localization\\ProjectLighthouse.Localization.csproj", + "packagesPath": "C:\\Users\\Faisa\\.nuget\\packages\\", + "outputPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Localization\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Faisa\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": {} + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.300" + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.NETCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.WindowsDesktop.App.Ref", + "version": "[8.0.19, 8.0.19]" + } + ], + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" + } + } + }, + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests\\ProjectLighthouse.Tests.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests\\ProjectLighthouse.Tests.csproj", + "projectName": "LBPUnion.ProjectLighthouse.Tests", + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests\\ProjectLighthouse.Tests.csproj", + "packagesPath": "C:\\Users\\Faisa\\.nuget\\packages\\", + "outputPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Faisa\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\ProjectLighthouse.csproj": { + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\ProjectLighthouse.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.300" + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "JetBrains.Annotations": { + "target": "Package", + "version": "[2024.3.0, )" + }, + "Microsoft.AspNetCore.Mvc.Testing": { + "target": "Package", + "version": "[8.0.18, )" + }, + "Microsoft.EntityFrameworkCore.Design": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[8.0.18, )" + }, + "Microsoft.EntityFrameworkCore.Sqlite": { + "target": "Package", + "version": "[8.0.6, )" + }, + "Microsoft.NET.Test.Sdk": { + "target": "Package", + "version": "[17.14.1, )" + }, + "Moq": { + "target": "Package", + "version": "[4.20.72, )" + }, + "coverlet.collector": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[6.0.4, )" + }, + "xunit": { + "target": "Package", + "version": "[2.9.3, )" + }, + "xunit.runner.visualstudio": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[3.1.1, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.NETCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.WindowsDesktop.App.Ref", + "version": "[8.0.19, 8.0.19]" + } + ], + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" + } + } + }, + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\ProjectLighthouse.csproj": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\ProjectLighthouse.csproj", + "projectName": "LBPUnion.ProjectLighthouse", + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\ProjectLighthouse.csproj", + "packagesPath": "C:\\Users\\Faisa\\.nuget\\packages\\", + "outputPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Faisa\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Localization\\ProjectLighthouse.Localization.csproj": { + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Localization\\ProjectLighthouse.Localization.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.300" + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "BCrypt.Net-Next": { + "target": "Package", + "version": "[4.0.3, )" + }, + "BouncyCastle.Cryptography": { + "target": "Package", + "version": "[2.6.1, )" + }, + "Discord.Net.Webhook": { + "target": "Package", + "version": "[3.17.4, )" + }, + "DistributedLock.MySql": { + "target": "Package", + "version": "[1.0.2, )" + }, + "GitInfo": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[3.5.0, )" + }, + "JetBrains.Annotations": { + "target": "Package", + "version": "[2024.3.0, )" + }, + "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": { + "target": "Package", + "version": "[8.0.18, )" + }, + "Microsoft.EntityFrameworkCore": { + "target": "Package", + "version": "[8.0.18, )" + }, + "Microsoft.EntityFrameworkCore.Design": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[8.0.18, )" + }, + "Pfim": { + "target": "Package", + "version": "[0.11.3, )" + }, + "Pomelo.EntityFrameworkCore.MySql": { + "target": "Package", + "version": "[8.0.2, )" + }, + "Redis.OM": { + "target": "Package", + "version": "[1.0.1, )" + }, + "SharpZipLib": { + "target": "Package", + "version": "[1.4.2, )" + }, + "SixLabors.ImageSharp": { + "target": "Package", + "version": "[3.1.10, )" + }, + "Swashbuckle.AspNetCore": { + "target": "Package", + "version": "[9.0.3, )" + }, + "YamlDotNet": { + "target": "Package", + "version": "[16.3.0, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.NETCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.WindowsDesktop.App.Ref", + "version": "[8.0.19, 8.0.19]" + } + ], + "frameworkReferences": { + "Microsoft.AspNetCore.App": { + "privateAssets": "none" + }, + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" + } + } + } + } +} \ No newline at end of file diff --git a/ProjectLighthouse.Tests/obj/ProjectLighthouse.Tests.csproj.nuget.g.props b/ProjectLighthouse.Tests/obj/ProjectLighthouse.Tests.csproj.nuget.g.props new file mode 100644 index 00000000..553d7b2b --- /dev/null +++ b/ProjectLighthouse.Tests/obj/ProjectLighthouse.Tests.csproj.nuget.g.props @@ -0,0 +1,30 @@ + + + + True + NuGet + $(MSBuildThisFileDirectory)project.assets.json + $(UserProfile)\.nuget\packages\ + C:\Users\Faisa\.nuget\packages\ + PackageReference + 6.14.0 + + + + + + + + + + + + + + + + C:\Users\Faisa\.nuget\packages\xunit.analyzers\1.18.0 + C:\Users\Faisa\.nuget\packages\microsoft.extensions.apidescription.server\8.0.0 + C:\Users\Faisa\.nuget\packages\microsoft.codeanalysis.analyzers\3.3.3 + + \ No newline at end of file diff --git a/ProjectLighthouse.Tests/obj/ProjectLighthouse.Tests.csproj.nuget.g.targets b/ProjectLighthouse.Tests/obj/ProjectLighthouse.Tests.csproj.nuget.g.targets new file mode 100644 index 00000000..954eb47a --- /dev/null +++ b/ProjectLighthouse.Tests/obj/ProjectLighthouse.Tests.csproj.nuget.g.targets @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ProjectLighthouse.Tests/obj/project.assets.json b/ProjectLighthouse.Tests/obj/project.assets.json new file mode 100644 index 00000000..d411dcb4 --- /dev/null +++ b/ProjectLighthouse.Tests/obj/project.assets.json @@ -0,0 +1,5901 @@ +{ + "version": 3, + "targets": { + "net8.0": { + "BCrypt.Net-Next/4.0.3": { + "type": "package", + "compile": { + "lib/net6.0/BCrypt.Net-Next.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/BCrypt.Net-Next.dll": { + "related": ".xml" + } + } + }, + "BouncyCastle.Cryptography/2.6.1": { + "type": "package", + "compile": { + "lib/net6.0/BouncyCastle.Cryptography.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/BouncyCastle.Cryptography.dll": { + "related": ".xml" + } + } + }, + "Castle.Core/5.1.1": { + "type": "package", + "dependencies": { + "System.Diagnostics.EventLog": "6.0.0" + }, + "compile": { + "lib/net6.0/Castle.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Castle.Core.dll": { + "related": ".xml" + } + } + }, + "coverlet.collector/6.0.4": { + "type": "package", + "build": { + "build/netstandard2.0/coverlet.collector.targets": {} + } + }, + "Discord.Net.Core/3.17.4": { + "type": "package", + "dependencies": { + "Newtonsoft.Json": "13.0.3", + "System.Collections.Immutable": "8.0.0", + "System.Interactive.Async": "6.0.1", + "System.ValueTuple": "4.5.0" + }, + "compile": { + "lib/net8.0/Discord.Net.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Discord.Net.Core.dll": { + "related": ".xml" + } + } + }, + "Discord.Net.Rest/3.17.4": { + "type": "package", + "dependencies": { + "Discord.Net.Core": "3.17.4" + }, + "compile": { + "lib/net8.0/Discord.Net.Rest.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Discord.Net.Rest.dll": { + "related": ".xml" + } + } + }, + "Discord.Net.Webhook/3.17.4": { + "type": "package", + "dependencies": { + "Discord.Net.Core": "3.17.4", + "Discord.Net.Rest": "3.17.4" + }, + "compile": { + "lib/net8.0/Discord.Net.Webhook.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Discord.Net.Webhook.dll": { + "related": ".xml" + } + } + }, + "DistributedLock.Core/1.0.6": { + "type": "package", + "compile": { + "lib/net8.0/DistributedLock.Core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/DistributedLock.Core.dll": { + "related": ".xml" + } + } + }, + "DistributedLock.MySql/1.0.2": { + "type": "package", + "dependencies": { + "DistributedLock.Core": "[1.0.6, 1.1.0)", + "MySqlConnector": "2.3.5" + }, + "compile": { + "lib/netstandard2.1/DistributedLock.MySql.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/DistributedLock.MySql.dll": { + "related": ".xml" + } + } + }, + "Humanizer.Core/2.14.1": { + "type": "package", + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Humanizer.dll": { + "related": ".xml" + } + } + }, + "JetBrains.Annotations/2024.3.0": { + "type": "package", + "compile": { + "lib/netstandard2.0/JetBrains.Annotations.dll": { + "related": ".deps.json;.xml" + } + }, + "runtime": { + "lib/netstandard2.0/JetBrains.Annotations.dll": { + "related": ".deps.json;.xml" + } + } + }, + "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore/8.0.18": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "8.0.18" + }, + "compile": { + "lib/net8.0/Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.dll": { + "related": ".xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Microsoft.AspNetCore.Mvc.Testing/8.0.18": { + "type": "package", + "dependencies": { + "Microsoft.AspNetCore.TestHost": "8.0.18", + "Microsoft.Extensions.DependencyModel": "8.0.2", + "Microsoft.Extensions.Hosting": "8.0.1" + }, + "compile": { + "lib/net8.0/Microsoft.AspNetCore.Mvc.Testing.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.Mvc.Testing.dll": { + "related": ".xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ], + "build": { + "buildTransitive/net8.0/Microsoft.AspNetCore.Mvc.Testing.targets": {} + } + }, + "Microsoft.AspNetCore.TestHost/8.0.18": { + "type": "package", + "dependencies": { + "System.IO.Pipelines": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.AspNetCore.TestHost.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.AspNetCore.TestHost.dll": { + "related": ".xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Microsoft.Bcl.AsyncInterfaces/8.0.0": { + "type": "package", + "compile": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": { + "related": ".xml" + } + } + }, + "Microsoft.CodeAnalysis.Analyzers/3.3.3": { + "type": "package", + "build": { + "build/_._": {} + } + }, + "Microsoft.CodeAnalysis.Common/4.5.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.3.3", + "System.Collections.Immutable": "6.0.0", + "System.Reflection.Metadata": "6.0.1", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encoding.CodePages": "6.0.0" + }, + "compile": { + "lib/netcoreapp3.1/_._": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp/4.5.0": { + "type": "package", + "dependencies": { + "Microsoft.CodeAnalysis.Common": "[4.5.0]" + }, + "compile": { + "lib/netcoreapp3.1/_._": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces/4.5.0": { + "type": "package", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.CSharp": "[4.5.0]", + "Microsoft.CodeAnalysis.Common": "[4.5.0]", + "Microsoft.CodeAnalysis.Workspaces.Common": "[4.5.0]" + }, + "compile": { + "lib/netcoreapp3.1/_._": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeAnalysis.Workspaces.Common/4.5.0": { + "type": "package", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.Bcl.AsyncInterfaces": "6.0.0", + "Microsoft.CodeAnalysis.Common": "[4.5.0]", + "System.Composition": "6.0.0", + "System.IO.Pipelines": "6.0.3", + "System.Threading.Channels": "6.0.0" + }, + "compile": { + "lib/netcoreapp3.1/_._": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll": { + "related": ".pdb;.xml" + } + }, + "resource": { + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "cs" + }, + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "de" + }, + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "es" + }, + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "fr" + }, + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "it" + }, + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ja" + }, + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ko" + }, + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "pl" + }, + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "pt-BR" + }, + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "ru" + }, + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "tr" + }, + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "zh-Hans" + }, + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.CodeCoverage/17.14.1": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {} + }, + "runtime": { + "lib/net8.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll": {} + }, + "build": { + "build/netstandard2.0/Microsoft.CodeCoverage.props": {}, + "build/netstandard2.0/Microsoft.CodeCoverage.targets": {} + } + }, + "Microsoft.Data.Sqlite.Core/8.0.6": { + "type": "package", + "dependencies": { + "SQLitePCLRaw.core": "2.1.6" + }, + "compile": { + "lib/net8.0/Microsoft.Data.Sqlite.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Data.Sqlite.dll": { + "related": ".xml" + } + } + }, + "Microsoft.EntityFrameworkCore/8.0.18": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore.Abstractions": "8.0.18", + "Microsoft.EntityFrameworkCore.Analyzers": "8.0.18", + "Microsoft.Extensions.Caching.Memory": "8.0.1", + "Microsoft.Extensions.Logging": "8.0.1" + }, + "compile": { + "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props": {} + } + }, + "Microsoft.EntityFrameworkCore.Abstractions/8.0.18": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll": { + "related": ".xml" + } + } + }, + "Microsoft.EntityFrameworkCore.Analyzers/8.0.18": { + "type": "package", + "compile": { + "lib/netstandard2.0/_._": {} + }, + "runtime": { + "lib/netstandard2.0/_._": {} + } + }, + "Microsoft.EntityFrameworkCore.Design/8.0.18": { + "type": "package", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.CSharp.Workspaces": "4.5.0", + "Microsoft.EntityFrameworkCore.Relational": "8.0.18", + "Microsoft.Extensions.DependencyModel": "8.0.2", + "Mono.TextTemplating": "2.2.1" + }, + "compile": { + "lib/net8.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Design.dll": { + "related": ".xml" + } + }, + "build": { + "build/net8.0/Microsoft.EntityFrameworkCore.Design.props": {} + } + }, + "Microsoft.EntityFrameworkCore.Relational/8.0.18": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore": "8.0.18", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll": { + "related": ".xml" + } + } + }, + "Microsoft.EntityFrameworkCore.Sqlite/8.0.6": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore.Sqlite.Core": "8.0.6", + "SQLitePCLRaw.bundle_e_sqlite3": "2.1.6" + }, + "compile": { + "lib/net8.0/_._": {} + }, + "runtime": { + "lib/net8.0/_._": {} + } + }, + "Microsoft.EntityFrameworkCore.Sqlite.Core/8.0.6": { + "type": "package", + "dependencies": { + "Microsoft.Data.Sqlite.Core": "8.0.6", + "Microsoft.EntityFrameworkCore.Relational": "8.0.6", + "Microsoft.Extensions.DependencyModel": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Sqlite.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.EntityFrameworkCore.Sqlite.dll": { + "related": ".xml" + } + } + }, + "Microsoft.Extensions.ApiDescription.Server/8.0.0": { + "type": "package", + "build": { + "build/_._": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/_._": {} + } + }, + "Microsoft.Extensions.Caching.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Caching.Memory/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Caching.Abstractions": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.Binder/8.0.2": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets": {} + } + }, + "Microsoft.Extensions.Configuration.CommandLine/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.FileExtensions/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.Json/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "8.0.1", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.Json.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Configuration.UserSecrets/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Json": "8.0.1", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.props": {}, + "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.targets": {} + } + }, + "Microsoft.Extensions.DependencyInjection/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.DependencyModel/8.0.2": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.DependencyModel.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.DependencyModel.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Diagnostics/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", + "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Diagnostics.Abstractions/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.FileProviders.Physical/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileSystemGlobbing": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.FileSystemGlobbing/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Hosting/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.2", + "Microsoft.Extensions.Configuration.CommandLine": "8.0.0", + "Microsoft.Extensions.Configuration.EnvironmentVariables": "8.0.0", + "Microsoft.Extensions.Configuration.FileExtensions": "8.0.1", + "Microsoft.Extensions.Configuration.Json": "8.0.1", + "Microsoft.Extensions.Configuration.UserSecrets": "8.0.1", + "Microsoft.Extensions.DependencyInjection": "8.0.1", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Diagnostics": "8.0.1", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.FileProviders.Physical": "8.0.0", + "Microsoft.Extensions.Hosting.Abstractions": "8.0.1", + "Microsoft.Extensions.Logging": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging.Configuration": "8.0.1", + "Microsoft.Extensions.Logging.Console": "8.0.1", + "Microsoft.Extensions.Logging.Debug": "8.0.1", + "Microsoft.Extensions.Logging.EventLog": "8.0.1", + "Microsoft.Extensions.Logging.EventSource": "8.0.1", + "Microsoft.Extensions.Options": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Hosting.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Hosting.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Hosting.Abstractions/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Diagnostics.Abstractions": "8.0.1", + "Microsoft.Extensions.FileProviders.Abstractions": "8.0.0", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.Abstractions/8.0.2": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets": {} + } + }, + "Microsoft.Extensions.Logging.Configuration/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration": "8.0.0", + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.2", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Options.ConfigurationExtensions": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.Console/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging.Configuration": "8.0.1", + "Microsoft.Extensions.Options": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Console.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Console.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.Debug/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.Debug.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.Debug.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.EventLog/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2", + "System.Diagnostics.EventLog": "8.0.1" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Logging.EventSource/8.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2", + "Microsoft.Extensions.Logging": "8.0.1", + "Microsoft.Extensions.Logging.Abstractions": "8.0.2", + "Microsoft.Extensions.Options": "8.0.2", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Options/8.0.2": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/Microsoft.Extensions.Options.targets": {} + } + }, + "Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Configuration.Abstractions": "8.0.0", + "Microsoft.Extensions.Configuration.Binder": "8.0.0", + "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", + "Microsoft.Extensions.Options": "8.0.0", + "Microsoft.Extensions.Primitives": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.Extensions.Primitives/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Microsoft.Extensions.Primitives.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "Microsoft.NET.Test.Sdk/17.14.1": { + "type": "package", + "dependencies": { + "Microsoft.CodeCoverage": "17.14.1", + "Microsoft.TestPlatform.TestHost": "17.14.1" + }, + "compile": { + "lib/net8.0/_._": {} + }, + "runtime": { + "lib/net8.0/_._": {} + }, + "build": { + "build/net8.0/Microsoft.NET.Test.Sdk.props": {}, + "build/net8.0/Microsoft.NET.Test.Sdk.targets": {} + } + }, + "Microsoft.OpenApi/1.6.23": { + "type": "package", + "compile": { + "lib/netstandard2.0/Microsoft.OpenApi.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/netstandard2.0/Microsoft.OpenApi.dll": { + "related": ".pdb;.xml" + } + } + }, + "Microsoft.TestPlatform.ObjectModel/17.14.1": { + "type": "package", + "dependencies": { + "System.Reflection.Metadata": "8.0.0" + }, + "compile": { + "lib/net8.0/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {} + }, + "runtime": { + "lib/net8.0/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {} + }, + "resource": { + "lib/net8.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "de" + }, + "lib/net8.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "es" + }, + "lib/net8.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "it" + }, + "lib/net8.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll": { + "locale": "zh-Hant" + }, + "lib/net8.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll": { + "locale": "zh-Hant" + } + } + }, + "Microsoft.TestPlatform.TestHost/17.14.1": { + "type": "package", + "dependencies": { + "Microsoft.TestPlatform.ObjectModel": "17.14.1", + "Newtonsoft.Json": "13.0.3" + }, + "compile": { + "lib/net8.0/Microsoft.TestPlatform.CommunicationUtilities.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.CrossPlatEngine.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.Utilities.dll": {}, + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.Common.dll": {}, + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {}, + "lib/net8.0/testhost.dll": { + "related": ".deps.json" + } + }, + "runtime": { + "lib/net8.0/Microsoft.TestPlatform.CommunicationUtilities.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.CoreUtilities.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.CrossPlatEngine.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.PlatformAbstractions.dll": {}, + "lib/net8.0/Microsoft.TestPlatform.Utilities.dll": {}, + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.Common.dll": {}, + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll": {}, + "lib/net8.0/testhost.dll": { + "related": ".deps.json" + } + }, + "resource": { + "lib/net8.0/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "cs" + }, + "lib/net8.0/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "de" + }, + "lib/net8.0/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "de" + }, + "lib/net8.0/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "de" + }, + "lib/net8.0/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "es" + }, + "lib/net8.0/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "es" + }, + "lib/net8.0/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "es" + }, + "lib/net8.0/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "fr" + }, + "lib/net8.0/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "it" + }, + "lib/net8.0/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "it" + }, + "lib/net8.0/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "it" + }, + "lib/net8.0/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ja" + }, + "lib/net8.0/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ko" + }, + "lib/net8.0/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "pl" + }, + "lib/net8.0/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "pt-BR" + }, + "lib/net8.0/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "ru" + }, + "lib/net8.0/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "tr" + }, + "lib/net8.0/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "zh-Hans" + }, + "lib/net8.0/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll": { + "locale": "zh-Hant" + }, + "lib/net8.0/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll": { + "locale": "zh-Hant" + }, + "lib/net8.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll": { + "locale": "zh-Hant" + } + }, + "build": { + "build/net8.0/Microsoft.TestPlatform.TestHost.props": {}, + "build/net8.0/Microsoft.TestPlatform.TestHost.targets": {} + } + }, + "Mono.TextTemplating/2.2.1": { + "type": "package", + "dependencies": { + "System.CodeDom": "4.4.0" + }, + "compile": { + "lib/netstandard2.0/_._": {} + }, + "runtime": { + "lib/netstandard2.0/Mono.TextTemplating.dll": {} + } + }, + "Moq/4.20.72": { + "type": "package", + "dependencies": { + "Castle.Core": "5.1.1" + }, + "compile": { + "lib/net6.0/Moq.dll": {} + }, + "runtime": { + "lib/net6.0/Moq.dll": {} + } + }, + "MySqlConnector/2.3.5": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "7.0.1" + }, + "compile": { + "lib/net8.0/MySqlConnector.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/MySqlConnector.dll": { + "related": ".xml" + } + } + }, + "Newtonsoft.Json/13.0.3": { + "type": "package", + "compile": { + "lib/net6.0/Newtonsoft.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/Newtonsoft.Json.dll": { + "related": ".xml" + } + } + }, + "Pfim/0.11.3": { + "type": "package", + "compile": { + "lib/netstandard2.0/Pfim.dll": {} + }, + "runtime": { + "lib/netstandard2.0/Pfim.dll": {} + } + }, + "Pipelines.Sockets.Unofficial/2.2.8": { + "type": "package", + "dependencies": { + "System.IO.Pipelines": "5.0.1" + }, + "compile": { + "lib/net5.0/Pipelines.Sockets.Unofficial.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net5.0/Pipelines.Sockets.Unofficial.dll": { + "related": ".xml" + } + } + }, + "Pomelo.EntityFrameworkCore.MySql/8.0.2": { + "type": "package", + "dependencies": { + "Microsoft.EntityFrameworkCore.Relational": "[8.0.2, 8.0.999]", + "MySqlConnector": "2.3.5" + }, + "compile": { + "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll": { + "related": ".xml" + } + } + }, + "Redis.OM/1.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "8.0.0", + "Newtonsoft.Json": "13.0.1", + "StackExchange.Redis": "2.7.17", + "System.Text.Json": "8.0.5", + "Ulid": "1.2.6" + }, + "compile": { + "lib/netstandard2.0/Redis.OM.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/Redis.OM.dll": { + "related": ".xml" + } + } + }, + "SharpZipLib/1.4.2": { + "type": "package", + "compile": { + "lib/net6.0/ICSharpCode.SharpZipLib.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net6.0/ICSharpCode.SharpZipLib.dll": { + "related": ".pdb;.xml" + } + } + }, + "SixLabors.ImageSharp/3.1.10": { + "type": "package", + "compile": { + "lib/net6.0/SixLabors.ImageSharp.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/SixLabors.ImageSharp.dll": { + "related": ".xml" + } + }, + "build": { + "build/_._": {} + } + }, + "SQLitePCLRaw.bundle_e_sqlite3/2.1.6": { + "type": "package", + "dependencies": { + "SQLitePCLRaw.lib.e_sqlite3": "2.1.6", + "SQLitePCLRaw.provider.e_sqlite3": "2.1.6" + }, + "compile": { + "lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll": {} + }, + "runtime": { + "lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll": {} + } + }, + "SQLitePCLRaw.core/2.1.6": { + "type": "package", + "dependencies": { + "System.Memory": "4.5.3" + }, + "compile": { + "lib/netstandard2.0/SQLitePCLRaw.core.dll": {} + }, + "runtime": { + "lib/netstandard2.0/SQLitePCLRaw.core.dll": {} + } + }, + "SQLitePCLRaw.lib.e_sqlite3/2.1.6": { + "type": "package", + "compile": { + "lib/netstandard2.0/_._": {} + }, + "runtime": { + "lib/netstandard2.0/_._": {} + }, + "build": { + "buildTransitive/net8.0/SQLitePCLRaw.lib.e_sqlite3.targets": {} + }, + "runtimeTargets": { + "runtimes/browser-wasm/nativeassets/net8.0/e_sqlite3.a": { + "assetType": "native", + "rid": "browser-wasm" + }, + "runtimes/linux-arm/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-arm" + }, + "runtimes/linux-arm64/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-arm64" + }, + "runtimes/linux-armel/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-armel" + }, + "runtimes/linux-mips64/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-mips64" + }, + "runtimes/linux-musl-arm/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-musl-arm" + }, + "runtimes/linux-musl-arm64/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-musl-arm64" + }, + "runtimes/linux-musl-x64/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-musl-x64" + }, + "runtimes/linux-ppc64le/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-ppc64le" + }, + "runtimes/linux-s390x/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-s390x" + }, + "runtimes/linux-x64/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-x64" + }, + "runtimes/linux-x86/native/libe_sqlite3.so": { + "assetType": "native", + "rid": "linux-x86" + }, + "runtimes/maccatalyst-arm64/native/libe_sqlite3.dylib": { + "assetType": "native", + "rid": "maccatalyst-arm64" + }, + "runtimes/maccatalyst-x64/native/libe_sqlite3.dylib": { + "assetType": "native", + "rid": "maccatalyst-x64" + }, + "runtimes/osx-arm64/native/libe_sqlite3.dylib": { + "assetType": "native", + "rid": "osx-arm64" + }, + "runtimes/osx-x64/native/libe_sqlite3.dylib": { + "assetType": "native", + "rid": "osx-x64" + }, + "runtimes/win-arm/native/e_sqlite3.dll": { + "assetType": "native", + "rid": "win-arm" + }, + "runtimes/win-arm64/native/e_sqlite3.dll": { + "assetType": "native", + "rid": "win-arm64" + }, + "runtimes/win-x64/native/e_sqlite3.dll": { + "assetType": "native", + "rid": "win-x64" + }, + "runtimes/win-x86/native/e_sqlite3.dll": { + "assetType": "native", + "rid": "win-x86" + } + } + }, + "SQLitePCLRaw.provider.e_sqlite3/2.1.6": { + "type": "package", + "dependencies": { + "SQLitePCLRaw.core": "2.1.6" + }, + "compile": { + "lib/net6.0/SQLitePCLRaw.provider.e_sqlite3.dll": {} + }, + "runtime": { + "lib/net6.0/SQLitePCLRaw.provider.e_sqlite3.dll": {} + } + }, + "StackExchange.Redis/2.7.17": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.Logging.Abstractions": "6.0.0", + "Pipelines.Sockets.Unofficial": "2.2.8" + }, + "compile": { + "lib/net6.0/StackExchange.Redis.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/StackExchange.Redis.dll": { + "related": ".xml" + } + } + }, + "Swashbuckle.AspNetCore/9.0.3": { + "type": "package", + "dependencies": { + "Microsoft.Extensions.ApiDescription.Server": "8.0.0", + "Swashbuckle.AspNetCore.Swagger": "9.0.3", + "Swashbuckle.AspNetCore.SwaggerGen": "9.0.3", + "Swashbuckle.AspNetCore.SwaggerUI": "9.0.3" + }, + "build": { + "build/_._": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/_._": {} + } + }, + "Swashbuckle.AspNetCore.Swagger/9.0.3": { + "type": "package", + "dependencies": { + "Microsoft.OpenApi": "1.6.23" + }, + "compile": { + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll": { + "related": ".pdb;.xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "Swashbuckle.AspNetCore.SwaggerGen/9.0.3": { + "type": "package", + "dependencies": { + "Swashbuckle.AspNetCore.Swagger": "9.0.3" + }, + "compile": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll": { + "related": ".pdb;.xml" + } + } + }, + "Swashbuckle.AspNetCore.SwaggerUI/9.0.3": { + "type": "package", + "compile": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { + "related": ".pdb;.xml" + } + }, + "runtime": { + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll": { + "related": ".pdb;.xml" + } + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "System.CodeDom/4.4.0": { + "type": "package", + "compile": { + "ref/netstandard2.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/System.CodeDom.dll": {} + } + }, + "System.Collections.Immutable/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.Collections.Immutable.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Collections.Immutable.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Composition/6.0.0": { + "type": "package", + "dependencies": { + "System.Composition.AttributedModel": "6.0.0", + "System.Composition.Convention": "6.0.0", + "System.Composition.Hosting": "6.0.0", + "System.Composition.Runtime": "6.0.0", + "System.Composition.TypedParts": "6.0.0" + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Composition.AttributedModel/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Composition.AttributedModel.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Composition.Convention/6.0.0": { + "type": "package", + "dependencies": { + "System.Composition.AttributedModel": "6.0.0" + }, + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Composition.Convention.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Composition.Hosting/6.0.0": { + "type": "package", + "dependencies": { + "System.Composition.Runtime": "6.0.0" + }, + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Composition.Hosting.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Composition.Runtime/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Composition.Runtime.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Composition.TypedParts/6.0.0": { + "type": "package", + "dependencies": { + "System.Composition.AttributedModel": "6.0.0", + "System.Composition.Hosting": "6.0.0", + "System.Composition.Runtime": "6.0.0" + }, + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Composition.TypedParts.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Diagnostics.EventLog/8.0.1": { + "type": "package", + "compile": { + "lib/net8.0/System.Diagnostics.EventLog.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Diagnostics.EventLog.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll": { + "assetType": "runtime", + "rid": "win" + }, + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Interactive.Async/6.0.1": { + "type": "package", + "dependencies": { + "System.Linq.Async": "6.0.1" + }, + "compile": { + "lib/net6.0/System.Interactive.Async.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Interactive.Async.dll": { + "related": ".xml" + } + } + }, + "System.IO.Pipelines/8.0.0": { + "type": "package", + "compile": { + "lib/net8.0/System.IO.Pipelines.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.IO.Pipelines.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Linq.Async/6.0.1": { + "type": "package", + "dependencies": { + "Microsoft.Bcl.AsyncInterfaces": "6.0.0" + }, + "compile": { + "ref/net6.0/System.Linq.Async.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Linq.Async.dll": { + "related": ".xml" + } + } + }, + "System.Memory/4.5.3": { + "type": "package", + "compile": { + "ref/netcoreapp2.1/_._": {} + }, + "runtime": { + "lib/netcoreapp2.1/_._": {} + } + }, + "System.Reflection.Metadata/8.0.0": { + "type": "package", + "dependencies": { + "System.Collections.Immutable": "8.0.0" + }, + "compile": { + "lib/net8.0/System.Reflection.Metadata.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Reflection.Metadata.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/_._": {} + } + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.Text.Encoding.CodePages/6.0.0": { + "type": "package", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + }, + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Text.Encoding.CodePages.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + }, + "runtimeTargets": { + "runtimes/win/lib/net6.0/System.Text.Encoding.CodePages.dll": { + "assetType": "runtime", + "rid": "win" + } + } + }, + "System.Text.Json/8.0.5": { + "type": "package", + "compile": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/System.Text.Json.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/net6.0/System.Text.Json.targets": {} + } + }, + "System.Threading.Channels/6.0.0": { + "type": "package", + "compile": { + "lib/net6.0/_._": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/System.Threading.Channels.dll": { + "related": ".xml" + } + }, + "build": { + "buildTransitive/netcoreapp3.1/_._": {} + } + }, + "System.ValueTuple/4.5.0": { + "type": "package", + "compile": { + "ref/netcoreapp2.0/_._": {} + }, + "runtime": { + "lib/netcoreapp2.0/_._": {} + } + }, + "Ulid/1.2.6": { + "type": "package", + "compile": { + "lib/net5.0/Ulid.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net5.0/Ulid.dll": { + "related": ".xml" + } + } + }, + "xunit/2.9.3": { + "type": "package", + "dependencies": { + "xunit.analyzers": "1.18.0", + "xunit.assert": "2.9.3", + "xunit.core": "[2.9.3]" + } + }, + "xunit.abstractions/2.0.3": { + "type": "package", + "compile": { + "lib/netstandard2.0/xunit.abstractions.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard2.0/xunit.abstractions.dll": { + "related": ".xml" + } + } + }, + "xunit.analyzers/1.18.0": { + "type": "package" + }, + "xunit.assert/2.9.3": { + "type": "package", + "compile": { + "lib/net6.0/xunit.assert.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net6.0/xunit.assert.dll": { + "related": ".xml" + } + } + }, + "xunit.core/2.9.3": { + "type": "package", + "dependencies": { + "xunit.extensibility.core": "[2.9.3]", + "xunit.extensibility.execution": "[2.9.3]" + }, + "build": { + "build/xunit.core.props": {}, + "build/xunit.core.targets": {} + }, + "buildMultiTargeting": { + "buildMultiTargeting/xunit.core.props": {}, + "buildMultiTargeting/xunit.core.targets": {} + } + }, + "xunit.extensibility.core/2.9.3": { + "type": "package", + "dependencies": { + "xunit.abstractions": "2.0.3" + }, + "compile": { + "lib/netstandard1.1/xunit.core.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.1/xunit.core.dll": { + "related": ".xml" + } + } + }, + "xunit.extensibility.execution/2.9.3": { + "type": "package", + "dependencies": { + "xunit.extensibility.core": "[2.9.3]" + }, + "compile": { + "lib/netstandard1.1/xunit.execution.dotnet.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/netstandard1.1/xunit.execution.dotnet.dll": { + "related": ".xml" + } + } + }, + "xunit.runner.visualstudio/3.1.1": { + "type": "package", + "compile": { + "lib/net8.0/_._": {} + }, + "runtime": { + "lib/net8.0/_._": {} + }, + "build": { + "build/net8.0/xunit.runner.visualstudio.props": {} + } + }, + "YamlDotNet/16.3.0": { + "type": "package", + "compile": { + "lib/net8.0/YamlDotNet.dll": { + "related": ".xml" + } + }, + "runtime": { + "lib/net8.0/YamlDotNet.dll": { + "related": ".xml" + } + } + }, + "LBPUnion.ProjectLighthouse/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "dependencies": { + "BCrypt.Net-Next": "4.0.3", + "BouncyCastle.Cryptography": "2.6.1", + "Discord.Net.Webhook": "3.17.4", + "DistributedLock.MySql": "1.0.2", + "JetBrains.Annotations": "2024.3.0", + "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "8.0.18", + "Microsoft.EntityFrameworkCore": "8.0.18", + "Pfim": "0.11.3", + "Pomelo.EntityFrameworkCore.MySql": "8.0.2", + "ProjectLighthouse.Localization": "1.0.0", + "Redis.OM": "1.0.1", + "SharpZipLib": "1.4.2", + "SixLabors.ImageSharp": "3.1.10", + "Swashbuckle.AspNetCore": "9.0.3", + "YamlDotNet": "16.3.0" + }, + "compile": { + "bin/placeholder/LBPUnion.ProjectLighthouse.dll": {} + }, + "runtime": { + "bin/placeholder/LBPUnion.ProjectLighthouse.dll": {} + }, + "frameworkReferences": [ + "Microsoft.AspNetCore.App" + ] + }, + "ProjectLighthouse.Localization/1.0.0": { + "type": "project", + "framework": ".NETCoreApp,Version=v8.0", + "compile": { + "bin/placeholder/ProjectLighthouse.Localization.dll": {} + }, + "runtime": { + "bin/placeholder/ProjectLighthouse.Localization.dll": {} + } + } + } + }, + "libraries": { + "BCrypt.Net-Next/4.0.3": { + "sha512": "W+U9WvmZQgi5cX6FS5GDtDoPzUCV4LkBLkywq/kRZhuDwcbavOzcDAr3LXJFqHUi952Yj3LEYoWW0jbEUQChsA==", + "type": "package", + "path": "bcrypt.net-next/4.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "bcrypt.net-next.4.0.3.nupkg.sha512", + "bcrypt.net-next.nuspec", + "ico.png", + "lib/net20/BCrypt.Net-Next.dll", + "lib/net20/BCrypt.Net-Next.xml", + "lib/net35/BCrypt.Net-Next.dll", + "lib/net35/BCrypt.Net-Next.xml", + "lib/net462/BCrypt.Net-Next.dll", + "lib/net462/BCrypt.Net-Next.xml", + "lib/net472/BCrypt.Net-Next.dll", + "lib/net472/BCrypt.Net-Next.xml", + "lib/net48/BCrypt.Net-Next.dll", + "lib/net48/BCrypt.Net-Next.xml", + "lib/net5.0/BCrypt.Net-Next.dll", + "lib/net5.0/BCrypt.Net-Next.xml", + "lib/net6.0/BCrypt.Net-Next.dll", + "lib/net6.0/BCrypt.Net-Next.xml", + "lib/netstandard2.0/BCrypt.Net-Next.dll", + "lib/netstandard2.0/BCrypt.Net-Next.xml", + "lib/netstandard2.1/BCrypt.Net-Next.dll", + "lib/netstandard2.1/BCrypt.Net-Next.xml", + "readme.md" + ] + }, + "BouncyCastle.Cryptography/2.6.1": { + "sha512": "vZsG2YILhthgRqO+ZVgRff4ZFKKTl0v7kqaVBLCtRvpREhfBP33pcWrdA3PRYgWuFL1RxiUFvjMUHTdBZlJcoA==", + "type": "package", + "path": "bouncycastle.cryptography/2.6.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.md", + "README.md", + "bouncycastle.cryptography.2.6.1.nupkg.sha512", + "bouncycastle.cryptography.nuspec", + "lib/net461/BouncyCastle.Cryptography.dll", + "lib/net461/BouncyCastle.Cryptography.xml", + "lib/net6.0/BouncyCastle.Cryptography.dll", + "lib/net6.0/BouncyCastle.Cryptography.xml", + "lib/netstandard2.0/BouncyCastle.Cryptography.dll", + "lib/netstandard2.0/BouncyCastle.Cryptography.xml", + "packageIcon.png" + ] + }, + "Castle.Core/5.1.1": { + "sha512": "rpYtIczkzGpf+EkZgDr9CClTdemhsrwA/W5hMoPjLkRFnXzH44zDLoovXeKtmxb1ykXK9aJVODSpiJml8CTw2g==", + "type": "package", + "path": "castle.core/5.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "ASL - Apache Software Foundation License.txt", + "CHANGELOG.md", + "LICENSE", + "castle-logo.png", + "castle.core.5.1.1.nupkg.sha512", + "castle.core.nuspec", + "lib/net462/Castle.Core.dll", + "lib/net462/Castle.Core.xml", + "lib/net6.0/Castle.Core.dll", + "lib/net6.0/Castle.Core.xml", + "lib/netstandard2.0/Castle.Core.dll", + "lib/netstandard2.0/Castle.Core.xml", + "lib/netstandard2.1/Castle.Core.dll", + "lib/netstandard2.1/Castle.Core.xml", + "readme.txt" + ] + }, + "coverlet.collector/6.0.4": { + "sha512": "lkhqpF8Pu2Y7IiN7OntbsTtdbpR1syMsm2F3IgX6ootA4ffRqWL5jF7XipHuZQTdVuWG/gVAAcf8mjk8Tz0xPg==", + "type": "package", + "path": "coverlet.collector/6.0.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "VSTestIntegration.md", + "build/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "build/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "build/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", + "build/netstandard2.0/Microsoft.Extensions.DependencyModel.dll", + "build/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "build/netstandard2.0/Microsoft.TestPlatform.CoreUtilities.dll", + "build/netstandard2.0/Microsoft.TestPlatform.PlatformAbstractions.dll", + "build/netstandard2.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "build/netstandard2.0/Mono.Cecil.Mdb.dll", + "build/netstandard2.0/Mono.Cecil.Pdb.dll", + "build/netstandard2.0/Mono.Cecil.Rocks.dll", + "build/netstandard2.0/Mono.Cecil.dll", + "build/netstandard2.0/Newtonsoft.Json.dll", + "build/netstandard2.0/NuGet.Frameworks.dll", + "build/netstandard2.0/NuGet.Versioning.dll", + "build/netstandard2.0/System.Buffers.dll", + "build/netstandard2.0/System.Collections.Immutable.dll", + "build/netstandard2.0/System.Memory.dll", + "build/netstandard2.0/System.Numerics.Vectors.dll", + "build/netstandard2.0/System.Reflection.Metadata.dll", + "build/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "build/netstandard2.0/System.Text.Encodings.Web.dll", + "build/netstandard2.0/System.Text.Json.dll", + "build/netstandard2.0/System.Threading.Tasks.Extensions.dll", + "build/netstandard2.0/coverlet.collector.deps.json", + "build/netstandard2.0/coverlet.collector.dll", + "build/netstandard2.0/coverlet.collector.pdb", + "build/netstandard2.0/coverlet.collector.targets", + "build/netstandard2.0/coverlet.core.dll", + "build/netstandard2.0/coverlet.core.pdb", + "build/netstandard2.0/coverlet.core.xml", + "build/netstandard2.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "build/netstandard2.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "build/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "coverlet-icon.png", + "coverlet.collector.6.0.4.nupkg.sha512", + "coverlet.collector.nuspec" + ] + }, + "Discord.Net.Core/3.17.4": { + "sha512": "tMCilkXI6Gqqn6ipyysyuv3qHUNY1LNUbEpRHF6Q5jqW0Tckvu/EuZ2r/1xJatxvC8EoohIA05Dq3N3rrRlxBQ==", + "type": "package", + "path": "discord.net.core/3.17.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "NUGET_README.md", + "PackageLogo.png", + "discord.net.core.3.17.4.nupkg.sha512", + "discord.net.core.nuspec", + "lib/net461/Discord.Net.Core.dll", + "lib/net461/Discord.Net.Core.xml", + "lib/net5.0/Discord.Net.Core.dll", + "lib/net5.0/Discord.Net.Core.xml", + "lib/net6.0/Discord.Net.Core.dll", + "lib/net6.0/Discord.Net.Core.xml", + "lib/net8.0/Discord.Net.Core.dll", + "lib/net8.0/Discord.Net.Core.xml", + "lib/net9.0/Discord.Net.Core.dll", + "lib/net9.0/Discord.Net.Core.xml", + "lib/netstandard2.0/Discord.Net.Core.dll", + "lib/netstandard2.0/Discord.Net.Core.xml", + "lib/netstandard2.1/Discord.Net.Core.dll", + "lib/netstandard2.1/Discord.Net.Core.xml" + ] + }, + "Discord.Net.Rest/3.17.4": { + "sha512": "j3YRvFY9Rd0cCPQpRbTb12fGdcO41Cg0haKSZ/6fqHy1WEzZcKRpU8wC9a9e6yIwc5Gi0jrqYAQ/jvXartOqlg==", + "type": "package", + "path": "discord.net.rest/3.17.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "NUGET_README.md", + "PackageLogo.png", + "discord.net.rest.3.17.4.nupkg.sha512", + "discord.net.rest.nuspec", + "lib/net461/Discord.Net.Rest.dll", + "lib/net461/Discord.Net.Rest.xml", + "lib/net5.0/Discord.Net.Rest.dll", + "lib/net5.0/Discord.Net.Rest.xml", + "lib/net6.0/Discord.Net.Rest.dll", + "lib/net6.0/Discord.Net.Rest.xml", + "lib/net8.0/Discord.Net.Rest.dll", + "lib/net8.0/Discord.Net.Rest.xml", + "lib/net9.0/Discord.Net.Rest.dll", + "lib/net9.0/Discord.Net.Rest.xml", + "lib/netstandard2.0/Discord.Net.Rest.dll", + "lib/netstandard2.0/Discord.Net.Rest.xml", + "lib/netstandard2.1/Discord.Net.Rest.dll", + "lib/netstandard2.1/Discord.Net.Rest.xml" + ] + }, + "Discord.Net.Webhook/3.17.4": { + "sha512": "NGr75To1uxeyMEPsR4lo5+m/d2ALGzsgAUBCv/27tBU5G0Ss9fjaemPumcQtXO1uJSBQallxreWsn/LfMQHc5A==", + "type": "package", + "path": "discord.net.webhook/3.17.4", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "NUGET_README.md", + "PackageLogo.png", + "discord.net.webhook.3.17.4.nupkg.sha512", + "discord.net.webhook.nuspec", + "lib/net5.0/Discord.Net.Webhook.dll", + "lib/net5.0/Discord.Net.Webhook.xml", + "lib/net6.0/Discord.Net.Webhook.dll", + "lib/net6.0/Discord.Net.Webhook.xml", + "lib/net8.0/Discord.Net.Webhook.dll", + "lib/net8.0/Discord.Net.Webhook.xml", + "lib/net9.0/Discord.Net.Webhook.dll", + "lib/net9.0/Discord.Net.Webhook.xml", + "lib/netstandard2.0/Discord.Net.Webhook.dll", + "lib/netstandard2.0/Discord.Net.Webhook.xml", + "lib/netstandard2.1/Discord.Net.Webhook.dll", + "lib/netstandard2.1/Discord.Net.Webhook.xml" + ] + }, + "DistributedLock.Core/1.0.6": { + "sha512": "WFAz6x82K+4uiByDk1Qz2lmcm2FrOyCzZjNauzbLeHPou6Ur2C9Ig7d6vxP7/kKvzSrrQoW6k3pUOOcikb9Jgw==", + "type": "package", + "path": "distributedlock.core/1.0.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "distributedlock.core.1.0.6.nupkg.sha512", + "distributedlock.core.nuspec", + "lib/net462/DistributedLock.Core.dll", + "lib/net462/DistributedLock.Core.xml", + "lib/net8.0/DistributedLock.Core.dll", + "lib/net8.0/DistributedLock.Core.xml", + "lib/netstandard2.0/DistributedLock.Core.dll", + "lib/netstandard2.0/DistributedLock.Core.xml", + "lib/netstandard2.1/DistributedLock.Core.dll", + "lib/netstandard2.1/DistributedLock.Core.xml", + "package.readme.md" + ] + }, + "DistributedLock.MySql/1.0.2": { + "sha512": "1FIaBNM1/EmFeKc9qFNGf+8D/g3ZyBXoGYp0j+DQqKdfJJ500m45zYR4PWFsy1RYUL3E8VNnSvGpxUhB6OKrww==", + "type": "package", + "path": "distributedlock.mysql/1.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "distributedlock.mysql.1.0.2.nupkg.sha512", + "distributedlock.mysql.nuspec", + "lib/net462/DistributedLock.MySql.dll", + "lib/net462/DistributedLock.MySql.xml", + "lib/netstandard2.0/DistributedLock.MySql.dll", + "lib/netstandard2.0/DistributedLock.MySql.xml", + "lib/netstandard2.1/DistributedLock.MySql.dll", + "lib/netstandard2.1/DistributedLock.MySql.xml", + "package.readme.md" + ] + }, + "Humanizer.Core/2.14.1": { + "sha512": "lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==", + "type": "package", + "path": "humanizer.core/2.14.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "humanizer.core.2.14.1.nupkg.sha512", + "humanizer.core.nuspec", + "lib/net6.0/Humanizer.dll", + "lib/net6.0/Humanizer.xml", + "lib/netstandard1.0/Humanizer.dll", + "lib/netstandard1.0/Humanizer.xml", + "lib/netstandard2.0/Humanizer.dll", + "lib/netstandard2.0/Humanizer.xml", + "logo.png" + ] + }, + "JetBrains.Annotations/2024.3.0": { + "sha512": "ox5pkeLQXjvJdyAB4b2sBYAlqZGLh3PjSnP1bQNVx72ONuTJ9+34/+Rq91Fc0dG29XG9RgZur9+NcP4riihTug==", + "type": "package", + "path": "jetbrains.annotations/2024.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "icon.png", + "jetbrains.annotations.2024.3.0.nupkg.sha512", + "jetbrains.annotations.nuspec", + "lib/net20/JetBrains.Annotations.dll", + "lib/net20/JetBrains.Annotations.xml", + "lib/netstandard1.0/JetBrains.Annotations.deps.json", + "lib/netstandard1.0/JetBrains.Annotations.dll", + "lib/netstandard1.0/JetBrains.Annotations.xml", + "lib/netstandard2.0/JetBrains.Annotations.deps.json", + "lib/netstandard2.0/JetBrains.Annotations.dll", + "lib/netstandard2.0/JetBrains.Annotations.xml", + "lib/portable40-net40+sl5+win8+wp8+wpa81/JetBrains.Annotations.dll", + "lib/portable40-net40+sl5+win8+wp8+wpa81/JetBrains.Annotations.xml", + "readme.md" + ] + }, + "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore/8.0.18": { + "sha512": "H4GKNR5eGHpK5yovhsO3BvOfzKlSv8DVclVYi1JLN5wfei+HAbskbi9nMGGamgtqgVXX1RAAduGKGQWlWGlfKw==", + "type": "package", + "path": "microsoft.aspnetcore.diagnostics.entityframeworkcore/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net8.0/Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.dll", + "lib/net8.0/Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore.xml", + "microsoft.aspnetcore.diagnostics.entityframeworkcore.8.0.18.nupkg.sha512", + "microsoft.aspnetcore.diagnostics.entityframeworkcore.nuspec" + ] + }, + "Microsoft.AspNetCore.Mvc.Testing/8.0.18": { + "sha512": "QfMWUySY4rtLkzdqT/i431ZA+iydEc1pEZoFDpkpu8U9Lc6RlOoZvK4oBU47G+TxqNcHz4omf0JrCqpfL1wq6g==", + "type": "package", + "path": "microsoft.aspnetcore.mvc.testing/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "build/net8.0/Microsoft.AspNetCore.Mvc.Testing.targets", + "buildTransitive/net8.0/Microsoft.AspNetCore.Mvc.Testing.targets", + "lib/net8.0/Microsoft.AspNetCore.Mvc.Testing.dll", + "lib/net8.0/Microsoft.AspNetCore.Mvc.Testing.xml", + "microsoft.aspnetcore.mvc.testing.8.0.18.nupkg.sha512", + "microsoft.aspnetcore.mvc.testing.nuspec", + "tasks/netstandard2.0/Microsoft.AspNetCore.Mvc.Testing.Tasks.dll" + ] + }, + "Microsoft.AspNetCore.TestHost/8.0.18": { + "sha512": "ofyg3Go9hNptZkZt6MXS2W8LTe+ayceXOebf3XTxywGHn9rbtg/cwXjwcMZ3e6On2p1eSEBtHUmdi6YWplXuSQ==", + "type": "package", + "path": "microsoft.aspnetcore.testhost/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "THIRD-PARTY-NOTICES.TXT", + "lib/net8.0/Microsoft.AspNetCore.TestHost.dll", + "lib/net8.0/Microsoft.AspNetCore.TestHost.xml", + "microsoft.aspnetcore.testhost.8.0.18.nupkg.sha512", + "microsoft.aspnetcore.testhost.nuspec" + ] + }, + "Microsoft.Bcl.AsyncInterfaces/8.0.0": { + "sha512": "3WA9q9yVqJp222P3x1wYIGDAkpjAku0TMUaaQV22g6L67AI0LdOIrVS7Ht2vJfLHGSPVuqN94vIr15qn+HEkHw==", + "type": "package", + "path": "microsoft.bcl.asyncinterfaces/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Bcl.AsyncInterfaces.targets", + "buildTransitive/net462/_._", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/net462/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll", + "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml", + "microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512", + "microsoft.bcl.asyncinterfaces.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.CodeAnalysis.Analyzers/3.3.3": { + "sha512": "j/rOZtLMVJjrfLRlAMckJLPW/1rze9MT1yfWqSIbUPGRu1m1P0fuo9PmqapwsmePfGB5PJrudQLvmUOAMF0DqQ==", + "type": "package", + "path": "microsoft.codeanalysis.analyzers/3.3.3", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "analyzers/dotnet/cs/Microsoft.CodeAnalysis.Analyzers.dll", + "analyzers/dotnet/cs/Microsoft.CodeAnalysis.CSharp.Analyzers.dll", + "analyzers/dotnet/cs/cs/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/de/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/es/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/fr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/it/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ja/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ko/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/pl/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/pt-BR/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/ru/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/tr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/zh-Hans/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/cs/zh-Hant/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/Microsoft.CodeAnalysis.Analyzers.dll", + "analyzers/dotnet/vb/Microsoft.CodeAnalysis.VisualBasic.Analyzers.dll", + "analyzers/dotnet/vb/cs/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/de/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/es/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/fr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/it/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ja/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ko/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/pl/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/pt-BR/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/ru/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/tr/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/zh-Hans/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "analyzers/dotnet/vb/zh-Hant/Microsoft.CodeAnalysis.Analyzers.resources.dll", + "build/Microsoft.CodeAnalysis.Analyzers.props", + "build/Microsoft.CodeAnalysis.Analyzers.targets", + "build/config/analysislevel_2_9_8_all.editorconfig", + "build/config/analysislevel_2_9_8_default.editorconfig", + "build/config/analysislevel_2_9_8_minimum.editorconfig", + "build/config/analysislevel_2_9_8_none.editorconfig", + "build/config/analysislevel_2_9_8_recommended.editorconfig", + "build/config/analysislevel_3_3_all.editorconfig", + "build/config/analysislevel_3_3_default.editorconfig", + "build/config/analysislevel_3_3_minimum.editorconfig", + "build/config/analysislevel_3_3_none.editorconfig", + "build/config/analysislevel_3_3_recommended.editorconfig", + "build/config/analysislevel_3_all.editorconfig", + "build/config/analysislevel_3_default.editorconfig", + "build/config/analysislevel_3_minimum.editorconfig", + "build/config/analysislevel_3_none.editorconfig", + "build/config/analysislevel_3_recommended.editorconfig", + "build/config/analysislevelcorrectness_2_9_8_all.editorconfig", + "build/config/analysislevelcorrectness_2_9_8_default.editorconfig", + "build/config/analysislevelcorrectness_2_9_8_minimum.editorconfig", + "build/config/analysislevelcorrectness_2_9_8_none.editorconfig", + "build/config/analysislevelcorrectness_2_9_8_recommended.editorconfig", + "build/config/analysislevelcorrectness_3_3_all.editorconfig", + "build/config/analysislevelcorrectness_3_3_default.editorconfig", + "build/config/analysislevelcorrectness_3_3_minimum.editorconfig", + "build/config/analysislevelcorrectness_3_3_none.editorconfig", + "build/config/analysislevelcorrectness_3_3_recommended.editorconfig", + "build/config/analysislevelcorrectness_3_all.editorconfig", + "build/config/analysislevelcorrectness_3_default.editorconfig", + "build/config/analysislevelcorrectness_3_minimum.editorconfig", + "build/config/analysislevelcorrectness_3_none.editorconfig", + "build/config/analysislevelcorrectness_3_recommended.editorconfig", + "build/config/analysislevellibrary_2_9_8_all.editorconfig", + "build/config/analysislevellibrary_2_9_8_default.editorconfig", + "build/config/analysislevellibrary_2_9_8_minimum.editorconfig", + "build/config/analysislevellibrary_2_9_8_none.editorconfig", + "build/config/analysislevellibrary_2_9_8_recommended.editorconfig", + "build/config/analysislevellibrary_3_3_all.editorconfig", + "build/config/analysislevellibrary_3_3_default.editorconfig", + "build/config/analysislevellibrary_3_3_minimum.editorconfig", + "build/config/analysislevellibrary_3_3_none.editorconfig", + "build/config/analysislevellibrary_3_3_recommended.editorconfig", + "build/config/analysislevellibrary_3_all.editorconfig", + "build/config/analysislevellibrary_3_default.editorconfig", + "build/config/analysislevellibrary_3_minimum.editorconfig", + "build/config/analysislevellibrary_3_none.editorconfig", + "build/config/analysislevellibrary_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscompatibility_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysiscorrectness_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdesign_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisdocumentation_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysislocalization_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisperformance_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_2_9_8_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_3_recommended.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_all.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_default.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_minimum.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_none.editorconfig", + "build/config/analysislevelmicrosoftcodeanalysisreleasetracking_3_recommended.editorconfig", + "documentation/Analyzer Configuration.md", + "documentation/Microsoft.CodeAnalysis.Analyzers.md", + "documentation/Microsoft.CodeAnalysis.Analyzers.sarif", + "editorconfig/AllRulesDefault/.editorconfig", + "editorconfig/AllRulesDisabled/.editorconfig", + "editorconfig/AllRulesEnabled/.editorconfig", + "editorconfig/CorrectnessRulesDefault/.editorconfig", + "editorconfig/CorrectnessRulesEnabled/.editorconfig", + "editorconfig/DataflowRulesDefault/.editorconfig", + "editorconfig/DataflowRulesEnabled/.editorconfig", + "editorconfig/LibraryRulesDefault/.editorconfig", + "editorconfig/LibraryRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCompatibilityRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCompatibilityRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCorrectnessRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisCorrectnessRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDesignRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDesignRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDocumentationRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisDocumentationRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisLocalizationRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisLocalizationRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisPerformanceRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisPerformanceRulesEnabled/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisReleaseTrackingRulesDefault/.editorconfig", + "editorconfig/MicrosoftCodeAnalysisReleaseTrackingRulesEnabled/.editorconfig", + "editorconfig/PortedFromFxCopRulesDefault/.editorconfig", + "editorconfig/PortedFromFxCopRulesEnabled/.editorconfig", + "microsoft.codeanalysis.analyzers.3.3.3.nupkg.sha512", + "microsoft.codeanalysis.analyzers.nuspec", + "rulesets/AllRulesDefault.ruleset", + "rulesets/AllRulesDisabled.ruleset", + "rulesets/AllRulesEnabled.ruleset", + "rulesets/CorrectnessRulesDefault.ruleset", + "rulesets/CorrectnessRulesEnabled.ruleset", + "rulesets/DataflowRulesDefault.ruleset", + "rulesets/DataflowRulesEnabled.ruleset", + "rulesets/LibraryRulesDefault.ruleset", + "rulesets/LibraryRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisCompatibilityRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisCompatibilityRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisCorrectnessRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisCorrectnessRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisDesignRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisDesignRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisDocumentationRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisDocumentationRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisLocalizationRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisLocalizationRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisPerformanceRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisPerformanceRulesEnabled.ruleset", + "rulesets/MicrosoftCodeAnalysisReleaseTrackingRulesDefault.ruleset", + "rulesets/MicrosoftCodeAnalysisReleaseTrackingRulesEnabled.ruleset", + "rulesets/PortedFromFxCopRulesDefault.ruleset", + "rulesets/PortedFromFxCopRulesEnabled.ruleset", + "tools/install.ps1", + "tools/uninstall.ps1" + ] + }, + "Microsoft.CodeAnalysis.Common/4.5.0": { + "sha512": "lwAbIZNdnY0SUNoDmZHkVUwLO8UyNnyyh1t/4XsbFxi4Ounb3xszIYZaWhyj5ZjyfcwqwmtMbE7fUTVCqQEIdQ==", + "type": "package", + "path": "microsoft.codeanalysis.common/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.pdb", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.xml", + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.resources.dll", + "microsoft.codeanalysis.common.4.5.0.nupkg.sha512", + "microsoft.codeanalysis.common.nuspec" + ] + }, + "Microsoft.CodeAnalysis.CSharp/4.5.0": { + "sha512": "cM59oMKAOxvdv76bdmaKPy5hfj+oR+zxikWoueEB7CwTko7mt9sVKZI8Qxlov0C/LuKEG+WQwifepqL3vuTiBQ==", + "type": "package", + "path": "microsoft.codeanalysis.csharp/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.pdb", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.xml", + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.resources.dll", + "microsoft.codeanalysis.csharp.4.5.0.nupkg.sha512", + "microsoft.codeanalysis.csharp.nuspec" + ] + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces/4.5.0": { + "sha512": "h74wTpmGOp4yS4hj+EvNzEiPgg/KVs2wmSfTZ81upJZOtPkJsVkgfsgtxxqmAeapjT/vLKfmYV0bS8n5MNVP+g==", + "type": "package", + "path": "microsoft.codeanalysis.csharp.workspaces/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.pdb", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.CSharp.Workspaces.xml", + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.CSharp.Workspaces.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll", + "microsoft.codeanalysis.csharp.workspaces.4.5.0.nupkg.sha512", + "microsoft.codeanalysis.csharp.workspaces.nuspec" + ] + }, + "Microsoft.CodeAnalysis.Workspaces.Common/4.5.0": { + "sha512": "l4dDRmGELXG72XZaonnOeORyD/T5RpEu5LGHOUIhnv+MmUWDY/m1kWXGwtcgQ5CJ5ynkFiRnIYzTKXYjUs7rbw==", + "type": "package", + "path": "microsoft.codeanalysis.workspaces.common/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.rtf", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.dll", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.pdb", + "lib/netcoreapp3.1/Microsoft.CodeAnalysis.Workspaces.xml", + "lib/netcoreapp3.1/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/de/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/es/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/it/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netcoreapp3.1/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.dll", + "lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.pdb", + "lib/netstandard2.0/Microsoft.CodeAnalysis.Workspaces.xml", + "lib/netstandard2.0/cs/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/de/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/es/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/fr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/it/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/ja/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/ko/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/pl/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/ru/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/tr/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.CodeAnalysis.Workspaces.resources.dll", + "microsoft.codeanalysis.workspaces.common.4.5.0.nupkg.sha512", + "microsoft.codeanalysis.workspaces.common.nuspec" + ] + }, + "Microsoft.CodeCoverage/17.14.1": { + "sha512": "pmTrhfFIoplzFVbhVwUquT+77CbGH+h4/3mBpdmIlYtBi9nAB+kKI6dN3A/nV4DFi3wLLx/BlHIPK+MkbQ6Tpg==", + "type": "package", + "path": "microsoft.codecoverage/17.14.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.txt", + "build/netstandard2.0/CodeCoverage/CodeCoverage.config", + "build/netstandard2.0/CodeCoverage/CodeCoverage.exe", + "build/netstandard2.0/CodeCoverage/Cov_x86.config", + "build/netstandard2.0/CodeCoverage/amd64/CodeCoverage.exe", + "build/netstandard2.0/CodeCoverage/amd64/Cov_x64.config", + "build/netstandard2.0/CodeCoverage/amd64/covrun64.dll", + "build/netstandard2.0/CodeCoverage/amd64/msdia140.dll", + "build/netstandard2.0/CodeCoverage/arm64/Cov_arm64.config", + "build/netstandard2.0/CodeCoverage/arm64/covrunarm64.dll", + "build/netstandard2.0/CodeCoverage/arm64/msdia140.dll", + "build/netstandard2.0/CodeCoverage/codecoveragemessages.dll", + "build/netstandard2.0/CodeCoverage/coreclr/Microsoft.VisualStudio.CodeCoverage.Shim.dll", + "build/netstandard2.0/CodeCoverage/covrun32.dll", + "build/netstandard2.0/CodeCoverage/msdia140.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Core.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Instrumentation.Core.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Instrumentation.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.Interprocess.dll", + "build/netstandard2.0/Microsoft.CodeCoverage.props", + "build/netstandard2.0/Microsoft.CodeCoverage.targets", + "build/netstandard2.0/Microsoft.DiaSymReader.dll", + "build/netstandard2.0/Microsoft.VisualStudio.TraceDataCollector.dll", + "build/netstandard2.0/Mono.Cecil.Pdb.dll", + "build/netstandard2.0/Mono.Cecil.Rocks.dll", + "build/netstandard2.0/Mono.Cecil.dll", + "build/netstandard2.0/ThirdPartyNotices.txt", + "build/netstandard2.0/alpine/x64/Cov_x64.config", + "build/netstandard2.0/alpine/x64/libCoverageInstrumentationMethod.so", + "build/netstandard2.0/alpine/x64/libInstrumentationEngine.so", + "build/netstandard2.0/arm64/MicrosoftInstrumentationEngine_arm64.dll", + "build/netstandard2.0/cs/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/de/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/es/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/fr/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/it/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ja/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ko/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/macos/x64/Cov_x64.config", + "build/netstandard2.0/macos/x64/libCoverageInstrumentationMethod.dylib", + "build/netstandard2.0/macos/x64/libInstrumentationEngine.dylib", + "build/netstandard2.0/pl/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/pt-BR/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ru/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/tr/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/ubuntu/x64/Cov_x64.config", + "build/netstandard2.0/ubuntu/x64/libCoverageInstrumentationMethod.so", + "build/netstandard2.0/ubuntu/x64/libInstrumentationEngine.so", + "build/netstandard2.0/x64/MicrosoftInstrumentationEngine_x64.dll", + "build/netstandard2.0/x86/MicrosoftInstrumentationEngine_x86.dll", + "build/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "build/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TraceDataCollector.resources.dll", + "lib/net462/Microsoft.VisualStudio.CodeCoverage.Shim.dll", + "lib/net8.0/Microsoft.VisualStudio.CodeCoverage.Shim.dll", + "microsoft.codecoverage.17.14.1.nupkg.sha512", + "microsoft.codecoverage.nuspec" + ] + }, + "Microsoft.Data.Sqlite.Core/8.0.6": { + "sha512": "umhZ0ZF2RI81rGFTnYmCxI+Euj4Aqe/6Y4+8CxN9OVJNGDNIqB5laJ3wxQTU8zXCcm2k9F7FL+/6RVoOT4z1Fw==", + "type": "package", + "path": "microsoft.data.sqlite.core/8.0.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "lib/net6.0/Microsoft.Data.Sqlite.dll", + "lib/net6.0/Microsoft.Data.Sqlite.xml", + "lib/net8.0/Microsoft.Data.Sqlite.dll", + "lib/net8.0/Microsoft.Data.Sqlite.xml", + "lib/netstandard2.0/Microsoft.Data.Sqlite.dll", + "lib/netstandard2.0/Microsoft.Data.Sqlite.xml", + "microsoft.data.sqlite.core.8.0.6.nupkg.sha512", + "microsoft.data.sqlite.core.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore/8.0.18": { + "sha512": "LBc07vlgPxEXmjF0Kgn1S0mip3KLDPVD1OQOFu+4Mfpg1Z8OPMJ82MVCkqek1Ex2WeCzVGbNI9nRXcepHB+48g==", + "type": "package", + "path": "microsoft.entityframeworkcore/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "buildTransitive/net8.0/Microsoft.EntityFrameworkCore.props", + "lib/net8.0/Microsoft.EntityFrameworkCore.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.xml", + "microsoft.entityframeworkcore.8.0.18.nupkg.sha512", + "microsoft.entityframeworkcore.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Abstractions/8.0.18": { + "sha512": "aQGpxj0/RKXhSqDFbWENQgOg6WQH3z5Dezu3VBXaTCBHE6hAWQIZmmqdpO1k+lkANsoCSwPJZ4iFRqPPZXBXzg==", + "type": "package", + "path": "microsoft.entityframeworkcore.abstractions/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.Abstractions.xml", + "microsoft.entityframeworkcore.abstractions.8.0.18.nupkg.sha512", + "microsoft.entityframeworkcore.abstractions.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Analyzers/8.0.18": { + "sha512": "aYkyWRkb+o9++mtIWn5XSYPVND5N9mFFfvdmBX1s6kCss6XTaZsFXf8QjvaiXAcGblp/HoYzS5lusx0ZqeFxzQ==", + "type": "package", + "path": "microsoft.entityframeworkcore.analyzers/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "analyzers/dotnet/cs/Microsoft.EntityFrameworkCore.Analyzers.dll", + "docs/PACKAGE.md", + "lib/netstandard2.0/_._", + "microsoft.entityframeworkcore.analyzers.8.0.18.nupkg.sha512", + "microsoft.entityframeworkcore.analyzers.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Design/8.0.18": { + "sha512": "ONya9HGDtULSfoxld0ir12lxOxX2zp4TRYp6pO3wwXtWSYK3bU1kUSZMIJdeewznYcOfpCJVuSJVch6Y5xtIIQ==", + "type": "package", + "path": "microsoft.entityframeworkcore.design/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "build/net8.0/Microsoft.EntityFrameworkCore.Design.props", + "lib/net8.0/Microsoft.EntityFrameworkCore.Design.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.Design.xml", + "microsoft.entityframeworkcore.design.8.0.18.nupkg.sha512", + "microsoft.entityframeworkcore.design.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Relational/8.0.18": { + "sha512": "SL067ITd6QfDF9wNsNtGm3fROpnv3SNrOY3Fjb+efEUnKn5NI0sUitrtpUim+t1DtCJIs7qgmyCPdD3zjSt4Xw==", + "type": "package", + "path": "microsoft.entityframeworkcore.relational/8.0.18", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.Relational.xml", + "microsoft.entityframeworkcore.relational.8.0.18.nupkg.sha512", + "microsoft.entityframeworkcore.relational.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Sqlite/8.0.6": { + "sha512": "nC4cZN4zReTb22qd9WDU0eDmlXvkyf2g2pqQ3VIHJbkpJcdWSY/PDgwGpbpShsVcAjXbkjGiUcv9aGwa61xQPw==", + "type": "package", + "path": "microsoft.entityframeworkcore.sqlite/8.0.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "lib/net8.0/_._", + "microsoft.entityframeworkcore.sqlite.8.0.6.nupkg.sha512", + "microsoft.entityframeworkcore.sqlite.nuspec" + ] + }, + "Microsoft.EntityFrameworkCore.Sqlite.Core/8.0.6": { + "sha512": "87xfPtqSouxWWdynYZv/rubd0rOUeiN9+XeoMWQzpZm/5svH1TuvzFODGIY0zKuXS18NiOFyHl9N6///eaEs/Q==", + "type": "package", + "path": "microsoft.entityframeworkcore.sqlite.core/8.0.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "PACKAGE.md", + "lib/net8.0/Microsoft.EntityFrameworkCore.Sqlite.dll", + "lib/net8.0/Microsoft.EntityFrameworkCore.Sqlite.xml", + "microsoft.entityframeworkcore.sqlite.core.8.0.6.nupkg.sha512", + "microsoft.entityframeworkcore.sqlite.core.nuspec" + ] + }, + "Microsoft.Extensions.ApiDescription.Server/8.0.0": { + "sha512": "jDM3a95WerM8g6IcMiBXq1qRS9dqmEUpgnCk2DeMWpPkYtp1ia+CkXabOnK93JmhVlUmv8l9WMPsCSUm+WqkIA==", + "type": "package", + "path": "microsoft.extensions.apidescription.server/8.0.0", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "build/Microsoft.Extensions.ApiDescription.Server.props", + "build/Microsoft.Extensions.ApiDescription.Server.targets", + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.props", + "buildMultiTargeting/Microsoft.Extensions.ApiDescription.Server.targets", + "microsoft.extensions.apidescription.server.8.0.0.nupkg.sha512", + "microsoft.extensions.apidescription.server.nuspec", + "tools/Newtonsoft.Json.dll", + "tools/dotnet-getdocument.deps.json", + "tools/dotnet-getdocument.dll", + "tools/dotnet-getdocument.runtimeconfig.json", + "tools/net462-x86/GetDocument.Insider.exe", + "tools/net462-x86/GetDocument.Insider.exe.config", + "tools/net462-x86/System.Buffers.dll", + "tools/net462-x86/System.Diagnostics.DiagnosticSource.dll", + "tools/net462-x86/System.Memory.dll", + "tools/net462-x86/System.Numerics.Vectors.dll", + "tools/net462-x86/System.Runtime.CompilerServices.Unsafe.dll", + "tools/net462/GetDocument.Insider.exe", + "tools/net462/GetDocument.Insider.exe.config", + "tools/net462/System.Buffers.dll", + "tools/net462/System.Diagnostics.DiagnosticSource.dll", + "tools/net462/System.Memory.dll", + "tools/net462/System.Numerics.Vectors.dll", + "tools/net462/System.Runtime.CompilerServices.Unsafe.dll", + "tools/net8.0/GetDocument.Insider.deps.json", + "tools/net8.0/GetDocument.Insider.dll", + "tools/net8.0/GetDocument.Insider.exe", + "tools/net8.0/GetDocument.Insider.runtimeconfig.json", + "tools/net8.0/Microsoft.AspNetCore.Connections.Abstractions.dll", + "tools/net8.0/Microsoft.AspNetCore.Connections.Abstractions.xml", + "tools/net8.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.dll", + "tools/net8.0/Microsoft.AspNetCore.Hosting.Server.Abstractions.xml", + "tools/net8.0/Microsoft.AspNetCore.Http.Features.dll", + "tools/net8.0/Microsoft.AspNetCore.Http.Features.xml", + "tools/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "tools/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "tools/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "tools/net8.0/Microsoft.Extensions.Features.dll", + "tools/net8.0/Microsoft.Extensions.Features.xml", + "tools/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "tools/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "tools/net8.0/Microsoft.Extensions.Logging.Abstractions.dll", + "tools/net8.0/Microsoft.Extensions.Options.dll", + "tools/net8.0/Microsoft.Extensions.Primitives.dll", + "tools/net8.0/Microsoft.Net.Http.Headers.dll", + "tools/net8.0/Microsoft.Net.Http.Headers.xml", + "tools/net8.0/System.IO.Pipelines.dll", + "tools/netcoreapp2.1/GetDocument.Insider.deps.json", + "tools/netcoreapp2.1/GetDocument.Insider.dll", + "tools/netcoreapp2.1/GetDocument.Insider.runtimeconfig.json", + "tools/netcoreapp2.1/System.Diagnostics.DiagnosticSource.dll" + ] + }, + "Microsoft.Extensions.Caching.Abstractions/8.0.0": { + "sha512": "3KuSxeHoNYdxVYfg2IRZCThcrlJ1XJqIXkAWikCsbm5C/bCjv7G0WoKDyuR98Q+T607QT2Zl5GsbGRkENcV2yQ==", + "type": "package", + "path": "microsoft.extensions.caching.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Caching.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Caching.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Abstractions.xml", + "microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.caching.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Caching.Memory/8.0.1": { + "sha512": "HFDnhYLccngrzyGgHkjEDU5FMLn4MpOsr5ElgsBMC4yx6lJh4jeWO7fHS8+TXPq+dgxCmUa/Trl8svObmwW4QA==", + "type": "package", + "path": "microsoft.extensions.caching.memory/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Caching.Memory.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Caching.Memory.targets", + "lib/net462/Microsoft.Extensions.Caching.Memory.dll", + "lib/net462/Microsoft.Extensions.Caching.Memory.xml", + "lib/net6.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/net6.0/Microsoft.Extensions.Caching.Memory.xml", + "lib/net7.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/net7.0/Microsoft.Extensions.Caching.Memory.xml", + "lib/net8.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/net8.0/Microsoft.Extensions.Caching.Memory.xml", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.dll", + "lib/netstandard2.0/Microsoft.Extensions.Caching.Memory.xml", + "microsoft.extensions.caching.memory.8.0.1.nupkg.sha512", + "microsoft.extensions.caching.memory.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration/8.0.0": { + "sha512": "0J/9YNXTMWSZP2p2+nvl8p71zpSwokZXZuJW+VjdErkegAnFdO1XlqtA62SJtgVYHdKu3uPxJHcMR/r35HwFBA==", + "type": "package", + "path": "microsoft.extensions.configuration/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.targets", + "lib/net462/Microsoft.Extensions.Configuration.dll", + "lib/net462/Microsoft.Extensions.Configuration.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.xml", + "microsoft.extensions.configuration.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.Abstractions/8.0.0": { + "sha512": "3lE/iLSutpgX1CC0NOW70FJoGARRHbyKmG7dc0klnUZ9Dd9hS6N/POPWhKhMLCEuNN5nXEY5agmlFtH562vqhQ==", + "type": "package", + "path": "microsoft.extensions.configuration.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml", + "microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.Binder/8.0.2": { + "sha512": "7IQhGK+wjyGrNsPBjJcZwWAr+Wf6D4+TwOptUt77bWtgNkiV8tDEbhFS+dDamtQFZ2X7kWG9m71iZQRj2x3zgQ==", + "type": "package", + "path": "microsoft.extensions.configuration.binder/8.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/cs/Microsoft.Extensions.Configuration.Binder.SourceGeneration.dll", + "analyzers/dotnet/cs/cs/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/de/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/es/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/fr/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/it/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/ja/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/ko/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/pl/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/pt-BR/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/ru/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/tr/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/zh-Hans/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "analyzers/dotnet/cs/zh-Hant/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets", + "lib/net462/Microsoft.Extensions.Configuration.Binder.dll", + "lib/net462/Microsoft.Extensions.Configuration.Binder.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.Binder.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.Binder.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.Binder.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.xml", + "microsoft.extensions.configuration.binder.8.0.2.nupkg.sha512", + "microsoft.extensions.configuration.binder.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.CommandLine/8.0.0": { + "sha512": "NZuZMz3Q8Z780nKX3ifV1fE7lS+6pynDHK71OfU4OZ1ItgvDOhyOC7E6z+JMZrAj63zRpwbdldYFk499t3+1dQ==", + "type": "package", + "path": "microsoft.extensions.configuration.commandline/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.CommandLine.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.CommandLine.targets", + "lib/net462/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/net462/Microsoft.Extensions.Configuration.CommandLine.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.CommandLine.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.CommandLine.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.CommandLine.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.CommandLine.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.CommandLine.xml", + "microsoft.extensions.configuration.commandline.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.commandline.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.EnvironmentVariables/8.0.0": { + "sha512": "plvZ0ZIpq+97gdPNNvhwvrEZ92kNml9hd1pe3idMA7svR0PztdzVLkoWLcRFgySYXUJc3kSM3Xw3mNFMo/bxRA==", + "type": "package", + "path": "microsoft.extensions.configuration.environmentvariables/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.EnvironmentVariables.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.targets", + "lib/net462/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/net462/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.EnvironmentVariables.xml", + "microsoft.extensions.configuration.environmentvariables.8.0.0.nupkg.sha512", + "microsoft.extensions.configuration.environmentvariables.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.FileExtensions/8.0.1": { + "sha512": "EJzSNO9oaAXnTdtdNO6npPRsIIeZCBSNmdQ091VDO7fBiOtJAAeEq6dtrVXIi3ZyjC5XRSAtVvF8SzcneRHqKQ==", + "type": "package", + "path": "microsoft.extensions.configuration.fileextensions/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.FileExtensions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.FileExtensions.targets", + "lib/net462/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/net462/Microsoft.Extensions.Configuration.FileExtensions.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.FileExtensions.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.FileExtensions.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.FileExtensions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.FileExtensions.xml", + "microsoft.extensions.configuration.fileextensions.8.0.1.nupkg.sha512", + "microsoft.extensions.configuration.fileextensions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.Json/8.0.1": { + "sha512": "L89DLNuimOghjV3tLx0ArFDwVEJD6+uGB3BMCMX01kaLzXkaXHb2021xOMl2QOxUxbdePKUZsUY7n2UUkycjRg==", + "type": "package", + "path": "microsoft.extensions.configuration.json/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.Json.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.Json.targets", + "lib/net462/Microsoft.Extensions.Configuration.Json.dll", + "lib/net462/Microsoft.Extensions.Configuration.Json.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.Json.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.Json.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.Json.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.Json.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.Json.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.Json.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Json.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.Json.xml", + "lib/netstandard2.1/Microsoft.Extensions.Configuration.Json.dll", + "lib/netstandard2.1/Microsoft.Extensions.Configuration.Json.xml", + "microsoft.extensions.configuration.json.8.0.1.nupkg.sha512", + "microsoft.extensions.configuration.json.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Configuration.UserSecrets/8.0.1": { + "sha512": "7tYqdPPpAK+3jO9d5LTuCK2VxrEdf85Ol4trUr6ds4jclBecadWZ/RyPCbNjfbN5iGTfUnD/h65TOQuqQv2c+A==", + "type": "package", + "path": "microsoft.extensions.configuration.usersecrets/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Configuration.UserSecrets.targets", + "buildTransitive/net462/Microsoft.Extensions.Configuration.UserSecrets.props", + "buildTransitive/net462/Microsoft.Extensions.Configuration.UserSecrets.targets", + "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.props", + "buildTransitive/net6.0/Microsoft.Extensions.Configuration.UserSecrets.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.UserSecrets.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.props", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.targets", + "lib/net462/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/net462/Microsoft.Extensions.Configuration.UserSecrets.xml", + "lib/net6.0/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/net6.0/Microsoft.Extensions.Configuration.UserSecrets.xml", + "lib/net7.0/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/net7.0/Microsoft.Extensions.Configuration.UserSecrets.xml", + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/net8.0/Microsoft.Extensions.Configuration.UserSecrets.xml", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.dll", + "lib/netstandard2.0/Microsoft.Extensions.Configuration.UserSecrets.xml", + "microsoft.extensions.configuration.usersecrets.8.0.1.nupkg.sha512", + "microsoft.extensions.configuration.usersecrets.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyInjection/8.0.1": { + "sha512": "BmANAnR5Xd4Oqw7yQ75xOAYODybZQRzdeNucg7kS5wWKd2PNnMdYtJ2Vciy0QLylRmv42DGl5+AFL9izA6F1Rw==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets", + "lib/net462/Microsoft.Extensions.DependencyInjection.dll", + "lib/net462/Microsoft.Extensions.DependencyInjection.xml", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml", + "microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512", + "microsoft.extensions.dependencyinjection.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyInjection.Abstractions/8.0.2": { + "sha512": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==", + "type": "package", + "path": "microsoft.extensions.dependencyinjection.abstractions/8.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets", + "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll", + "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml", + "microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512", + "microsoft.extensions.dependencyinjection.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.DependencyModel/8.0.2": { + "sha512": "mUBDZZRgZrSyFOsJ2qJJ9fXfqd/kXJwf3AiDoqLD9m6TjY5OO/vLNOb9fb4juC0487eq4hcGN/M2Rh/CKS7QYw==", + "type": "package", + "path": "microsoft.extensions.dependencymodel/8.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.DependencyModel.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyModel.targets", + "lib/net462/Microsoft.Extensions.DependencyModel.dll", + "lib/net462/Microsoft.Extensions.DependencyModel.xml", + "lib/net6.0/Microsoft.Extensions.DependencyModel.dll", + "lib/net6.0/Microsoft.Extensions.DependencyModel.xml", + "lib/net7.0/Microsoft.Extensions.DependencyModel.dll", + "lib/net7.0/Microsoft.Extensions.DependencyModel.xml", + "lib/net8.0/Microsoft.Extensions.DependencyModel.dll", + "lib/net8.0/Microsoft.Extensions.DependencyModel.xml", + "lib/netstandard2.0/Microsoft.Extensions.DependencyModel.dll", + "lib/netstandard2.0/Microsoft.Extensions.DependencyModel.xml", + "microsoft.extensions.dependencymodel.8.0.2.nupkg.sha512", + "microsoft.extensions.dependencymodel.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Diagnostics/8.0.1": { + "sha512": "doVPCUUCY7c6LhBsEfiy3W1bvS7Mi6LkfQMS8nlC22jZWNxBv8VO8bdfeyvpYFst6Kxqk7HBC6lytmEoBssvSQ==", + "type": "package", + "path": "microsoft.extensions.diagnostics/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Diagnostics.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Diagnostics.targets", + "lib/net462/Microsoft.Extensions.Diagnostics.dll", + "lib/net462/Microsoft.Extensions.Diagnostics.xml", + "lib/net6.0/Microsoft.Extensions.Diagnostics.dll", + "lib/net6.0/Microsoft.Extensions.Diagnostics.xml", + "lib/net7.0/Microsoft.Extensions.Diagnostics.dll", + "lib/net7.0/Microsoft.Extensions.Diagnostics.xml", + "lib/net8.0/Microsoft.Extensions.Diagnostics.dll", + "lib/net8.0/Microsoft.Extensions.Diagnostics.xml", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.dll", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.xml", + "microsoft.extensions.diagnostics.8.0.1.nupkg.sha512", + "microsoft.extensions.diagnostics.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Diagnostics.Abstractions/8.0.1": { + "sha512": "elH2vmwNmsXuKmUeMQ4YW9ldXiF+gSGDgg1vORksob5POnpaI6caj1Hu8zaYbEuibhqCoWg0YRWDazBY3zjBfg==", + "type": "package", + "path": "microsoft.extensions.diagnostics.abstractions/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Diagnostics.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Diagnostics.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.Abstractions.xml", + "microsoft.extensions.diagnostics.abstractions.8.0.1.nupkg.sha512", + "microsoft.extensions.diagnostics.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.FileProviders.Abstractions/8.0.0": { + "sha512": "ZbaMlhJlpisjuWbvXr4LdAst/1XxH3vZ6A0BsgTphZ2L4PGuxRLz7Jr/S7mkAAnOn78Vu0fKhEgNF5JO3zfjqQ==", + "type": "package", + "path": "microsoft.extensions.fileproviders.abstractions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.FileProviders.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.FileProviders.Abstractions.targets", + "lib/net462/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/net462/Microsoft.Extensions.FileProviders.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.FileProviders.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.FileProviders.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Abstractions.xml", + "microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512", + "microsoft.extensions.fileproviders.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.FileProviders.Physical/8.0.0": { + "sha512": "UboiXxpPUpwulHvIAVE36Knq0VSHaAmfrFkegLyBZeaADuKezJ/AIXYAW8F5GBlGk/VaibN2k/Zn1ca8YAfVdA==", + "type": "package", + "path": "microsoft.extensions.fileproviders.physical/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.FileProviders.Physical.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.FileProviders.Physical.targets", + "lib/net462/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/net462/Microsoft.Extensions.FileProviders.Physical.xml", + "lib/net6.0/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/net6.0/Microsoft.Extensions.FileProviders.Physical.xml", + "lib/net7.0/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/net7.0/Microsoft.Extensions.FileProviders.Physical.xml", + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/net8.0/Microsoft.Extensions.FileProviders.Physical.xml", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.dll", + "lib/netstandard2.0/Microsoft.Extensions.FileProviders.Physical.xml", + "microsoft.extensions.fileproviders.physical.8.0.0.nupkg.sha512", + "microsoft.extensions.fileproviders.physical.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.FileSystemGlobbing/8.0.0": { + "sha512": "OK+670i7esqlQrPjdIKRbsyMCe9g5kSLpRRQGSr4Q58AOYEe/hCnfLZprh7viNisSUUQZmMrbbuDaIrP+V1ebQ==", + "type": "package", + "path": "microsoft.extensions.filesystemglobbing/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.FileSystemGlobbing.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.FileSystemGlobbing.targets", + "lib/net462/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/net462/Microsoft.Extensions.FileSystemGlobbing.xml", + "lib/net6.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/net6.0/Microsoft.Extensions.FileSystemGlobbing.xml", + "lib/net7.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/net7.0/Microsoft.Extensions.FileSystemGlobbing.xml", + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/net8.0/Microsoft.Extensions.FileSystemGlobbing.xml", + "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.dll", + "lib/netstandard2.0/Microsoft.Extensions.FileSystemGlobbing.xml", + "microsoft.extensions.filesystemglobbing.8.0.0.nupkg.sha512", + "microsoft.extensions.filesystemglobbing.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Hosting/8.0.1": { + "sha512": "bP9EEkHBEfjgYiG8nUaXqMk/ujwJrffOkNPP7onpRMO8R+OUSESSP4xHkCAXgYZ1COP2Q9lXlU5gkMFh20gRuw==", + "type": "package", + "path": "microsoft.extensions.hosting/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Hosting.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Hosting.targets", + "lib/net462/Microsoft.Extensions.Hosting.dll", + "lib/net462/Microsoft.Extensions.Hosting.xml", + "lib/net6.0/Microsoft.Extensions.Hosting.dll", + "lib/net6.0/Microsoft.Extensions.Hosting.xml", + "lib/net7.0/Microsoft.Extensions.Hosting.dll", + "lib/net7.0/Microsoft.Extensions.Hosting.xml", + "lib/net8.0/Microsoft.Extensions.Hosting.dll", + "lib/net8.0/Microsoft.Extensions.Hosting.xml", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.dll", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.xml", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.dll", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.xml", + "microsoft.extensions.hosting.8.0.1.nupkg.sha512", + "microsoft.extensions.hosting.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Hosting.Abstractions/8.0.1": { + "sha512": "nHwq9aPBdBPYXPti6wYEEfgXddfBrYC+CQLn+qISiwQq5tpfaqDZSKOJNxoe9rfQxGf1c+2wC/qWFe1QYJPYqw==", + "type": "package", + "path": "microsoft.extensions.hosting.abstractions/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Hosting.Abstractions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Hosting.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Hosting.Abstractions.xml", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.Abstractions.dll", + "lib/netstandard2.1/Microsoft.Extensions.Hosting.Abstractions.xml", + "microsoft.extensions.hosting.abstractions.8.0.1.nupkg.sha512", + "microsoft.extensions.hosting.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging/8.0.1": { + "sha512": "4x+pzsQEbqxhNf1QYRr5TDkLP9UsLT3A6MdRKDDEgrW7h1ljiEPgTNhKYUhNCCAaVpQECVQ+onA91PTPnIp6Lw==", + "type": "package", + "path": "microsoft.extensions.logging/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.targets", + "lib/net462/Microsoft.Extensions.Logging.dll", + "lib/net462/Microsoft.Extensions.Logging.xml", + "lib/net6.0/Microsoft.Extensions.Logging.dll", + "lib/net6.0/Microsoft.Extensions.Logging.xml", + "lib/net7.0/Microsoft.Extensions.Logging.dll", + "lib/net7.0/Microsoft.Extensions.Logging.xml", + "lib/net8.0/Microsoft.Extensions.Logging.dll", + "lib/net8.0/Microsoft.Extensions.Logging.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.xml", + "lib/netstandard2.1/Microsoft.Extensions.Logging.dll", + "lib/netstandard2.1/Microsoft.Extensions.Logging.xml", + "microsoft.extensions.logging.8.0.1.nupkg.sha512", + "microsoft.extensions.logging.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Abstractions/8.0.2": { + "sha512": "nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==", + "type": "package", + "path": "microsoft.extensions.logging.abstractions/8.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll", + "buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets", + "lib/net462/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net462/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml", + "microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512", + "microsoft.extensions.logging.abstractions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Configuration/8.0.1": { + "sha512": "QWwTrsgOnJMmn+XUslm8D2H1n3PkP/u/v52FODtyBc/k4W9r3i2vcXXeeX/upnzllJYRRbrzVzT0OclfNJtBJA==", + "type": "package", + "path": "microsoft.extensions.logging.configuration/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.Configuration.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Configuration.targets", + "lib/net462/Microsoft.Extensions.Logging.Configuration.dll", + "lib/net462/Microsoft.Extensions.Logging.Configuration.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Configuration.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Configuration.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Configuration.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Configuration.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Configuration.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Configuration.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Configuration.xml", + "microsoft.extensions.logging.configuration.8.0.1.nupkg.sha512", + "microsoft.extensions.logging.configuration.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Console/8.0.1": { + "sha512": "uzcg/5U2eLyn5LIKlERkdSxw6VPC1yydnOSQiRRWGBGN3kphq3iL4emORzrojScDmxRhv49gp5BI8U3Dz7y4iA==", + "type": "package", + "path": "microsoft.extensions.logging.console/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.Console.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Console.targets", + "lib/net462/Microsoft.Extensions.Logging.Console.dll", + "lib/net462/Microsoft.Extensions.Logging.Console.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Console.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Console.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Console.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Console.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Console.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Console.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Console.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Console.xml", + "microsoft.extensions.logging.console.8.0.1.nupkg.sha512", + "microsoft.extensions.logging.console.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.Debug/8.0.1": { + "sha512": "B8hqNuYudC2RB+L/DI33uO4rf5by41fZVdcVL2oZj0UyoAZqnwTwYHp1KafoH4nkl1/23piNeybFFASaV2HkFg==", + "type": "package", + "path": "microsoft.extensions.logging.debug/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.Debug.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Debug.targets", + "lib/net462/Microsoft.Extensions.Logging.Debug.dll", + "lib/net462/Microsoft.Extensions.Logging.Debug.xml", + "lib/net6.0/Microsoft.Extensions.Logging.Debug.dll", + "lib/net6.0/Microsoft.Extensions.Logging.Debug.xml", + "lib/net7.0/Microsoft.Extensions.Logging.Debug.dll", + "lib/net7.0/Microsoft.Extensions.Logging.Debug.xml", + "lib/net8.0/Microsoft.Extensions.Logging.Debug.dll", + "lib/net8.0/Microsoft.Extensions.Logging.Debug.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Debug.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.Debug.xml", + "microsoft.extensions.logging.debug.8.0.1.nupkg.sha512", + "microsoft.extensions.logging.debug.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.EventLog/8.0.1": { + "sha512": "ZD1m4GXoxcZeDJIq8qePKj+QAWeQNO/OG8skvrOG8RQfxLp9MAKRoliTc27xanoNUzeqvX5HhS/I7c0BvwAYUg==", + "type": "package", + "path": "microsoft.extensions.logging.eventlog/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.EventLog.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.EventLog.targets", + "lib/net462/Microsoft.Extensions.Logging.EventLog.dll", + "lib/net462/Microsoft.Extensions.Logging.EventLog.xml", + "lib/net6.0/Microsoft.Extensions.Logging.EventLog.dll", + "lib/net6.0/Microsoft.Extensions.Logging.EventLog.xml", + "lib/net7.0/Microsoft.Extensions.Logging.EventLog.dll", + "lib/net7.0/Microsoft.Extensions.Logging.EventLog.xml", + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.dll", + "lib/net8.0/Microsoft.Extensions.Logging.EventLog.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.EventLog.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.EventLog.xml", + "microsoft.extensions.logging.eventlog.8.0.1.nupkg.sha512", + "microsoft.extensions.logging.eventlog.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Logging.EventSource/8.0.1": { + "sha512": "YMXMAla6B6sEf/SnfZYTty633Ool3AH7KOw2LOaaEqwSo2piK4f7HMtzyc3CNiipDnq1fsUSuG5Oc7ZzpVy8WQ==", + "type": "package", + "path": "microsoft.extensions.logging.eventsource/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Logging.EventSource.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.EventSource.targets", + "lib/net462/Microsoft.Extensions.Logging.EventSource.dll", + "lib/net462/Microsoft.Extensions.Logging.EventSource.xml", + "lib/net6.0/Microsoft.Extensions.Logging.EventSource.dll", + "lib/net6.0/Microsoft.Extensions.Logging.EventSource.xml", + "lib/net7.0/Microsoft.Extensions.Logging.EventSource.dll", + "lib/net7.0/Microsoft.Extensions.Logging.EventSource.xml", + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.dll", + "lib/net8.0/Microsoft.Extensions.Logging.EventSource.xml", + "lib/netstandard2.0/Microsoft.Extensions.Logging.EventSource.dll", + "lib/netstandard2.0/Microsoft.Extensions.Logging.EventSource.xml", + "microsoft.extensions.logging.eventsource.8.0.1.nupkg.sha512", + "microsoft.extensions.logging.eventsource.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Options/8.0.2": { + "sha512": "dWGKvhFybsaZpGmzkGCbNNwBD1rVlWzrZKANLW/CcbFJpCEceMCGzT7zZwHOGBCbwM0SzBuceMj5HN1LKV1QqA==", + "type": "package", + "path": "microsoft.extensions.options/8.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Options.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll", + "buildTransitive/net461/Microsoft.Extensions.Options.targets", + "buildTransitive/net462/Microsoft.Extensions.Options.targets", + "buildTransitive/net6.0/Microsoft.Extensions.Options.targets", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets", + "buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets", + "lib/net462/Microsoft.Extensions.Options.dll", + "lib/net462/Microsoft.Extensions.Options.xml", + "lib/net6.0/Microsoft.Extensions.Options.dll", + "lib/net6.0/Microsoft.Extensions.Options.xml", + "lib/net7.0/Microsoft.Extensions.Options.dll", + "lib/net7.0/Microsoft.Extensions.Options.xml", + "lib/net8.0/Microsoft.Extensions.Options.dll", + "lib/net8.0/Microsoft.Extensions.Options.xml", + "lib/netstandard2.0/Microsoft.Extensions.Options.dll", + "lib/netstandard2.0/Microsoft.Extensions.Options.xml", + "lib/netstandard2.1/Microsoft.Extensions.Options.dll", + "lib/netstandard2.1/Microsoft.Extensions.Options.xml", + "microsoft.extensions.options.8.0.2.nupkg.sha512", + "microsoft.extensions.options.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Options.ConfigurationExtensions/8.0.0": { + "sha512": "0f4DMRqEd50zQh+UyJc+/HiBsZ3vhAQALgdkcQEalSH1L2isdC7Yj54M3cyo5e+BeO5fcBQ7Dxly8XiBBcvRgw==", + "type": "package", + "path": "microsoft.extensions.options.configurationextensions/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Options.ConfigurationExtensions.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.ConfigurationExtensions.targets", + "lib/net462/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/net462/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "lib/net6.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/net6.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "lib/net7.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/net7.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll", + "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml", + "microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512", + "microsoft.extensions.options.configurationextensions.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.Extensions.Primitives/8.0.0": { + "sha512": "bXJEZrW9ny8vjMF1JV253WeLhpEVzFo1lyaZu1vQ4ZxWUlVvknZ/+ftFgVheLubb4eZPSwwxBeqS1JkCOjxd8g==", + "type": "package", + "path": "microsoft.extensions.primitives/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/Microsoft.Extensions.Primitives.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets", + "lib/net462/Microsoft.Extensions.Primitives.dll", + "lib/net462/Microsoft.Extensions.Primitives.xml", + "lib/net6.0/Microsoft.Extensions.Primitives.dll", + "lib/net6.0/Microsoft.Extensions.Primitives.xml", + "lib/net7.0/Microsoft.Extensions.Primitives.dll", + "lib/net7.0/Microsoft.Extensions.Primitives.xml", + "lib/net8.0/Microsoft.Extensions.Primitives.dll", + "lib/net8.0/Microsoft.Extensions.Primitives.xml", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll", + "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml", + "microsoft.extensions.primitives.8.0.0.nupkg.sha512", + "microsoft.extensions.primitives.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "Microsoft.NET.Test.Sdk/17.14.1": { + "sha512": "HJKqKOE+vshXra2aEHpi2TlxYX7Z9VFYkr+E5rwEvHC8eIXiyO+K9kNm8vmNom3e2rA56WqxU+/N9NJlLGXsJQ==", + "type": "package", + "path": "microsoft.net.test.sdk/17.14.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "build/net462/Microsoft.NET.Test.Sdk.props", + "build/net462/Microsoft.NET.Test.Sdk.targets", + "build/net8.0/Microsoft.NET.Test.Sdk.Program.cs", + "build/net8.0/Microsoft.NET.Test.Sdk.Program.fs", + "build/net8.0/Microsoft.NET.Test.Sdk.Program.vb", + "build/net8.0/Microsoft.NET.Test.Sdk.props", + "build/net8.0/Microsoft.NET.Test.Sdk.targets", + "build/netcoreapp2.0/Microsoft.NET.Test.Sdk.props", + "build/netcoreapp2.0/Microsoft.NET.Test.Sdk.targets", + "build/netstandard2.0/Microsoft.NET.Test.Sdk.props", + "build/netstandard2.0/Microsoft.NET.Test.Sdk.targets", + "buildMultiTargeting/net462/Microsoft.NET.Test.Sdk.props", + "buildMultiTargeting/net8.0/Microsoft.NET.Test.Sdk.props", + "buildMultiTargeting/netcoreapp2.0/Microsoft.NET.Test.Sdk.props", + "buildMultiTargeting/netcoreapp2.0/Microsoft.NET.Test.Sdk.targets", + "buildMultiTargeting/netstandard2.0/Microsoft.NET.Test.Sdk.props", + "buildMultiTargeting/netstandard2.0/Microsoft.NET.Test.Sdk.targets", + "lib/native/_._", + "lib/net462/_._", + "lib/net8.0/_._", + "microsoft.net.test.sdk.17.14.1.nupkg.sha512", + "microsoft.net.test.sdk.nuspec" + ] + }, + "Microsoft.OpenApi/1.6.23": { + "sha512": "tZ1I0KXnn98CWuV8cpI247A17jaY+ILS9vvF7yhI0uPPEqF4P1d7BWL5Uwtel10w9NucllHB3nTkfYTAcHAh8g==", + "type": "package", + "path": "microsoft.openapi/1.6.23", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/netstandard2.0/Microsoft.OpenApi.dll", + "lib/netstandard2.0/Microsoft.OpenApi.pdb", + "lib/netstandard2.0/Microsoft.OpenApi.xml", + "microsoft.openapi.1.6.23.nupkg.sha512", + "microsoft.openapi.nuspec" + ] + }, + "Microsoft.TestPlatform.ObjectModel/17.14.1": { + "sha512": "xTP1W6Mi6SWmuxd3a+jj9G9UoC850WGwZUps1Wah9r1ZxgXhdJfj1QqDLJkFjHDCvN42qDL2Ps5KjQYWUU0zcQ==", + "type": "package", + "path": "microsoft.testplatform.objectmodel/17.14.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/net462/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/net462/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/net462/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/net462/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net462/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net462/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/net8.0/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/net8.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/netstandard2.0/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/netstandard2.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/netstandard2.0/cs/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/cs/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/de/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/de/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/es/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/es/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/fr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/fr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/it/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/it/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/ja/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/ja/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/ko/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/ko/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/pl/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/pl/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/pt-BR/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/ru/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/ru/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/tr/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/tr/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.TestPlatform.CoreUtilities.resources.dll", + "lib/netstandard2.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.ObjectModel.resources.dll", + "microsoft.testplatform.objectmodel.17.14.1.nupkg.sha512", + "microsoft.testplatform.objectmodel.nuspec" + ] + }, + "Microsoft.TestPlatform.TestHost/17.14.1": { + "sha512": "d78LPzGKkJwsJXAQwsbJJ7LE7D1wB+rAyhHHAaODF+RDSQ0NgMjDFkSA1Djw18VrxO76GlKAjRUhl+H8NL8Z+Q==", + "type": "package", + "path": "microsoft.testplatform.testhost/17.14.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "ThirdPartyNotices.txt", + "build/net8.0/Microsoft.TestPlatform.TestHost.props", + "build/net8.0/Microsoft.TestPlatform.TestHost.targets", + "build/net8.0/x64/testhost.dll", + "build/net8.0/x64/testhost.exe", + "build/net8.0/x86/testhost.x86.dll", + "build/net8.0/x86/testhost.x86.exe", + "lib/net462/_._", + "lib/net8.0/Microsoft.TestPlatform.CommunicationUtilities.dll", + "lib/net8.0/Microsoft.TestPlatform.CoreUtilities.dll", + "lib/net8.0/Microsoft.TestPlatform.CrossPlatEngine.dll", + "lib/net8.0/Microsoft.TestPlatform.PlatformAbstractions.dll", + "lib/net8.0/Microsoft.TestPlatform.Utilities.dll", + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.Common.dll", + "lib/net8.0/Microsoft.VisualStudio.TestPlatform.ObjectModel.dll", + "lib/net8.0/cs/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/cs/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/cs/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/de/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/de/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/de/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/es/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/es/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/es/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/fr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/fr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/fr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/it/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/it/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/it/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/ja/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/ja/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/ja/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/ko/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/ko/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/ko/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/pl/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/pl/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/pl/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/pt-BR/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/pt-BR/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/pt-BR/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/ru/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/ru/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/ru/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/testhost.deps.json", + "lib/net8.0/testhost.dll", + "lib/net8.0/tr/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/tr/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/tr/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/x64/msdia140.dll", + "lib/net8.0/x86/msdia140.dll", + "lib/net8.0/zh-Hans/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/zh-Hans/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.TestPlatform.CommunicationUtilities.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.TestPlatform.CrossPlatEngine.resources.dll", + "lib/net8.0/zh-Hant/Microsoft.VisualStudio.TestPlatform.Common.resources.dll", + "microsoft.testplatform.testhost.17.14.1.nupkg.sha512", + "microsoft.testplatform.testhost.nuspec" + ] + }, + "Mono.TextTemplating/2.2.1": { + "sha512": "KZYeKBET/2Z0gY1WlTAK7+RHTl7GSbtvTLDXEZZojUdAPqpQNDL6tHv7VUpqfX5VEOh+uRGKaZXkuD253nEOBQ==", + "type": "package", + "path": "mono.texttemplating/2.2.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net472/Mono.TextTemplating.dll", + "lib/netstandard2.0/Mono.TextTemplating.dll", + "mono.texttemplating.2.2.1.nupkg.sha512", + "mono.texttemplating.nuspec" + ] + }, + "Moq/4.20.72": { + "sha512": "EA55cjyNn8eTNWrgrdZJH5QLFp2L43oxl1tlkoYUKIE9pRwL784OWiTXeCV5ApS+AMYEAlt7Fo03A2XfouvHmQ==", + "type": "package", + "path": "moq/4.20.72", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "icon.png", + "lib/net462/Moq.dll", + "lib/net6.0/Moq.dll", + "lib/netstandard2.0/Moq.dll", + "lib/netstandard2.1/Moq.dll", + "moq.4.20.72.nupkg.sha512", + "moq.nuspec", + "readme.md" + ] + }, + "MySqlConnector/2.3.5": { + "sha512": "AmEfUPkFl+Ev6jJ8Dhns3CYHBfD12RHzGYWuLt6DfG6/af6YvOMyPz74ZPPjBYQGRJkumD2Z48Kqm8s5DJuhLA==", + "type": "package", + "path": "mysqlconnector/2.3.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "lib/net462/MySqlConnector.dll", + "lib/net462/MySqlConnector.xml", + "lib/net471/MySqlConnector.dll", + "lib/net471/MySqlConnector.xml", + "lib/net48/MySqlConnector.dll", + "lib/net48/MySqlConnector.xml", + "lib/net6.0/MySqlConnector.dll", + "lib/net6.0/MySqlConnector.xml", + "lib/net7.0/MySqlConnector.dll", + "lib/net7.0/MySqlConnector.xml", + "lib/net8.0/MySqlConnector.dll", + "lib/net8.0/MySqlConnector.xml", + "lib/netstandard2.0/MySqlConnector.dll", + "lib/netstandard2.0/MySqlConnector.xml", + "lib/netstandard2.1/MySqlConnector.dll", + "lib/netstandard2.1/MySqlConnector.xml", + "logo.png", + "mysqlconnector.2.3.5.nupkg.sha512", + "mysqlconnector.nuspec" + ] + }, + "Newtonsoft.Json/13.0.3": { + "sha512": "HrC5BXdl00IP9zeV+0Z848QWPAoCr9P3bDEZguI+gkLcBKAOxix/tLEAAHC+UvDNPv4a2d18lOReHMOagPa+zQ==", + "type": "package", + "path": "newtonsoft.json/13.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.md", + "README.md", + "lib/net20/Newtonsoft.Json.dll", + "lib/net20/Newtonsoft.Json.xml", + "lib/net35/Newtonsoft.Json.dll", + "lib/net35/Newtonsoft.Json.xml", + "lib/net40/Newtonsoft.Json.dll", + "lib/net40/Newtonsoft.Json.xml", + "lib/net45/Newtonsoft.Json.dll", + "lib/net45/Newtonsoft.Json.xml", + "lib/net6.0/Newtonsoft.Json.dll", + "lib/net6.0/Newtonsoft.Json.xml", + "lib/netstandard1.0/Newtonsoft.Json.dll", + "lib/netstandard1.0/Newtonsoft.Json.xml", + "lib/netstandard1.3/Newtonsoft.Json.dll", + "lib/netstandard1.3/Newtonsoft.Json.xml", + "lib/netstandard2.0/Newtonsoft.Json.dll", + "lib/netstandard2.0/Newtonsoft.Json.xml", + "newtonsoft.json.13.0.3.nupkg.sha512", + "newtonsoft.json.nuspec", + "packageIcon.png" + ] + }, + "Pfim/0.11.3": { + "sha512": "UNVStuGHVIGyBlQaLX8VY6KpzZm/pG2zpV8ewNSXNFKFVPn8dLQKJITfps3lwUMzwTL+Do7RrMUvgQ1ZsPTu4w==", + "type": "package", + "path": "pfim/0.11.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/Pfim.dll", + "pfim.0.11.3.nupkg.sha512", + "pfim.nuspec" + ] + }, + "Pipelines.Sockets.Unofficial/2.2.8": { + "sha512": "zG2FApP5zxSx6OcdJQLbZDk2AVlN2BNQD6MorwIfV6gVj0RRxWPEp2LXAxqDGZqeNV1Zp0BNPcNaey/GXmTdvQ==", + "type": "package", + "path": "pipelines.sockets.unofficial/2.2.8", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/Pipelines.Sockets.Unofficial.dll", + "lib/net461/Pipelines.Sockets.Unofficial.xml", + "lib/net472/Pipelines.Sockets.Unofficial.dll", + "lib/net472/Pipelines.Sockets.Unofficial.xml", + "lib/net5.0/Pipelines.Sockets.Unofficial.dll", + "lib/net5.0/Pipelines.Sockets.Unofficial.xml", + "lib/netcoreapp3.1/Pipelines.Sockets.Unofficial.dll", + "lib/netcoreapp3.1/Pipelines.Sockets.Unofficial.xml", + "lib/netstandard2.0/Pipelines.Sockets.Unofficial.dll", + "lib/netstandard2.0/Pipelines.Sockets.Unofficial.xml", + "lib/netstandard2.1/Pipelines.Sockets.Unofficial.dll", + "lib/netstandard2.1/Pipelines.Sockets.Unofficial.xml", + "pipelines.sockets.unofficial.2.2.8.nupkg.sha512", + "pipelines.sockets.unofficial.nuspec" + ] + }, + "Pomelo.EntityFrameworkCore.MySql/8.0.2": { + "sha512": "XjnlcxVBLnEMbyEc5cZzgZeDyLvAniACZQ04W1slWN0f4rmfNzl98gEMvHnFH0fMDF06z9MmgGi/Sr7hJ+BVnw==", + "type": "package", + "path": "pomelo.entityframeworkcore.mysql/8.0.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon.png", + "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.dll", + "lib/net8.0/Pomelo.EntityFrameworkCore.MySql.xml", + "pomelo.entityframeworkcore.mysql.8.0.2.nupkg.sha512", + "pomelo.entityframeworkcore.mysql.nuspec" + ] + }, + "Redis.OM/1.0.1": { + "sha512": "0kreYGe1w3dy6Ymv+wbdCfcpSu8p9uGGmz3Z+Kp4XbTrF1QrcJFgq9mWMQ7Js538Mb7AR+IaKIcpYX0C0asHgg==", + "type": "package", + "path": "redis.om/1.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "icon-square.png", + "lib/netstandard2.0/Redis.OM.dll", + "lib/netstandard2.0/Redis.OM.xml", + "redis.om.1.0.1.nupkg.sha512", + "redis.om.nuspec" + ] + }, + "SharpZipLib/1.4.2": { + "sha512": "yjj+3zgz8zgXpiiC3ZdF/iyTBbz2fFvMxZFEBPUcwZjIvXOf37Ylm+K58hqMfIBt5JgU/Z2uoUS67JmTLe973A==", + "type": "package", + "path": "sharpziplib/1.4.2", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "images/sharpziplib-nuget-256x256.png", + "lib/net6.0/ICSharpCode.SharpZipLib.dll", + "lib/net6.0/ICSharpCode.SharpZipLib.pdb", + "lib/net6.0/ICSharpCode.SharpZipLib.xml", + "lib/netstandard2.0/ICSharpCode.SharpZipLib.dll", + "lib/netstandard2.0/ICSharpCode.SharpZipLib.pdb", + "lib/netstandard2.0/ICSharpCode.SharpZipLib.xml", + "lib/netstandard2.1/ICSharpCode.SharpZipLib.dll", + "lib/netstandard2.1/ICSharpCode.SharpZipLib.pdb", + "lib/netstandard2.1/ICSharpCode.SharpZipLib.xml", + "sharpziplib.1.4.2.nupkg.sha512", + "sharpziplib.nuspec" + ] + }, + "SixLabors.ImageSharp/3.1.10": { + "sha512": "R1HEPcqx3v+kvlOTPouP0g/Nzzud9pHtjlgGbFax3Ivaz8kkaGfS2EPfyDGpmfoTUQ3nQ5wxdhYyYa9fwYA9cw==", + "type": "package", + "path": "sixlabors.imagesharp/3.1.10", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE", + "build/SixLabors.ImageSharp.props", + "lib/net6.0/SixLabors.ImageSharp.dll", + "lib/net6.0/SixLabors.ImageSharp.xml", + "sixlabors.imagesharp.128.png", + "sixlabors.imagesharp.3.1.10.nupkg.sha512", + "sixlabors.imagesharp.nuspec" + ] + }, + "SQLitePCLRaw.bundle_e_sqlite3/2.1.6": { + "sha512": "BmAf6XWt4TqtowmiWe4/5rRot6GerAeklmOPfviOvwLoF5WwgxcJHAxZtySuyW9r9w+HLILnm8VfJFLCUJYW8A==", + "type": "package", + "path": "sqlitepclraw.bundle_e_sqlite3/2.1.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/monoandroid90/SQLitePCLRaw.batteries_v2.dll", + "lib/net461/SQLitePCLRaw.batteries_v2.dll", + "lib/net6.0-android31.0/SQLitePCLRaw.batteries_v2.dll", + "lib/net6.0-android31.0/SQLitePCLRaw.batteries_v2.xml", + "lib/net6.0-ios14.0/SQLitePCLRaw.batteries_v2.dll", + "lib/net6.0-ios14.2/SQLitePCLRaw.batteries_v2.dll", + "lib/net6.0-tvos10.0/SQLitePCLRaw.batteries_v2.dll", + "lib/netstandard2.0/SQLitePCLRaw.batteries_v2.dll", + "lib/xamarinios10/SQLitePCLRaw.batteries_v2.dll", + "sqlitepclraw.bundle_e_sqlite3.2.1.6.nupkg.sha512", + "sqlitepclraw.bundle_e_sqlite3.nuspec" + ] + }, + "SQLitePCLRaw.core/2.1.6": { + "sha512": "wO6v9GeMx9CUngAet8hbO7xdm+M42p1XeJq47ogyRoYSvNSp0NGLI+MgC0bhrMk9C17MTVFlLiN6ylyExLCc5w==", + "type": "package", + "path": "sqlitepclraw.core/2.1.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/netstandard2.0/SQLitePCLRaw.core.dll", + "sqlitepclraw.core.2.1.6.nupkg.sha512", + "sqlitepclraw.core.nuspec" + ] + }, + "SQLitePCLRaw.lib.e_sqlite3/2.1.6": { + "sha512": "2ObJJLkIUIxRpOUlZNGuD4rICpBnrBR5anjyfUFQep4hMOIeqW+XGQYzrNmHSVz5xSWZ3klSbh7sFR6UyDj68Q==", + "type": "package", + "path": "sqlitepclraw.lib.e_sqlite3/2.1.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "buildTransitive/net461/SQLitePCLRaw.lib.e_sqlite3.targets", + "buildTransitive/net6.0/SQLitePCLRaw.lib.e_sqlite3.targets", + "buildTransitive/net7.0/SQLitePCLRaw.lib.e_sqlite3.targets", + "buildTransitive/net8.0/SQLitePCLRaw.lib.e_sqlite3.targets", + "lib/net461/_._", + "lib/netstandard2.0/_._", + "runtimes/browser-wasm/nativeassets/net6.0/e_sqlite3.a", + "runtimes/browser-wasm/nativeassets/net7.0/e_sqlite3.a", + "runtimes/browser-wasm/nativeassets/net8.0/e_sqlite3.a", + "runtimes/linux-arm/native/libe_sqlite3.so", + "runtimes/linux-arm64/native/libe_sqlite3.so", + "runtimes/linux-armel/native/libe_sqlite3.so", + "runtimes/linux-mips64/native/libe_sqlite3.so", + "runtimes/linux-musl-arm/native/libe_sqlite3.so", + "runtimes/linux-musl-arm64/native/libe_sqlite3.so", + "runtimes/linux-musl-x64/native/libe_sqlite3.so", + "runtimes/linux-ppc64le/native/libe_sqlite3.so", + "runtimes/linux-s390x/native/libe_sqlite3.so", + "runtimes/linux-x64/native/libe_sqlite3.so", + "runtimes/linux-x86/native/libe_sqlite3.so", + "runtimes/maccatalyst-arm64/native/libe_sqlite3.dylib", + "runtimes/maccatalyst-x64/native/libe_sqlite3.dylib", + "runtimes/osx-arm64/native/libe_sqlite3.dylib", + "runtimes/osx-x64/native/libe_sqlite3.dylib", + "runtimes/win-arm/native/e_sqlite3.dll", + "runtimes/win-arm64/native/e_sqlite3.dll", + "runtimes/win-x64/native/e_sqlite3.dll", + "runtimes/win-x86/native/e_sqlite3.dll", + "runtimes/win10-arm/nativeassets/uap10.0/e_sqlite3.dll", + "runtimes/win10-arm64/nativeassets/uap10.0/e_sqlite3.dll", + "runtimes/win10-x64/nativeassets/uap10.0/e_sqlite3.dll", + "runtimes/win10-x86/nativeassets/uap10.0/e_sqlite3.dll", + "sqlitepclraw.lib.e_sqlite3.2.1.6.nupkg.sha512", + "sqlitepclraw.lib.e_sqlite3.nuspec" + ] + }, + "SQLitePCLRaw.provider.e_sqlite3/2.1.6": { + "sha512": "PQ2Oq3yepLY4P7ll145P3xtx2bX8xF4PzaKPRpw9jZlKvfe4LE/saAV82inND9usn1XRpmxXk7Lal3MTI+6CNg==", + "type": "package", + "path": "sqlitepclraw.provider.e_sqlite3/2.1.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net6.0-windows7.0/SQLitePCLRaw.provider.e_sqlite3.dll", + "lib/net6.0/SQLitePCLRaw.provider.e_sqlite3.dll", + "lib/netstandard2.0/SQLitePCLRaw.provider.e_sqlite3.dll", + "sqlitepclraw.provider.e_sqlite3.2.1.6.nupkg.sha512", + "sqlitepclraw.provider.e_sqlite3.nuspec" + ] + }, + "StackExchange.Redis/2.7.17": { + "sha512": "PduekHww3CrCBr1ebIPX4k4zdah9wjJ4AQZXfp+JfGJQfwf8s1SHSY7kthDi9MP0ULcYrNw4xnbRXFMbCryIig==", + "type": "package", + "path": "stackexchange.redis/2.7.17", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net461/StackExchange.Redis.dll", + "lib/net461/StackExchange.Redis.xml", + "lib/net472/StackExchange.Redis.dll", + "lib/net472/StackExchange.Redis.xml", + "lib/net6.0/StackExchange.Redis.dll", + "lib/net6.0/StackExchange.Redis.xml", + "lib/netcoreapp3.1/StackExchange.Redis.dll", + "lib/netcoreapp3.1/StackExchange.Redis.xml", + "lib/netstandard2.0/StackExchange.Redis.dll", + "lib/netstandard2.0/StackExchange.Redis.xml", + "stackexchange.redis.2.7.17.nupkg.sha512", + "stackexchange.redis.nuspec" + ] + }, + "Swashbuckle.AspNetCore/9.0.3": { + "sha512": "Akk4oFgy0ST8Q8pZTfPbrt045tWNyMMiKhlbYjG3qnjQZLz645IL5vhQm7NLicc2sAAQ+vftArIlsYWFevmb2g==", + "type": "package", + "path": "swashbuckle.aspnetcore/9.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "build/Swashbuckle.AspNetCore.props", + "buildMultiTargeting/Swashbuckle.AspNetCore.props", + "docs/package-readme.md", + "swashbuckle.aspnetcore.9.0.3.nupkg.sha512", + "swashbuckle.aspnetcore.nuspec" + ] + }, + "Swashbuckle.AspNetCore.Swagger/9.0.3": { + "sha512": "CGpkZDWj1g/yH/0wYkxUtBhiFo5TY/Esq2fS0vlBvLOs1UL2Jzef9tdtYmTdd3zBPtnMyXQcsXjMt9yCxz4VaA==", + "type": "package", + "path": "swashbuckle.aspnetcore.swagger/9.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/net8.0/Swashbuckle.AspNetCore.Swagger.xml", + "lib/net9.0/Swashbuckle.AspNetCore.Swagger.dll", + "lib/net9.0/Swashbuckle.AspNetCore.Swagger.pdb", + "lib/net9.0/Swashbuckle.AspNetCore.Swagger.xml", + "package-readme.md", + "swashbuckle.aspnetcore.swagger.9.0.3.nupkg.sha512", + "swashbuckle.aspnetcore.swagger.nuspec" + ] + }, + "Swashbuckle.AspNetCore.SwaggerGen/9.0.3": { + "sha512": "STqjhw1TZiEGmIRgE6jcJUOcgU/Fjquc6dP4GqbuwBzqWZAWr/9T7FZOGWYEwKnmkMplzlUNepGHwnUrfTP0fw==", + "type": "package", + "path": "swashbuckle.aspnetcore.swaggergen/9.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "lib/net9.0/Swashbuckle.AspNetCore.SwaggerGen.dll", + "lib/net9.0/Swashbuckle.AspNetCore.SwaggerGen.pdb", + "lib/net9.0/Swashbuckle.AspNetCore.SwaggerGen.xml", + "package-readme.md", + "swashbuckle.aspnetcore.swaggergen.9.0.3.nupkg.sha512", + "swashbuckle.aspnetcore.swaggergen.nuspec" + ] + }, + "Swashbuckle.AspNetCore.SwaggerUI/9.0.3": { + "sha512": "DgJKJASz5OAygeKv2+N0FCZVhQylESqLXrtrRAqIT0vKpX7t5ImJ1FL6+6OqxKiamGkL0jchRXR8OgpMSsMh8w==", + "type": "package", + "path": "swashbuckle.aspnetcore.swaggerui/9.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/net8.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "lib/net9.0/Swashbuckle.AspNetCore.SwaggerUI.dll", + "lib/net9.0/Swashbuckle.AspNetCore.SwaggerUI.pdb", + "lib/net9.0/Swashbuckle.AspNetCore.SwaggerUI.xml", + "package-readme.md", + "swashbuckle.aspnetcore.swaggerui.9.0.3.nupkg.sha512", + "swashbuckle.aspnetcore.swaggerui.nuspec" + ] + }, + "System.CodeDom/4.4.0": { + "sha512": "2sCCb7doXEwtYAbqzbF/8UAeDRMNmPaQbU2q50Psg1J9KzumyVVCgKQY8s53WIPTufNT0DpSe9QRvVjOzfDWBA==", + "type": "package", + "path": "system.codedom/4.4.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/net461/System.CodeDom.dll", + "lib/netstandard2.0/System.CodeDom.dll", + "ref/net461/System.CodeDom.dll", + "ref/net461/System.CodeDom.xml", + "ref/netstandard2.0/System.CodeDom.dll", + "ref/netstandard2.0/System.CodeDom.xml", + "system.codedom.4.4.0.nupkg.sha512", + "system.codedom.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Collections.Immutable/8.0.0": { + "sha512": "AurL6Y5BA1WotzlEvVaIDpqzpIPvYnnldxru8oXJU2yFxFUy3+pNXjXd1ymO+RA0rq0+590Q8gaz2l3Sr7fmqg==", + "type": "package", + "path": "system.collections.immutable/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Collections.Immutable.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Collections.Immutable.targets", + "lib/net462/System.Collections.Immutable.dll", + "lib/net462/System.Collections.Immutable.xml", + "lib/net6.0/System.Collections.Immutable.dll", + "lib/net6.0/System.Collections.Immutable.xml", + "lib/net7.0/System.Collections.Immutable.dll", + "lib/net7.0/System.Collections.Immutable.xml", + "lib/net8.0/System.Collections.Immutable.dll", + "lib/net8.0/System.Collections.Immutable.xml", + "lib/netstandard2.0/System.Collections.Immutable.dll", + "lib/netstandard2.0/System.Collections.Immutable.xml", + "system.collections.immutable.8.0.0.nupkg.sha512", + "system.collections.immutable.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition/6.0.0": { + "sha512": "d7wMuKQtfsxUa7S13tITC8n1cQzewuhD5iDjZtK2prwFfKVzdYtgrTHgjaV03Zq7feGQ5gkP85tJJntXwInsJA==", + "type": "package", + "path": "system.composition/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Composition.targets", + "buildTransitive/netcoreapp3.1/_._", + "system.composition.6.0.0.nupkg.sha512", + "system.composition.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition.AttributedModel/6.0.0": { + "sha512": "WK1nSDLByK/4VoC7fkNiFuTVEiperuCN/Hyn+VN30R+W2ijO1d0Z2Qm0ScEl9xkSn1G2MyapJi8xpf4R8WRa/w==", + "type": "package", + "path": "system.composition.attributedmodel/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Composition.AttributedModel.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Composition.AttributedModel.dll", + "lib/net461/System.Composition.AttributedModel.xml", + "lib/net6.0/System.Composition.AttributedModel.dll", + "lib/net6.0/System.Composition.AttributedModel.xml", + "lib/netstandard2.0/System.Composition.AttributedModel.dll", + "lib/netstandard2.0/System.Composition.AttributedModel.xml", + "system.composition.attributedmodel.6.0.0.nupkg.sha512", + "system.composition.attributedmodel.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition.Convention/6.0.0": { + "sha512": "XYi4lPRdu5bM4JVJ3/UIHAiG6V6lWWUlkhB9ab4IOq0FrRsp0F4wTyV4Dj+Ds+efoXJ3qbLqlvaUozDO7OLeXA==", + "type": "package", + "path": "system.composition.convention/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Composition.Convention.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Composition.Convention.dll", + "lib/net461/System.Composition.Convention.xml", + "lib/net6.0/System.Composition.Convention.dll", + "lib/net6.0/System.Composition.Convention.xml", + "lib/netstandard2.0/System.Composition.Convention.dll", + "lib/netstandard2.0/System.Composition.Convention.xml", + "system.composition.convention.6.0.0.nupkg.sha512", + "system.composition.convention.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition.Hosting/6.0.0": { + "sha512": "w/wXjj7kvxuHPLdzZ0PAUt++qJl03t7lENmb2Oev0n3zbxyNULbWBlnd5J5WUMMv15kg5o+/TCZFb6lSwfaUUQ==", + "type": "package", + "path": "system.composition.hosting/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Composition.Hosting.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Composition.Hosting.dll", + "lib/net461/System.Composition.Hosting.xml", + "lib/net6.0/System.Composition.Hosting.dll", + "lib/net6.0/System.Composition.Hosting.xml", + "lib/netstandard2.0/System.Composition.Hosting.dll", + "lib/netstandard2.0/System.Composition.Hosting.xml", + "system.composition.hosting.6.0.0.nupkg.sha512", + "system.composition.hosting.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition.Runtime/6.0.0": { + "sha512": "qkRH/YBaMPTnzxrS5RDk1juvqed4A6HOD/CwRcDGyPpYps1J27waBddiiq1y93jk2ZZ9wuA/kynM+NO0kb3PKg==", + "type": "package", + "path": "system.composition.runtime/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Composition.Runtime.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Composition.Runtime.dll", + "lib/net461/System.Composition.Runtime.xml", + "lib/net6.0/System.Composition.Runtime.dll", + "lib/net6.0/System.Composition.Runtime.xml", + "lib/netstandard2.0/System.Composition.Runtime.dll", + "lib/netstandard2.0/System.Composition.Runtime.xml", + "system.composition.runtime.6.0.0.nupkg.sha512", + "system.composition.runtime.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Composition.TypedParts/6.0.0": { + "sha512": "iUR1eHrL8Cwd82neQCJ00MpwNIBs4NZgXzrPqx8NJf/k4+mwBO0XCRmHYJT4OLSwDDqh5nBLJWkz5cROnrGhRA==", + "type": "package", + "path": "system.composition.typedparts/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Composition.TypedParts.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Composition.TypedParts.dll", + "lib/net461/System.Composition.TypedParts.xml", + "lib/net6.0/System.Composition.TypedParts.dll", + "lib/net6.0/System.Composition.TypedParts.xml", + "lib/netstandard2.0/System.Composition.TypedParts.dll", + "lib/netstandard2.0/System.Composition.TypedParts.xml", + "system.composition.typedparts.6.0.0.nupkg.sha512", + "system.composition.typedparts.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Diagnostics.EventLog/8.0.1": { + "sha512": "n1ZP7NM2Gkn/MgD8+eOT5MulMj6wfeQMNS2Pizvq5GHCZfjlFMXV2irQlQmJhwA2VABC57M0auudO89Iu2uRLg==", + "type": "package", + "path": "system.diagnostics.eventlog/8.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Diagnostics.EventLog.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Diagnostics.EventLog.targets", + "lib/net462/System.Diagnostics.EventLog.dll", + "lib/net462/System.Diagnostics.EventLog.xml", + "lib/net6.0/System.Diagnostics.EventLog.dll", + "lib/net6.0/System.Diagnostics.EventLog.xml", + "lib/net7.0/System.Diagnostics.EventLog.dll", + "lib/net7.0/System.Diagnostics.EventLog.xml", + "lib/net8.0/System.Diagnostics.EventLog.dll", + "lib/net8.0/System.Diagnostics.EventLog.xml", + "lib/netstandard2.0/System.Diagnostics.EventLog.dll", + "lib/netstandard2.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/net6.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/net7.0/System.Diagnostics.EventLog.xml", + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.Messages.dll", + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.dll", + "runtimes/win/lib/net8.0/System.Diagnostics.EventLog.xml", + "system.diagnostics.eventlog.8.0.1.nupkg.sha512", + "system.diagnostics.eventlog.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Interactive.Async/6.0.1": { + "sha512": "f8H1O4ZWDQo344y5NQU76G4SIjWMuKDVXL9OM1dg6K5YZnLkc8iCdQDybBvMcC6ufk61jzXGVAX6UCDu0qDSjA==", + "type": "package", + "path": "system.interactive.async/6.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Logo.png", + "lib/net48/System.Interactive.Async.dll", + "lib/net48/System.Interactive.Async.xml", + "lib/net6.0/System.Interactive.Async.dll", + "lib/net6.0/System.Interactive.Async.xml", + "lib/netstandard2.0/System.Interactive.Async.dll", + "lib/netstandard2.0/System.Interactive.Async.xml", + "lib/netstandard2.1/System.Interactive.Async.dll", + "lib/netstandard2.1/System.Interactive.Async.xml", + "system.interactive.async.6.0.1.nupkg.sha512", + "system.interactive.async.nuspec" + ] + }, + "System.IO.Pipelines/8.0.0": { + "sha512": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==", + "type": "package", + "path": "system.io.pipelines/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.IO.Pipelines.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.IO.Pipelines.targets", + "lib/net462/System.IO.Pipelines.dll", + "lib/net462/System.IO.Pipelines.xml", + "lib/net6.0/System.IO.Pipelines.dll", + "lib/net6.0/System.IO.Pipelines.xml", + "lib/net7.0/System.IO.Pipelines.dll", + "lib/net7.0/System.IO.Pipelines.xml", + "lib/net8.0/System.IO.Pipelines.dll", + "lib/net8.0/System.IO.Pipelines.xml", + "lib/netstandard2.0/System.IO.Pipelines.dll", + "lib/netstandard2.0/System.IO.Pipelines.xml", + "system.io.pipelines.8.0.0.nupkg.sha512", + "system.io.pipelines.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Linq.Async/6.0.1": { + "sha512": "0YhHcaroWpQ9UCot3Pizah7ryAzQhNvobLMSxeDIGmnXfkQn8u5owvpOH0K6EVB+z9L7u6Cc4W17Br/+jyttEQ==", + "type": "package", + "path": "system.linq.async/6.0.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Logo.png", + "lib/net48/System.Linq.Async.dll", + "lib/net48/System.Linq.Async.xml", + "lib/net6.0/System.Linq.Async.dll", + "lib/net6.0/System.Linq.Async.xml", + "lib/netstandard2.0/System.Linq.Async.dll", + "lib/netstandard2.0/System.Linq.Async.xml", + "lib/netstandard2.1/System.Linq.Async.dll", + "lib/netstandard2.1/System.Linq.Async.xml", + "ref/net48/System.Linq.Async.dll", + "ref/net48/System.Linq.Async.xml", + "ref/net6.0/System.Linq.Async.dll", + "ref/net6.0/System.Linq.Async.xml", + "ref/netstandard2.0/System.Linq.Async.dll", + "ref/netstandard2.0/System.Linq.Async.xml", + "ref/netstandard2.1/System.Linq.Async.dll", + "ref/netstandard2.1/System.Linq.Async.xml", + "system.linq.async.6.0.1.nupkg.sha512", + "system.linq.async.nuspec" + ] + }, + "System.Memory/4.5.3": { + "sha512": "3oDzvc/zzetpTKWMShs1AADwZjQ/36HnsufHRPcOjyRAAMLDlu2iD33MBI2opxnezcVUtXyqDXXjoFMOU9c7SA==", + "type": "package", + "path": "system.memory/4.5.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/netcoreapp2.1/_._", + "lib/netstandard1.1/System.Memory.dll", + "lib/netstandard1.1/System.Memory.xml", + "lib/netstandard2.0/System.Memory.dll", + "lib/netstandard2.0/System.Memory.xml", + "ref/netcoreapp2.1/_._", + "system.memory.4.5.3.nupkg.sha512", + "system.memory.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "System.Reflection.Metadata/8.0.0": { + "sha512": "ptvgrFh7PvWI8bcVqG5rsA/weWM09EnthFHR5SCnS6IN+P4mj6rE1lBDC4U8HL9/57htKAqy4KQ3bBj84cfYyQ==", + "type": "package", + "path": "system.reflection.metadata/8.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/net461/System.Reflection.Metadata.targets", + "buildTransitive/net462/_._", + "buildTransitive/net6.0/_._", + "buildTransitive/netcoreapp2.0/System.Reflection.Metadata.targets", + "lib/net462/System.Reflection.Metadata.dll", + "lib/net462/System.Reflection.Metadata.xml", + "lib/net6.0/System.Reflection.Metadata.dll", + "lib/net6.0/System.Reflection.Metadata.xml", + "lib/net7.0/System.Reflection.Metadata.dll", + "lib/net7.0/System.Reflection.Metadata.xml", + "lib/net8.0/System.Reflection.Metadata.dll", + "lib/net8.0/System.Reflection.Metadata.xml", + "lib/netstandard2.0/System.Reflection.Metadata.dll", + "lib/netstandard2.0/System.Reflection.Metadata.xml", + "system.reflection.metadata.8.0.0.nupkg.sha512", + "system.reflection.metadata.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Runtime.CompilerServices.Unsafe/6.0.0": { + "sha512": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==", + "type": "package", + "path": "system.runtime.compilerservices.unsafe/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Runtime.CompilerServices.Unsafe.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net461/System.Runtime.CompilerServices.Unsafe.xml", + "lib/net6.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/net6.0/System.Runtime.CompilerServices.Unsafe.xml", + "lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netcoreapp3.1/System.Runtime.CompilerServices.Unsafe.xml", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.dll", + "lib/netstandard2.0/System.Runtime.CompilerServices.Unsafe.xml", + "system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512", + "system.runtime.compilerservices.unsafe.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.Encoding.CodePages/6.0.0": { + "sha512": "ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==", + "type": "package", + "path": "system.text.encoding.codepages/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Text.Encoding.CodePages.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.Text.Encoding.CodePages.dll", + "lib/net461/System.Text.Encoding.CodePages.xml", + "lib/net6.0/System.Text.Encoding.CodePages.dll", + "lib/net6.0/System.Text.Encoding.CodePages.xml", + "lib/netcoreapp3.1/System.Text.Encoding.CodePages.dll", + "lib/netcoreapp3.1/System.Text.Encoding.CodePages.xml", + "lib/netstandard2.0/System.Text.Encoding.CodePages.dll", + "lib/netstandard2.0/System.Text.Encoding.CodePages.xml", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "runtimes/win/lib/net461/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/net461/System.Text.Encoding.CodePages.xml", + "runtimes/win/lib/net6.0/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/net6.0/System.Text.Encoding.CodePages.xml", + "runtimes/win/lib/netcoreapp3.1/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/netcoreapp3.1/System.Text.Encoding.CodePages.xml", + "runtimes/win/lib/netstandard2.0/System.Text.Encoding.CodePages.dll", + "runtimes/win/lib/netstandard2.0/System.Text.Encoding.CodePages.xml", + "system.text.encoding.codepages.6.0.0.nupkg.sha512", + "system.text.encoding.codepages.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Text.Json/8.0.5": { + "sha512": "0f1B50Ss7rqxXiaBJyzUu9bWFOO2/zSlifZ/UNMdiIpDYe4cY4LQQicP4nirK1OS31I43rn062UIJ1Q9bpmHpg==", + "type": "package", + "path": "system.text.json/8.0.5", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "PACKAGE.md", + "THIRD-PARTY-NOTICES.TXT", + "analyzers/dotnet/roslyn3.11/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn3.11/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn3.11/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.0/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.0/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/System.Text.Json.SourceGeneration.dll", + "analyzers/dotnet/roslyn4.4/cs/cs/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/de/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/es/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/fr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/it/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ja/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ko/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pl/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/pt-BR/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/ru/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/tr/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hans/System.Text.Json.SourceGeneration.resources.dll", + "analyzers/dotnet/roslyn4.4/cs/zh-Hant/System.Text.Json.SourceGeneration.resources.dll", + "buildTransitive/net461/System.Text.Json.targets", + "buildTransitive/net462/System.Text.Json.targets", + "buildTransitive/net6.0/System.Text.Json.targets", + "buildTransitive/netcoreapp2.0/System.Text.Json.targets", + "buildTransitive/netstandard2.0/System.Text.Json.targets", + "lib/net462/System.Text.Json.dll", + "lib/net462/System.Text.Json.xml", + "lib/net6.0/System.Text.Json.dll", + "lib/net6.0/System.Text.Json.xml", + "lib/net7.0/System.Text.Json.dll", + "lib/net7.0/System.Text.Json.xml", + "lib/net8.0/System.Text.Json.dll", + "lib/net8.0/System.Text.Json.xml", + "lib/netstandard2.0/System.Text.Json.dll", + "lib/netstandard2.0/System.Text.Json.xml", + "system.text.json.8.0.5.nupkg.sha512", + "system.text.json.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.Threading.Channels/6.0.0": { + "sha512": "TY8/9+tI0mNaUMgntOxxaq2ndTkdXqLSxvPmas7XEqOlv9lQtB7wLjYGd756lOaO7Dvb5r/WXhluM+0Xe87v5Q==", + "type": "package", + "path": "system.threading.channels/6.0.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "buildTransitive/netcoreapp2.0/System.Threading.Channels.targets", + "buildTransitive/netcoreapp3.1/_._", + "lib/net461/System.Threading.Channels.dll", + "lib/net461/System.Threading.Channels.xml", + "lib/net6.0/System.Threading.Channels.dll", + "lib/net6.0/System.Threading.Channels.xml", + "lib/netcoreapp3.1/System.Threading.Channels.dll", + "lib/netcoreapp3.1/System.Threading.Channels.xml", + "lib/netstandard2.0/System.Threading.Channels.dll", + "lib/netstandard2.0/System.Threading.Channels.xml", + "lib/netstandard2.1/System.Threading.Channels.dll", + "lib/netstandard2.1/System.Threading.Channels.xml", + "system.threading.channels.6.0.0.nupkg.sha512", + "system.threading.channels.nuspec", + "useSharedDesignerContext.txt" + ] + }, + "System.ValueTuple/4.5.0": { + "sha512": "okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==", + "type": "package", + "path": "system.valuetuple/4.5.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "LICENSE.TXT", + "THIRD-PARTY-NOTICES.TXT", + "lib/MonoAndroid10/_._", + "lib/MonoTouch10/_._", + "lib/net461/System.ValueTuple.dll", + "lib/net461/System.ValueTuple.xml", + "lib/net47/System.ValueTuple.dll", + "lib/net47/System.ValueTuple.xml", + "lib/netcoreapp2.0/_._", + "lib/netstandard1.0/System.ValueTuple.dll", + "lib/netstandard1.0/System.ValueTuple.xml", + "lib/netstandard2.0/_._", + "lib/portable-net40+sl4+win8+wp8/System.ValueTuple.dll", + "lib/portable-net40+sl4+win8+wp8/System.ValueTuple.xml", + "lib/uap10.0.16299/_._", + "lib/xamarinios10/_._", + "lib/xamarinmac20/_._", + "lib/xamarintvos10/_._", + "lib/xamarinwatchos10/_._", + "ref/MonoAndroid10/_._", + "ref/MonoTouch10/_._", + "ref/net461/System.ValueTuple.dll", + "ref/net47/System.ValueTuple.dll", + "ref/netcoreapp2.0/_._", + "ref/netstandard2.0/_._", + "ref/portable-net40+sl4+win8+wp8/System.ValueTuple.dll", + "ref/uap10.0.16299/_._", + "ref/xamarinios10/_._", + "ref/xamarinmac20/_._", + "ref/xamarintvos10/_._", + "ref/xamarinwatchos10/_._", + "system.valuetuple.4.5.0.nupkg.sha512", + "system.valuetuple.nuspec", + "useSharedDesignerContext.txt", + "version.txt" + ] + }, + "Ulid/1.2.6": { + "sha512": "TDfJ/q4nJJ7LTxHErWYXRFs7laAUJhnT7Do+fpxxNg+uQOC1GKWLFuyJMKyMyIxQhFjWNC5XcFbr7R6HP9PFgw==", + "type": "package", + "path": "ulid/1.2.6", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "Icon.png", + "lib/net5.0/Ulid.dll", + "lib/net5.0/Ulid.xml", + "lib/netcoreapp2.1/Ulid.dll", + "lib/netcoreapp2.1/Ulid.xml", + "lib/netcoreapp3.1/Ulid.dll", + "lib/netcoreapp3.1/Ulid.xml", + "lib/netstandard2.0/Ulid.dll", + "lib/netstandard2.0/Ulid.xml", + "ulid.1.2.6.nupkg.sha512", + "ulid.nuspec" + ] + }, + "xunit/2.9.3": { + "sha512": "TlXQBinK35LpOPKHAqbLY4xlEen9TBafjs0V5KnA4wZsoQLQJiirCR4CbIXvOH8NzkW4YeJKP5P/Bnrodm0h9Q==", + "type": "package", + "path": "xunit/2.9.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "xunit.2.9.3.nupkg.sha512", + "xunit.nuspec" + ] + }, + "xunit.abstractions/2.0.3": { + "sha512": "pot1I4YOxlWjIb5jmwvvQNbTrZ3lJQ+jUGkGjWE3hEFM0l5gOnBWS+H3qsex68s5cO52g+44vpGzhAt+42vwKg==", + "type": "package", + "path": "xunit.abstractions/2.0.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "lib/net35/xunit.abstractions.dll", + "lib/net35/xunit.abstractions.xml", + "lib/netstandard1.0/xunit.abstractions.dll", + "lib/netstandard1.0/xunit.abstractions.xml", + "lib/netstandard2.0/xunit.abstractions.dll", + "lib/netstandard2.0/xunit.abstractions.xml", + "xunit.abstractions.2.0.3.nupkg.sha512", + "xunit.abstractions.nuspec" + ] + }, + "xunit.analyzers/1.18.0": { + "sha512": "OtFMHN8yqIcYP9wcVIgJrq01AfTxijjAqVDy/WeQVSyrDC1RzBWeQPztL49DN2syXRah8TYnfvk035s7L95EZQ==", + "type": "package", + "path": "xunit.analyzers/1.18.0", + "hasTools": true, + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "analyzers/dotnet/cs/xunit.analyzers.dll", + "analyzers/dotnet/cs/xunit.analyzers.fixes.dll", + "tools/install.ps1", + "tools/uninstall.ps1", + "xunit.analyzers.1.18.0.nupkg.sha512", + "xunit.analyzers.nuspec" + ] + }, + "xunit.assert/2.9.3": { + "sha512": "/Kq28fCE7MjOV42YLVRAJzRF0WmEqsmflm0cfpMjGtzQ2lR5mYVj1/i0Y8uDAOLczkL3/jArrwehfMD0YogMAA==", + "type": "package", + "path": "xunit.assert/2.9.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "lib/net6.0/xunit.assert.dll", + "lib/net6.0/xunit.assert.xml", + "lib/netstandard1.1/xunit.assert.dll", + "lib/netstandard1.1/xunit.assert.xml", + "xunit.assert.2.9.3.nupkg.sha512", + "xunit.assert.nuspec" + ] + }, + "xunit.core/2.9.3": { + "sha512": "BiAEvqGvyme19wE0wTKdADH+NloYqikiU0mcnmiNyXaF9HyHmE6sr/3DC5vnBkgsWaE6yPyWszKSPSApWdRVeQ==", + "type": "package", + "path": "xunit.core/2.9.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "build/xunit.core.props", + "build/xunit.core.targets", + "buildMultiTargeting/xunit.core.props", + "buildMultiTargeting/xunit.core.targets", + "xunit.core.2.9.3.nupkg.sha512", + "xunit.core.nuspec" + ] + }, + "xunit.extensibility.core/2.9.3": { + "sha512": "kf3si0YTn2a8J8eZNb+zFpwfoyvIrQ7ivNk5ZYA5yuYk1bEtMe4DxJ2CF/qsRgmEnDr7MnW1mxylBaHTZ4qErA==", + "type": "package", + "path": "xunit.extensibility.core/2.9.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "lib/net452/xunit.core.dll", + "lib/net452/xunit.core.dll.tdnet", + "lib/net452/xunit.core.xml", + "lib/net452/xunit.runner.tdnet.dll", + "lib/net452/xunit.runner.utility.net452.dll", + "lib/netstandard1.1/xunit.core.dll", + "lib/netstandard1.1/xunit.core.xml", + "xunit.extensibility.core.2.9.3.nupkg.sha512", + "xunit.extensibility.core.nuspec" + ] + }, + "xunit.extensibility.execution/2.9.3": { + "sha512": "yMb6vMESlSrE3Wfj7V6cjQ3S4TXdXpRqYeNEI3zsX31uTsGMJjEw6oD5F5u1cHnMptjhEECnmZSsPxB6ChZHDQ==", + "type": "package", + "path": "xunit.extensibility.execution/2.9.3", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "lib/net452/xunit.execution.desktop.dll", + "lib/net452/xunit.execution.desktop.xml", + "lib/netstandard1.1/xunit.execution.dotnet.dll", + "lib/netstandard1.1/xunit.execution.dotnet.xml", + "xunit.extensibility.execution.2.9.3.nupkg.sha512", + "xunit.extensibility.execution.nuspec" + ] + }, + "xunit.runner.visualstudio/3.1.1": { + "sha512": "gNu2zhnuwjq5vQlU4S7yK/lfaKZDLmtcu+vTjnhfTlMAUYn+Hmgu8IIX0UCwWepYkk+Szx03DHx1bDnc9Fd+9w==", + "type": "package", + "path": "xunit.runner.visualstudio/3.1.1", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "_content/README.md", + "_content/logo-128-transparent.png", + "build/net472/xunit.abstractions.dll", + "build/net472/xunit.runner.visualstudio.props", + "build/net472/xunit.runner.visualstudio.testadapter.dll", + "build/net8.0/xunit.abstractions.dll", + "build/net8.0/xunit.runner.visualstudio.props", + "build/net8.0/xunit.runner.visualstudio.testadapter.dll", + "lib/net472/_._", + "lib/net8.0/_._", + "xunit.runner.visualstudio.3.1.1.nupkg.sha512", + "xunit.runner.visualstudio.nuspec" + ] + }, + "YamlDotNet/16.3.0": { + "sha512": "SgMOdxbz8X65z8hraIs6hOEdnkH6hESTAIUa7viEngHOYaH+6q5XJmwr1+yb9vJpNQ19hCQY69xbFsLtXpobQA==", + "type": "package", + "path": "yamldotnet/16.3.0", + "files": [ + ".nupkg.metadata", + ".signature.p7s", + "README.md", + "images/yamldotnet.png", + "lib/net47/YamlDotNet.dll", + "lib/net47/YamlDotNet.xml", + "lib/net6.0/YamlDotNet.dll", + "lib/net6.0/YamlDotNet.xml", + "lib/net8.0/YamlDotNet.dll", + "lib/net8.0/YamlDotNet.xml", + "lib/netstandard2.0/YamlDotNet.dll", + "lib/netstandard2.0/YamlDotNet.xml", + "lib/netstandard2.1/YamlDotNet.dll", + "lib/netstandard2.1/YamlDotNet.xml", + "yamldotnet.16.3.0.nupkg.sha512", + "yamldotnet.nuspec" + ] + }, + "LBPUnion.ProjectLighthouse/1.0.0": { + "type": "project", + "path": "../ProjectLighthouse/ProjectLighthouse.csproj", + "msbuildProject": "../ProjectLighthouse/ProjectLighthouse.csproj" + }, + "ProjectLighthouse.Localization/1.0.0": { + "type": "project", + "path": "../ProjectLighthouse.Localization/ProjectLighthouse.Localization.csproj", + "msbuildProject": "../ProjectLighthouse.Localization/ProjectLighthouse.Localization.csproj" + } + }, + "projectFileDependencyGroups": { + "net8.0": [ + "JetBrains.Annotations >= 2024.3.0", + "LBPUnion.ProjectLighthouse >= 1.0.0", + "Microsoft.AspNetCore.Mvc.Testing >= 8.0.18", + "Microsoft.EntityFrameworkCore.Design >= 8.0.18", + "Microsoft.EntityFrameworkCore.Sqlite >= 8.0.6", + "Microsoft.NET.Test.Sdk >= 17.14.1", + "Moq >= 4.20.72", + "coverlet.collector >= 6.0.4", + "xunit >= 2.9.3", + "xunit.runner.visualstudio >= 3.1.1" + ] + }, + "packageFolders": { + "C:\\Users\\Faisa\\.nuget\\packages\\": {} + }, + "project": { + "version": "1.0.0", + "restore": { + "projectUniqueName": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests\\ProjectLighthouse.Tests.csproj", + "projectName": "LBPUnion.ProjectLighthouse.Tests", + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests\\ProjectLighthouse.Tests.csproj", + "packagesPath": "C:\\Users\\Faisa\\.nuget\\packages\\", + "outputPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests\\obj\\", + "projectStyle": "PackageReference", + "configFilePaths": [ + "C:\\Users\\Faisa\\AppData\\Roaming\\NuGet\\NuGet.Config" + ], + "originalTargetFrameworks": [ + "net8.0" + ], + "sources": { + "https://api.nuget.org/v3/index.json": {} + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "projectReferences": { + "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\ProjectLighthouse.csproj": { + "projectPath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse\\ProjectLighthouse.csproj" + } + } + } + }, + "warningProperties": { + "warnAsError": [ + "NU1605" + ] + }, + "restoreAuditProperties": { + "enableAudit": "true", + "auditLevel": "low", + "auditMode": "direct" + }, + "SdkAnalysisLevel": "9.0.300" + }, + "frameworks": { + "net8.0": { + "targetAlias": "net8.0", + "dependencies": { + "JetBrains.Annotations": { + "target": "Package", + "version": "[2024.3.0, )" + }, + "Microsoft.AspNetCore.Mvc.Testing": { + "target": "Package", + "version": "[8.0.18, )" + }, + "Microsoft.EntityFrameworkCore.Design": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[8.0.18, )" + }, + "Microsoft.EntityFrameworkCore.Sqlite": { + "target": "Package", + "version": "[8.0.6, )" + }, + "Microsoft.NET.Test.Sdk": { + "target": "Package", + "version": "[17.14.1, )" + }, + "Moq": { + "target": "Package", + "version": "[4.20.72, )" + }, + "coverlet.collector": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[6.0.4, )" + }, + "xunit": { + "target": "Package", + "version": "[2.9.3, )" + }, + "xunit.runner.visualstudio": { + "include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive", + "suppressParent": "All", + "target": "Package", + "version": "[3.1.1, )" + } + }, + "imports": [ + "net461", + "net462", + "net47", + "net471", + "net472", + "net48", + "net481" + ], + "assetTargetFallback": true, + "warn": true, + "downloadDependencies": [ + { + "name": "Microsoft.AspNetCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.NETCore.App.Ref", + "version": "[8.0.19, 8.0.19]" + }, + { + "name": "Microsoft.WindowsDesktop.App.Ref", + "version": "[8.0.19, 8.0.19]" + } + ], + "frameworkReferences": { + "Microsoft.NETCore.App": { + "privateAssets": "all" + } + }, + "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.304/PortableRuntimeIdentifierGraph.json" + } + } + } +} \ No newline at end of file diff --git a/ProjectLighthouse.Tests/obj/project.nuget.cache b/ProjectLighthouse.Tests/obj/project.nuget.cache new file mode 100644 index 00000000..060f4e37 --- /dev/null +++ b/ProjectLighthouse.Tests/obj/project.nuget.cache @@ -0,0 +1,124 @@ +{ + "version": 2, + "dgSpecHash": "PUGSl1dxGbw=", + "success": true, + "projectFilePath": "G:\\LBP 3 ONLINE ARCHIVE\\LBP 3 ONLINE SITE RECREACTION\\ProjectLighthouse\\ProjectLighthouse.Tests\\ProjectLighthouse.Tests.csproj", + "expectedPackageFiles": [ + "C:\\Users\\Faisa\\.nuget\\packages\\bcrypt.net-next\\4.0.3\\bcrypt.net-next.4.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\bouncycastle.cryptography\\2.6.1\\bouncycastle.cryptography.2.6.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\castle.core\\5.1.1\\castle.core.5.1.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\coverlet.collector\\6.0.4\\coverlet.collector.6.0.4.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\discord.net.core\\3.17.4\\discord.net.core.3.17.4.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\discord.net.rest\\3.17.4\\discord.net.rest.3.17.4.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\discord.net.webhook\\3.17.4\\discord.net.webhook.3.17.4.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\distributedlock.core\\1.0.6\\distributedlock.core.1.0.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\distributedlock.mysql\\1.0.2\\distributedlock.mysql.1.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\humanizer.core\\2.14.1\\humanizer.core.2.14.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\jetbrains.annotations\\2024.3.0\\jetbrains.annotations.2024.3.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.aspnetcore.diagnostics.entityframeworkcore\\8.0.18\\microsoft.aspnetcore.diagnostics.entityframeworkcore.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.aspnetcore.mvc.testing\\8.0.18\\microsoft.aspnetcore.mvc.testing.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.aspnetcore.testhost\\8.0.18\\microsoft.aspnetcore.testhost.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\8.0.0\\microsoft.bcl.asyncinterfaces.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.codeanalysis.analyzers\\3.3.3\\microsoft.codeanalysis.analyzers.3.3.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.codeanalysis.common\\4.5.0\\microsoft.codeanalysis.common.4.5.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.codeanalysis.csharp\\4.5.0\\microsoft.codeanalysis.csharp.4.5.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.codeanalysis.csharp.workspaces\\4.5.0\\microsoft.codeanalysis.csharp.workspaces.4.5.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.codeanalysis.workspaces.common\\4.5.0\\microsoft.codeanalysis.workspaces.common.4.5.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.codecoverage\\17.14.1\\microsoft.codecoverage.17.14.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.data.sqlite.core\\8.0.6\\microsoft.data.sqlite.core.8.0.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore\\8.0.18\\microsoft.entityframeworkcore.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore.abstractions\\8.0.18\\microsoft.entityframeworkcore.abstractions.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore.analyzers\\8.0.18\\microsoft.entityframeworkcore.analyzers.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore.design\\8.0.18\\microsoft.entityframeworkcore.design.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore.relational\\8.0.18\\microsoft.entityframeworkcore.relational.8.0.18.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore.sqlite\\8.0.6\\microsoft.entityframeworkcore.sqlite.8.0.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.entityframeworkcore.sqlite.core\\8.0.6\\microsoft.entityframeworkcore.sqlite.core.8.0.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.apidescription.server\\8.0.0\\microsoft.extensions.apidescription.server.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.caching.abstractions\\8.0.0\\microsoft.extensions.caching.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.caching.memory\\8.0.1\\microsoft.extensions.caching.memory.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration\\8.0.0\\microsoft.extensions.configuration.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\8.0.0\\microsoft.extensions.configuration.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.binder\\8.0.2\\microsoft.extensions.configuration.binder.8.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.commandline\\8.0.0\\microsoft.extensions.configuration.commandline.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.environmentvariables\\8.0.0\\microsoft.extensions.configuration.environmentvariables.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.fileextensions\\8.0.1\\microsoft.extensions.configuration.fileextensions.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.json\\8.0.1\\microsoft.extensions.configuration.json.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.configuration.usersecrets\\8.0.1\\microsoft.extensions.configuration.usersecrets.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\8.0.1\\microsoft.extensions.dependencyinjection.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\8.0.2\\microsoft.extensions.dependencyinjection.abstractions.8.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.dependencymodel\\8.0.2\\microsoft.extensions.dependencymodel.8.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.diagnostics\\8.0.1\\microsoft.extensions.diagnostics.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.diagnostics.abstractions\\8.0.1\\microsoft.extensions.diagnostics.abstractions.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.fileproviders.abstractions\\8.0.0\\microsoft.extensions.fileproviders.abstractions.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.fileproviders.physical\\8.0.0\\microsoft.extensions.fileproviders.physical.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.filesystemglobbing\\8.0.0\\microsoft.extensions.filesystemglobbing.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.hosting\\8.0.1\\microsoft.extensions.hosting.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.hosting.abstractions\\8.0.1\\microsoft.extensions.hosting.abstractions.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging\\8.0.1\\microsoft.extensions.logging.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\8.0.2\\microsoft.extensions.logging.abstractions.8.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging.configuration\\8.0.1\\microsoft.extensions.logging.configuration.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging.console\\8.0.1\\microsoft.extensions.logging.console.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging.debug\\8.0.1\\microsoft.extensions.logging.debug.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging.eventlog\\8.0.1\\microsoft.extensions.logging.eventlog.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.logging.eventsource\\8.0.1\\microsoft.extensions.logging.eventsource.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.options\\8.0.2\\microsoft.extensions.options.8.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.options.configurationextensions\\8.0.0\\microsoft.extensions.options.configurationextensions.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.extensions.primitives\\8.0.0\\microsoft.extensions.primitives.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.net.test.sdk\\17.14.1\\microsoft.net.test.sdk.17.14.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.openapi\\1.6.23\\microsoft.openapi.1.6.23.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.testplatform.objectmodel\\17.14.1\\microsoft.testplatform.objectmodel.17.14.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.testplatform.testhost\\17.14.1\\microsoft.testplatform.testhost.17.14.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\mono.texttemplating\\2.2.1\\mono.texttemplating.2.2.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\moq\\4.20.72\\moq.4.20.72.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\mysqlconnector\\2.3.5\\mysqlconnector.2.3.5.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\newtonsoft.json\\13.0.3\\newtonsoft.json.13.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\pfim\\0.11.3\\pfim.0.11.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\pipelines.sockets.unofficial\\2.2.8\\pipelines.sockets.unofficial.2.2.8.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\pomelo.entityframeworkcore.mysql\\8.0.2\\pomelo.entityframeworkcore.mysql.8.0.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\redis.om\\1.0.1\\redis.om.1.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\sharpziplib\\1.4.2\\sharpziplib.1.4.2.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\sixlabors.imagesharp\\3.1.10\\sixlabors.imagesharp.3.1.10.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\sqlitepclraw.bundle_e_sqlite3\\2.1.6\\sqlitepclraw.bundle_e_sqlite3.2.1.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\sqlitepclraw.core\\2.1.6\\sqlitepclraw.core.2.1.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\sqlitepclraw.lib.e_sqlite3\\2.1.6\\sqlitepclraw.lib.e_sqlite3.2.1.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\sqlitepclraw.provider.e_sqlite3\\2.1.6\\sqlitepclraw.provider.e_sqlite3.2.1.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\stackexchange.redis\\2.7.17\\stackexchange.redis.2.7.17.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\swashbuckle.aspnetcore\\9.0.3\\swashbuckle.aspnetcore.9.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\swashbuckle.aspnetcore.swagger\\9.0.3\\swashbuckle.aspnetcore.swagger.9.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\swashbuckle.aspnetcore.swaggergen\\9.0.3\\swashbuckle.aspnetcore.swaggergen.9.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\swashbuckle.aspnetcore.swaggerui\\9.0.3\\swashbuckle.aspnetcore.swaggerui.9.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.codedom\\4.4.0\\system.codedom.4.4.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.collections.immutable\\8.0.0\\system.collections.immutable.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.composition\\6.0.0\\system.composition.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.composition.attributedmodel\\6.0.0\\system.composition.attributedmodel.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.composition.convention\\6.0.0\\system.composition.convention.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.composition.hosting\\6.0.0\\system.composition.hosting.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.composition.runtime\\6.0.0\\system.composition.runtime.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.composition.typedparts\\6.0.0\\system.composition.typedparts.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.diagnostics.eventlog\\8.0.1\\system.diagnostics.eventlog.8.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.interactive.async\\6.0.1\\system.interactive.async.6.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.io.pipelines\\8.0.0\\system.io.pipelines.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.linq.async\\6.0.1\\system.linq.async.6.0.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.memory\\4.5.3\\system.memory.4.5.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.reflection.metadata\\8.0.0\\system.reflection.metadata.8.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.text.encoding.codepages\\6.0.0\\system.text.encoding.codepages.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.text.json\\8.0.5\\system.text.json.8.0.5.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.threading.channels\\6.0.0\\system.threading.channels.6.0.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\system.valuetuple\\4.5.0\\system.valuetuple.4.5.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\ulid\\1.2.6\\ulid.1.2.6.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit\\2.9.3\\xunit.2.9.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.abstractions\\2.0.3\\xunit.abstractions.2.0.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.analyzers\\1.18.0\\xunit.analyzers.1.18.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.assert\\2.9.3\\xunit.assert.2.9.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.core\\2.9.3\\xunit.core.2.9.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.extensibility.core\\2.9.3\\xunit.extensibility.core.2.9.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.extensibility.execution\\2.9.3\\xunit.extensibility.execution.2.9.3.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\xunit.runner.visualstudio\\3.1.1\\xunit.runner.visualstudio.3.1.1.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\yamldotnet\\16.3.0\\yamldotnet.16.3.0.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.netcore.app.ref\\8.0.19\\microsoft.netcore.app.ref.8.0.19.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.windowsdesktop.app.ref\\8.0.19\\microsoft.windowsdesktop.app.ref.8.0.19.nupkg.sha512", + "C:\\Users\\Faisa\\.nuget\\packages\\microsoft.aspnetcore.app.ref\\8.0.19\\microsoft.aspnetcore.app.ref.8.0.19.nupkg.sha512" + ], + "logs": [] +} \ No newline at end of file diff --git a/ProjectLighthouse.sln b/ProjectLighthouse.sln index 4f163398..0fab06d6 100644 --- a/ProjectLighthouse.sln +++ b/ProjectLighthouse.sln @@ -1,72 +1,72 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectLighthouse", "ProjectLighthouse\ProjectLighthouse.csproj", "{C6CFD4AD-47ED-4C86-B0C4-A4216D82E0DC}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectLighthouse.Tests", "ProjectLighthouse.Tests\ProjectLighthouse.Tests.csproj", "{AFC74569-B289-4ACC-B21C-313A3A62C017}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{D360C08E-EA47-43AC-A566-FDF413442980}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectLighthouse.Tests.GameApiTests", "ProjectLighthouse.Tests.GameApiTests\ProjectLighthouse.Tests.GameApiTests.csproj", "{200EED99-FE3E-45C6-A51E-76ED9819CA2B}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectLighthouse.Tests.WebsiteTests", "ProjectLighthouse.Tests.WebsiteTests\ProjectLighthouse.Tests.WebsiteTests.csproj", "{CF65EB5B-5364-4D2A-8639-F147A67F08E7}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectLighthouse.Servers.API", "ProjectLighthouse.Servers.API\ProjectLighthouse.Servers.API.csproj", "{5593825E-F5C9-467F-9125-3E3249CFEEAB}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectLighthouse.Servers.GameServer", "ProjectLighthouse.Servers.GameServer\ProjectLighthouse.Servers.GameServer.csproj", "{0CD7F64B-7827-4AC9-B7D8-CE371D505544}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectLighthouse.Servers.Website", "ProjectLighthouse.Servers.Website\ProjectLighthouse.Servers.Website.csproj", "{FA9AEA06-D6B5-4E68-8370-DB9188108635}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Servers", "Servers", "{1DE7A758-1F4F-4BA5-BE1C-74F9D0AB9EA3}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Source Code", "Source Code", "{7805B410-9260-4907-A7C6-D739369B2F25}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectLighthouse.Localization", "ProjectLighthouse.Localization\ProjectLighthouse.Localization.csproj", "{18B76DAC-5DCB-44EA-B74D-0B4554BB161C}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {C6CFD4AD-47ED-4C86-B0C4-A4216D82E0DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C6CFD4AD-47ED-4C86-B0C4-A4216D82E0DC}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C6CFD4AD-47ED-4C86-B0C4-A4216D82E0DC}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C6CFD4AD-47ED-4C86-B0C4-A4216D82E0DC}.Release|Any CPU.Build.0 = Release|Any CPU - {AFC74569-B289-4ACC-B21C-313A3A62C017}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {AFC74569-B289-4ACC-B21C-313A3A62C017}.Debug|Any CPU.Build.0 = Debug|Any CPU - {AFC74569-B289-4ACC-B21C-313A3A62C017}.Release|Any CPU.ActiveCfg = Release|Any CPU - {200EED99-FE3E-45C6-A51E-76ED9819CA2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {200EED99-FE3E-45C6-A51E-76ED9819CA2B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {200EED99-FE3E-45C6-A51E-76ED9819CA2B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {CF65EB5B-5364-4D2A-8639-F147A67F08E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {CF65EB5B-5364-4D2A-8639-F147A67F08E7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {CF65EB5B-5364-4D2A-8639-F147A67F08E7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5593825E-F5C9-467F-9125-3E3249CFEEAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5593825E-F5C9-467F-9125-3E3249CFEEAB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {5593825E-F5C9-467F-9125-3E3249CFEEAB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5593825E-F5C9-467F-9125-3E3249CFEEAB}.Release|Any CPU.Build.0 = Release|Any CPU - {0CD7F64B-7827-4AC9-B7D8-CE371D505544}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {0CD7F64B-7827-4AC9-B7D8-CE371D505544}.Debug|Any CPU.Build.0 = Debug|Any CPU - {0CD7F64B-7827-4AC9-B7D8-CE371D505544}.Release|Any CPU.ActiveCfg = Release|Any CPU - {0CD7F64B-7827-4AC9-B7D8-CE371D505544}.Release|Any CPU.Build.0 = Release|Any CPU - {FA9AEA06-D6B5-4E68-8370-DB9188108635}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FA9AEA06-D6B5-4E68-8370-DB9188108635}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FA9AEA06-D6B5-4E68-8370-DB9188108635}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FA9AEA06-D6B5-4E68-8370-DB9188108635}.Release|Any CPU.Build.0 = Release|Any CPU - {18B76DAC-5DCB-44EA-B74D-0B4554BB161C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {18B76DAC-5DCB-44EA-B74D-0B4554BB161C}.Debug|Any CPU.Build.0 = Debug|Any CPU - {18B76DAC-5DCB-44EA-B74D-0B4554BB161C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {18B76DAC-5DCB-44EA-B74D-0B4554BB161C}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {AFC74569-B289-4ACC-B21C-313A3A62C017} = {D360C08E-EA47-43AC-A566-FDF413442980} - {200EED99-FE3E-45C6-A51E-76ED9819CA2B} = {D360C08E-EA47-43AC-A566-FDF413442980} - {CF65EB5B-5364-4D2A-8639-F147A67F08E7} = {D360C08E-EA47-43AC-A566-FDF413442980} - {5593825E-F5C9-467F-9125-3E3249CFEEAB} = {1DE7A758-1F4F-4BA5-BE1C-74F9D0AB9EA3} - {0CD7F64B-7827-4AC9-B7D8-CE371D505544} = {1DE7A758-1F4F-4BA5-BE1C-74F9D0AB9EA3} - {FA9AEA06-D6B5-4E68-8370-DB9188108635} = {1DE7A758-1F4F-4BA5-BE1C-74F9D0AB9EA3} - {1DE7A758-1F4F-4BA5-BE1C-74F9D0AB9EA3} = {7805B410-9260-4907-A7C6-D739369B2F25} - {C6CFD4AD-47ED-4C86-B0C4-A4216D82E0DC} = {7805B410-9260-4907-A7C6-D739369B2F25} - {18B76DAC-5DCB-44EA-B74D-0B4554BB161C} = {7805B410-9260-4907-A7C6-D739369B2F25} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectLighthouse", "ProjectLighthouse\ProjectLighthouse.csproj", "{C6CFD4AD-47ED-4C86-B0C4-A4216D82E0DC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectLighthouse.Tests", "ProjectLighthouse.Tests\ProjectLighthouse.Tests.csproj", "{AFC74569-B289-4ACC-B21C-313A3A62C017}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{D360C08E-EA47-43AC-A566-FDF413442980}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectLighthouse.Tests.GameApiTests", "ProjectLighthouse.Tests.GameApiTests\ProjectLighthouse.Tests.GameApiTests.csproj", "{200EED99-FE3E-45C6-A51E-76ED9819CA2B}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectLighthouse.Tests.WebsiteTests", "ProjectLighthouse.Tests.WebsiteTests\ProjectLighthouse.Tests.WebsiteTests.csproj", "{CF65EB5B-5364-4D2A-8639-F147A67F08E7}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectLighthouse.Servers.API", "ProjectLighthouse.Servers.API\ProjectLighthouse.Servers.API.csproj", "{5593825E-F5C9-467F-9125-3E3249CFEEAB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectLighthouse.Servers.GameServer", "ProjectLighthouse.Servers.GameServer\ProjectLighthouse.Servers.GameServer.csproj", "{0CD7F64B-7827-4AC9-B7D8-CE371D505544}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectLighthouse.Servers.Website", "ProjectLighthouse.Servers.Website\ProjectLighthouse.Servers.Website.csproj", "{FA9AEA06-D6B5-4E68-8370-DB9188108635}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Servers", "Servers", "{1DE7A758-1F4F-4BA5-BE1C-74F9D0AB9EA3}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Source Code", "Source Code", "{7805B410-9260-4907-A7C6-D739369B2F25}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectLighthouse.Localization", "ProjectLighthouse.Localization\ProjectLighthouse.Localization.csproj", "{18B76DAC-5DCB-44EA-B74D-0B4554BB161C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {C6CFD4AD-47ED-4C86-B0C4-A4216D82E0DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C6CFD4AD-47ED-4C86-B0C4-A4216D82E0DC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C6CFD4AD-47ED-4C86-B0C4-A4216D82E0DC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C6CFD4AD-47ED-4C86-B0C4-A4216D82E0DC}.Release|Any CPU.Build.0 = Release|Any CPU + {AFC74569-B289-4ACC-B21C-313A3A62C017}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AFC74569-B289-4ACC-B21C-313A3A62C017}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AFC74569-B289-4ACC-B21C-313A3A62C017}.Release|Any CPU.ActiveCfg = Release|Any CPU + {200EED99-FE3E-45C6-A51E-76ED9819CA2B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {200EED99-FE3E-45C6-A51E-76ED9819CA2B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {200EED99-FE3E-45C6-A51E-76ED9819CA2B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CF65EB5B-5364-4D2A-8639-F147A67F08E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CF65EB5B-5364-4D2A-8639-F147A67F08E7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CF65EB5B-5364-4D2A-8639-F147A67F08E7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5593825E-F5C9-467F-9125-3E3249CFEEAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {5593825E-F5C9-467F-9125-3E3249CFEEAB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {5593825E-F5C9-467F-9125-3E3249CFEEAB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {5593825E-F5C9-467F-9125-3E3249CFEEAB}.Release|Any CPU.Build.0 = Release|Any CPU + {0CD7F64B-7827-4AC9-B7D8-CE371D505544}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0CD7F64B-7827-4AC9-B7D8-CE371D505544}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0CD7F64B-7827-4AC9-B7D8-CE371D505544}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0CD7F64B-7827-4AC9-B7D8-CE371D505544}.Release|Any CPU.Build.0 = Release|Any CPU + {FA9AEA06-D6B5-4E68-8370-DB9188108635}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FA9AEA06-D6B5-4E68-8370-DB9188108635}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FA9AEA06-D6B5-4E68-8370-DB9188108635}.Release|Any CPU.ActiveCfg = Release|Any CPU + {FA9AEA06-D6B5-4E68-8370-DB9188108635}.Release|Any CPU.Build.0 = Release|Any CPU + {18B76DAC-5DCB-44EA-B74D-0B4554BB161C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {18B76DAC-5DCB-44EA-B74D-0B4554BB161C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {18B76DAC-5DCB-44EA-B74D-0B4554BB161C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {18B76DAC-5DCB-44EA-B74D-0B4554BB161C}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {AFC74569-B289-4ACC-B21C-313A3A62C017} = {D360C08E-EA47-43AC-A566-FDF413442980} + {200EED99-FE3E-45C6-A51E-76ED9819CA2B} = {D360C08E-EA47-43AC-A566-FDF413442980} + {CF65EB5B-5364-4D2A-8639-F147A67F08E7} = {D360C08E-EA47-43AC-A566-FDF413442980} + {5593825E-F5C9-467F-9125-3E3249CFEEAB} = {1DE7A758-1F4F-4BA5-BE1C-74F9D0AB9EA3} + {0CD7F64B-7827-4AC9-B7D8-CE371D505544} = {1DE7A758-1F4F-4BA5-BE1C-74F9D0AB9EA3} + {FA9AEA06-D6B5-4E68-8370-DB9188108635} = {1DE7A758-1F4F-4BA5-BE1C-74F9D0AB9EA3} + {1DE7A758-1F4F-4BA5-BE1C-74F9D0AB9EA3} = {7805B410-9260-4907-A7C6-D739369B2F25} + {C6CFD4AD-47ED-4C86-B0C4-A4216D82E0DC} = {7805B410-9260-4907-A7C6-D739369B2F25} + {18B76DAC-5DCB-44EA-B74D-0B4554BB161C} = {7805B410-9260-4907-A7C6-D739369B2F25} + EndGlobalSection +EndGlobal diff --git a/ProjectLighthouse.sln.DotSettings b/ProjectLighthouse.sln.DotSettings index 174ff7a3..37685167 100644 --- a/ProjectLighthouse.sln.DotSettings +++ b/ProjectLighthouse.sln.DotSettings @@ -1,176 +1,176 @@ - - True - False - False - False - FullFormat - True - HINT - HINT - SUGGESTION - WARNING - SUGGESTION - SUGGESTION - WARNING - ERROR - True - ExpressionBody - ExpressionBody - Field, Property, Event, Method - True - True - NEXT_LINE - NEXT_LINE - TOGETHER - True - USUAL_INDENT - USUAL_INDENT - NEXT_LINE - NEXT_LINE - 1 - 1 - False - False - False - False - False - False - False - False - 5 - 1 - EXPANDED - NEXT_LINE - NEVER - NEVER - NEVER - False - IF_OWNER_IS_SINGLE_LINE - False - False - True - True - True - True - True - True - True - NEXT_LINE - True - False - CHOP_IF_LONG - CHOP_IF_LONG - True - True - True - False - False - True - CHOP_IF_LONG - CHOP_IF_LONG - CHOP_IF_LONG - CHOP_ALWAYS - CHOP_IF_LONG - CHOP_ALWAYS - UseExplicitType - UseExplicitType - UseExplicitType - BE - DB - DDS - DLC - IP - JPG - LBP - MM - NAT - NP - PNG - PS - PSN - PSP - RPCS - SMTP - SSL - TLS - <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb"><ExtraRule Prefix="" Suffix="" Style="aaBb" /></Policy> - <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> - <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> - <Policy><Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static readonly fields (private)"><ElementKinds><Kind Name="READONLY_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></Policy> - <Policy><Descriptor Staticness="Any" AccessRightKinds="Private" Description="Constant fields (private)"><ElementKinds><Kind Name="CONSTANT_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></Policy> - <Policy><Descriptor Staticness="Any" AccessRightKinds="Any" Description="Methods"><ElementKinds><Kind Name="METHOD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb"><ExtraRule Prefix="" Suffix="" Style="aaBb" /></Policy></Policy> - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True - True + + True + False + False + False + FullFormat + True + HINT + HINT + SUGGESTION + WARNING + SUGGESTION + SUGGESTION + WARNING + ERROR + True + ExpressionBody + ExpressionBody + Field, Property, Event, Method + True + True + NEXT_LINE + NEXT_LINE + TOGETHER + True + USUAL_INDENT + USUAL_INDENT + NEXT_LINE + NEXT_LINE + 1 + 1 + False + False + False + False + False + False + False + False + 5 + 1 + EXPANDED + NEXT_LINE + NEVER + NEVER + NEVER + False + IF_OWNER_IS_SINGLE_LINE + False + False + True + True + True + True + True + True + True + NEXT_LINE + True + False + CHOP_IF_LONG + CHOP_IF_LONG + True + True + True + False + False + True + CHOP_IF_LONG + CHOP_IF_LONG + CHOP_IF_LONG + CHOP_ALWAYS + CHOP_IF_LONG + CHOP_ALWAYS + UseExplicitType + UseExplicitType + UseExplicitType + BE + DB + DDS + DLC + IP + JPG + LBP + MM + NAT + NP + PNG + PS + PSN + PSP + RPCS + SMTP + SSL + TLS + <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb"><ExtraRule Prefix="" Suffix="" Style="aaBb" /></Policy> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> + <Policy><Descriptor Staticness="Static" AccessRightKinds="Private" Description="Static readonly fields (private)"><ElementKinds><Kind Name="READONLY_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></Policy> + <Policy><Descriptor Staticness="Any" AccessRightKinds="Private" Description="Constant fields (private)"><ElementKinds><Kind Name="CONSTANT_FIELD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /></Policy> + <Policy><Descriptor Staticness="Any" AccessRightKinds="Any" Description="Methods"><ElementKinds><Kind Name="METHOD" /></ElementKinds></Descriptor><Policy Inspect="True" Prefix="" Suffix="" Style="AaBb"><ExtraRule Prefix="" Suffix="" Style="aaBb" /></Policy></Policy> + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True + True True \ No newline at end of file diff --git a/README.md b/README.md index 4020432e..c77eefae 100644 --- a/README.md +++ b/README.md @@ -1,74 +1,74 @@ -# Project Lighthouse - -[![Continuous Integration](https://github.com/LBPUnion/ProjectLighthouse/actions/workflows/ci.yml/badge.svg)](https://github.com/LBPUnion/ProjectLighthouse/actions/workflows/ci.yml) -![GitHub commit activity](https://img.shields.io/github/commit-activity/m/LBPUnion/ProjectLighthouse) -![GitHub contributors](https://img.shields.io/github/contributors/LBPUnion/ProjectLighthouse) -![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/LBPUnion/ProjectLighthouse) -![Source Lines of Code](https://tokei.ekzhang.com/b1/github/LBPUnion/ProjectLighthouse) - -Project Lighthouse is a clean-room, open-source custom server for LittleBigPlanet. This is a project conducted by -the LBP Union Ministry of Technology Research and Development team. - -For concerns and inquiries about the project, please contact us [here](https://www.lbpunion.com/contact). - -## DISCLAIMERS (Please read!) - -### This is not a final product. -This is **beta software**, and thus is **not stable nor is it secure**. - -While Project Lighthouse is in a mostly working state, **we ask that our software not be used in a production -environment until release**. - -This is because we have not entirely nailed security down yet, and **your instance WILL get attacked** as a result. It's -happened before, and it'll happen again. - -Simply put, **Project Lighthouse is not ready for the public yet**. - -In addition, we're not responsible if someone hacks your machine and wipes your database, so make frequent backups, and -be sure to report any vulnerabilities. Thank you in advance. - -### We are not obligated to provide support. - -Project Lighthouse is open source. However, it is licensed under the GNU Affero General Public License version 3 ( -AGPLv3) -meaning that Project Lighthouse is provided to you as-is, with **absolutely no warranty.** - -Please understand that while this license gives you freedom to do pretty much anything you would want to do, including -allowing you to run your instance, -**this doesn't mean we are obligated to support you or your instance**. When you set up an instance of Project -Lighthouse, you are entirely on your own. - -### Sony is not related nor liable. - -[//]: # (Referenced from https://www.lbpunion.com/post/project-lighthouse-littlebigplanet-private-servers) - -It is very important to stress that the LBP Union and Project Lighthouse is not affiliated with Sony Group -Corporation *(collectively referred to as “Sony”)* and its subordinate entities and studios. We are not the official -developers of LittleBigPlanet or it's online services. Project Lighthouse is a clean-room reimplementation of its -server, not the official servers. - -By using Project Lighthouse you release Sony, as well as any employees or agents of Sony, from any and all liability, -corporate, or personal loss caused to you or others by the use of Project Lighthouse or any features we provide. - -## Building - -This will be written when we're out of beta. Consider this your barrier to entry ;). - -It is recommended to build with `Release` if you plan to use Lighthouse in a production environment. - -## Contributing - -Please see [`CONTRIBUTING.md`](https://github.com/LBPUnion/ProjectLighthouse/blob/main/CONTRIBUTING.md) for more -information. - -## Compatibility across games and platforms - -| Game | Console (PS3/Vita/PSP) | Emulator (RPCS3/Vita3k/PPSSPP) | Next-Gen (PS4/PS5/Adrenaline) | -|----------|------------------------|-------------------------------------------|-------------------------------| -| LBP1 | Compatible | Compatible | No next-gen equivalent | -| LBP2 | Compatible | Compatible | No next-gen equivalent | -| LBP3 | Compatible | Compatible | Incompatible | -| LBP Vita | Compatible | Incompatible, PSN not supported on Vita3k | No next-gen equivalent | -| LBP PSP | Potentially compatible | Incompatible, PSN not supported on PPSSPP | Potentially Compatible | - -Project Lighthouse is mostly a work in progress, so this chart is subject to change at any point. +# Project Lighthouse + +[![Continuous Integration](https://github.com/LBPUnion/ProjectLighthouse/actions/workflows/ci.yml/badge.svg)](https://github.com/LBPUnion/ProjectLighthouse/actions/workflows/ci.yml) +![GitHub commit activity](https://img.shields.io/github/commit-activity/m/LBPUnion/ProjectLighthouse) +![GitHub contributors](https://img.shields.io/github/contributors/LBPUnion/ProjectLighthouse) +![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/LBPUnion/ProjectLighthouse) +![Source Lines of Code](https://tokei.ekzhang.com/b1/github/LBPUnion/ProjectLighthouse) + +Project Lighthouse is a clean-room, open-source custom server for LittleBigPlanet. This is a project conducted by +the LBP Union Ministry of Technology Research and Development team. + +For concerns and inquiries about the project, please contact us [here](https://www.lbpunion.com/contact). + +## DISCLAIMERS (Please read!) + +### This is not a final product. +This is **beta software**, and thus is **not stable nor is it secure**. + +While Project Lighthouse is in a mostly working state, **we ask that our software not be used in a production +environment until release**. + +This is because we have not entirely nailed security down yet, and **your instance WILL get attacked** as a result. It's +happened before, and it'll happen again. + +Simply put, **Project Lighthouse is not ready for the public yet**. + +In addition, we're not responsible if someone hacks your machine and wipes your database, so make frequent backups, and +be sure to report any vulnerabilities. Thank you in advance. + +### We are not obligated to provide support. + +Project Lighthouse is open source. However, it is licensed under the GNU Affero General Public License version 3 ( +AGPLv3) +meaning that Project Lighthouse is provided to you as-is, with **absolutely no warranty.** + +Please understand that while this license gives you freedom to do pretty much anything you would want to do, including +allowing you to run your instance, +**this doesn't mean we are obligated to support you or your instance**. When you set up an instance of Project +Lighthouse, you are entirely on your own. + +### Sony is not related nor liable. + +[//]: # (Referenced from https://www.lbpunion.com/post/project-lighthouse-littlebigplanet-private-servers) + +It is very important to stress that the LBP Union and Project Lighthouse is not affiliated with Sony Group +Corporation *(collectively referred to as “Sony”)* and its subordinate entities and studios. We are not the official +developers of LittleBigPlanet or it's online services. Project Lighthouse is a clean-room reimplementation of its +server, not the official servers. + +By using Project Lighthouse you release Sony, as well as any employees or agents of Sony, from any and all liability, +corporate, or personal loss caused to you or others by the use of Project Lighthouse or any features we provide. + +## Building + +This will be written when we're out of beta. Consider this your barrier to entry ;). + +It is recommended to build with `Release` if you plan to use Lighthouse in a production environment. + +## Contributing + +Please see [`CONTRIBUTING.md`](https://github.com/LBPUnion/ProjectLighthouse/blob/main/CONTRIBUTING.md) for more +information. + +## Compatibility across games and platforms + +| Game | Console (PS3/Vita/PSP) | Emulator (RPCS3/Vita3k/PPSSPP) | Next-Gen (PS4/PS5/Adrenaline) | +|----------|------------------------|-------------------------------------------|-------------------------------| +| LBP1 | Compatible | Compatible | No next-gen equivalent | +| LBP2 | Compatible | Compatible | No next-gen equivalent | +| LBP3 | Compatible | Compatible | Incompatible | +| LBP Vita | Compatible | Incompatible, PSN not supported on Vita3k | No next-gen equivalent | +| LBP PSP | Potentially compatible | Incompatible, PSN not supported on PPSSPP | Potentially Compatible | + +Project Lighthouse is mostly a work in progress, so this chart is subject to change at any point. diff --git a/crowdin.yml b/crowdin.yml index 28f6324e..17c28ccc 100644 --- a/crowdin.yml +++ b/crowdin.yml @@ -1,9 +1,9 @@ -project_id_env: CROWDIN_PROJECT_ID -api_token_env: CROWDIN_PERSONAL_TOKEN - -preserve_hierarchy: true -files: - - source: /ProjectLighthouse.Localization/*.resx - translation: /ProjectLighthouse.Localization/%file_name%.lang-%locale%.%file_extension% - ignore: - - /ProjectLighthouse.Localization/%file_name%.*.%file_extension% +project_id_env: CROWDIN_PROJECT_ID +api_token_env: CROWDIN_PERSONAL_TOKEN + +preserve_hierarchy: true +files: + - source: /ProjectLighthouse.Localization/*.resx + translation: /ProjectLighthouse.Localization/%file_name%.lang-%locale%.%file_extension% + ignore: + - /ProjectLighthouse.Localization/%file_name%.*.%file_extension% diff --git a/docker-compose.yml b/docker-compose.yml index d5b16637..d48a1f88 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,89 +1,89 @@ -version: '3.4' -volumes: - database: - redis: -services: - gameserver: - image: lighthouse:latest - container_name: gameserver - build: . - restart: unless-stopped - ports: - - "10061:10061" - environment: - SERVER: GameServer - healthcheck: - test: wget --spider -t1 -nv http://localhost:10061/LITTLEBIGPLANETPS3_XML/status || exit 1 - timeout: 10s - retries: 5 - start_period: 60s - depends_on: - db: - condition: service_healthy - redis: - condition: service_started - volumes: - - "./data:/lighthouse/data:z" - - "./data/.aspnet:/lighthouse/.aspnet:z" - website: - image: lighthouse:latest - container_name: website - restart: unless-stopped - ports: - - "10060:10060" - environment: - SERVER: Website - healthcheck: - test: wget --spider -t1 -nv http://localhost:10060/status || exit 1 - timeout: 10s - retries: 5 - start_period: 60s - depends_on: - db: - condition: service_healthy - redis: - condition: service_started - volumes: - - "./data:/lighthouse/data:z" - - "./data/.aspnet:/lighthouse/.aspnet:z" - api: - image: lighthouse:latest - container_name: api - restart: unless-stopped - ports: - - "10062:10062" - environment: - SERVER: API - healthcheck: - test: wget --spider -t1 -nv http://localhost:10062/api/v1/status || exit 1 - timeout: 10s - retries: 5 - start_period: 60s - depends_on: - db: - condition: service_healthy - redis: - condition: service_started - volumes: - - "./data:/lighthouse/data:z" - - "./data/.aspnet:/lighthouse/.aspnet:z" - db: - image: mariadb:latest - container_name: db - restart: unless-stopped - environment: - MARIADB_ROOT_PASSWORD: lighthouse - MARIADB_DATABASE: lighthouse - healthcheck: - test: ["CMD", "healthcheck.sh", "--su-mysql", "--connect"] - timeout: 10s - interval: 5s - retries: 5 - volumes: - - "database:/var/lib/mysql" - redis: - image: redis/redis-stack-server:latest - container_name: redis - restart: unless-stopped - volumes: +version: '3.4' +volumes: + database: + redis: +services: + gameserver: + image: lighthouse:latest + container_name: gameserver + build: . + restart: unless-stopped + ports: + - "10061:10061" + environment: + SERVER: GameServer + healthcheck: + test: wget --spider -t1 -nv http://localhost:10061/LITTLEBIGPLANETPS3_XML/status || exit 1 + timeout: 10s + retries: 5 + start_period: 60s + depends_on: + db: + condition: service_healthy + redis: + condition: service_started + volumes: + - "./data:/lighthouse/data:z" + - "./data/.aspnet:/lighthouse/.aspnet:z" + website: + image: lighthouse:latest + container_name: website + restart: unless-stopped + ports: + - "10060:10060" + environment: + SERVER: Website + healthcheck: + test: wget --spider -t1 -nv http://localhost:10060/status || exit 1 + timeout: 10s + retries: 5 + start_period: 60s + depends_on: + db: + condition: service_healthy + redis: + condition: service_started + volumes: + - "./data:/lighthouse/data:z" + - "./data/.aspnet:/lighthouse/.aspnet:z" + api: + image: lighthouse:latest + container_name: api + restart: unless-stopped + ports: + - "10062:10062" + environment: + SERVER: API + healthcheck: + test: wget --spider -t1 -nv http://localhost:10062/api/v1/status || exit 1 + timeout: 10s + retries: 5 + start_period: 60s + depends_on: + db: + condition: service_healthy + redis: + condition: service_started + volumes: + - "./data:/lighthouse/data:z" + - "./data/.aspnet:/lighthouse/.aspnet:z" + db: + image: mariadb:latest + container_name: db + restart: unless-stopped + environment: + MARIADB_ROOT_PASSWORD: lighthouse + MARIADB_DATABASE: lighthouse + healthcheck: + test: ["CMD", "healthcheck.sh", "--su-mysql", "--connect"] + timeout: 10s + interval: 5s + retries: 5 + volumes: + - "database:/var/lib/mysql" + redis: + image: redis/redis-stack-server:latest + container_name: redis + restart: unless-stopped + volumes: - "redis:/var/lib/redis" \ No newline at end of file diff --git a/global.json b/global.json index dad2db5e..fe565a4d 100644 --- a/global.json +++ b/global.json @@ -1,7 +1,7 @@ -{ - "sdk": { - "version": "8.0.0", - "rollForward": "latestMajor", - "allowPrerelease": true - } +{ + "sdk": { + "version": "8.0.0", + "rollForward": "latestMajor", + "allowPrerelease": true + } } \ No newline at end of file diff --git a/qodana.yaml b/qodana.yaml index c6439c0a..9fdddc68 100644 --- a/qodana.yaml +++ b/qodana.yaml @@ -1,15 +1,15 @@ -version: "1.0" -linter: jetbrains/qodana-dotnet:2024.3 -profile: - name: qodana.recommended -include: - - name: CheckDependencyLicenses -exclude: - - name: All - paths: - - ProjectLighthouse.Localization - - ProjectLighthouse/Migrations - - ProjectLighthouse/StaticFiles/css/themes - - ProjectLighthouse/StaticFiles/safari-pinned-tab.svg -dependencyIgnores: +version: "1.0" +linter: jetbrains/qodana-dotnet:2024.3 +profile: + name: qodana.recommended +include: + - name: CheckDependencyLicenses +exclude: + - name: All + paths: + - ProjectLighthouse.Localization + - ProjectLighthouse/Migrations + - ProjectLighthouse/StaticFiles/css/themes + - ProjectLighthouse/StaticFiles/safari-pinned-tab.svg +dependencyIgnores: - name: "SixLabors.ImageSharp" # We're open source, so we come under the Apache License \ No newline at end of file