Skip to content

Commit c11327f

Browse files
blaze6950Mykyta Zotov
andauthored
Feature/implement new domain layer for adding step logic (#1)
* feat: implement new fixed-step domains for numeric types (byte, sbyte, ushort, uint, long, ulong, float, double, decimal) and enhance domain abstractions with interfaces for fixed and variable step sizes * feat: enhance domain logic with new tests and improvements for fixed-step domains, including handling of edge cases and boundary conditions * feat: enhance benchmarks for performance validation * feat: update CI configuration to restore and build test project dependencies * feat: refine distance calculations and add subtraction methods for fixed-step domains * feat: add subtraction methods for fixed-step domains and update workflow paths * feat: enhance domain logic by adding zero-step handling and improving distance calculations for fixed-step domains * chore: redundant data was removed --------- Co-authored-by: Mykyta Zotov <mykyta.zotov@ihsmarkit.com>
1 parent 6f077b5 commit c11327f

127 files changed

Lines changed: 14030 additions & 443 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
name: CI/CD - Domain.Abstractions
2+
3+
on:
4+
push:
5+
branches: [ master, main ]
6+
paths:
7+
- 'src/Domain/Intervals.NET.Domain.Abstractions/**'
8+
- '.github/workflows/domain-abstractions.yml'
9+
pull_request:
10+
branches: [ master, main ]
11+
paths:
12+
- 'src/Domain/Intervals.NET.Domain.Abstractions/**'
13+
- '.github/workflows/domain-abstractions.yml'
14+
workflow_dispatch:
15+
16+
env:
17+
DOTNET_VERSION: '8.x.x'
18+
PROJECT_PATH: 'src/Domain/Intervals.NET.Domain.Abstractions/Intervals.NET.Domain.Abstractions.csproj'
19+
20+
jobs:
21+
build-and-test:
22+
runs-on: ubuntu-latest
23+
24+
steps:
25+
- name: Checkout code
26+
uses: actions/checkout@v4
27+
28+
- name: Setup .NET
29+
uses: actions/setup-dotnet@v4
30+
with:
31+
dotnet-version: ${{ env.DOTNET_VERSION }}
32+
33+
- name: Restore dependencies
34+
run: dotnet restore ${{ env.PROJECT_PATH }}
35+
36+
- name: Build Domain.Abstractions
37+
run: dotnet build ${{ env.PROJECT_PATH }} --configuration Release --no-restore
38+
39+
publish-nuget:
40+
runs-on: ubuntu-latest
41+
needs: build-and-test
42+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
43+
44+
steps:
45+
- name: Checkout code
46+
uses: actions/checkout@v4
47+
48+
- name: Setup .NET
49+
uses: actions/setup-dotnet@v4
50+
with:
51+
dotnet-version: ${{ env.DOTNET_VERSION }}
52+
53+
- name: Restore dependencies
54+
run: dotnet restore ${{ env.PROJECT_PATH }}
55+
56+
- name: Build Domain.Abstractions
57+
run: dotnet build ${{ env.PROJECT_PATH }} --configuration Release --no-restore
58+
59+
- name: Pack Domain.Abstractions
60+
run: dotnet pack ${{ env.PROJECT_PATH }} --configuration Release --no-build --output ./artifacts
61+
62+
- name: Publish Domain.Abstractions to NuGet
63+
run: dotnet nuget push ./artifacts/Intervals.NET.Domain.Abstractions.*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
64+
65+
- name: Upload package artifacts
66+
uses: actions/upload-artifact@v4
67+
with:
68+
name: domain-abstractions-package
69+
path: ./artifacts/*.nupkg
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
name: CI/CD - Domain.Default
2+
3+
on:
4+
push:
5+
branches: [ master, main ]
6+
paths:
7+
- 'src/Domain/Intervals.NET.Domain.Default/**'
8+
- 'src/Domain/Intervals.NET.Domain.Abstractions/**'
9+
- 'tests/Intervals.NET.Domain.Default.Tests/**'
10+
- '.github/workflows/domain-default.yml'
11+
pull_request:
12+
branches: [ master, main ]
13+
paths:
14+
- 'src/Domain/Intervals.NET.Domain.Default/**'
15+
- 'src/Domain/Intervals.NET.Domain.Abstractions/**'
16+
- 'tests/Intervals.NET.Domain.Default.Tests/**'
17+
- '.github/workflows/domain-default.yml'
18+
workflow_dispatch:
19+
20+
env:
21+
DOTNET_VERSION: '8.x.x'
22+
PROJECT_PATH: 'src/Domain/Intervals.NET.Domain.Default/Intervals.NET.Domain.Default.csproj'
23+
TEST_PATH: 'tests/Intervals.NET.Domain.Default.Tests/Intervals.NET.Domain.Default.Tests.csproj'
24+
25+
jobs:
26+
build-and-test:
27+
runs-on: ubuntu-latest
28+
29+
steps:
30+
- name: Checkout code
31+
uses: actions/checkout@v4
32+
33+
- name: Setup .NET
34+
uses: actions/setup-dotnet@v4
35+
with:
36+
dotnet-version: ${{ env.DOTNET_VERSION }}
37+
38+
- name: Restore dependencies
39+
run: dotnet restore ${{ env.PROJECT_PATH }}
40+
41+
- name: Build Domain.Default
42+
run: dotnet build ${{ env.PROJECT_PATH }} --configuration Release --no-restore
43+
44+
- name: Run Domain.Default tests
45+
run: dotnet test ${{ env.TEST_PATH }} --configuration Release --verbosity normal
46+
47+
publish-nuget:
48+
runs-on: ubuntu-latest
49+
needs: build-and-test
50+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
51+
52+
steps:
53+
- name: Checkout code
54+
uses: actions/checkout@v4
55+
56+
- name: Setup .NET
57+
uses: actions/setup-dotnet@v4
58+
with:
59+
dotnet-version: ${{ env.DOTNET_VERSION }}
60+
61+
- name: Restore dependencies
62+
run: dotnet restore ${{ env.PROJECT_PATH }}
63+
64+
- name: Build Domain.Default
65+
run: dotnet build ${{ env.PROJECT_PATH }} --configuration Release --no-restore
66+
67+
- name: Pack Domain.Default
68+
run: dotnet pack ${{ env.PROJECT_PATH }} --configuration Release --no-build --output ./artifacts
69+
70+
- name: Publish Domain.Default to NuGet
71+
run: dotnet nuget push ./artifacts/Intervals.NET.Domain.Default.*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
72+
73+
- name: Upload package artifacts
74+
uses: actions/upload-artifact@v4
75+
with:
76+
name: domain-default-package
77+
path: ./artifacts/*.nupkg
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
name: CI/CD - Domain.Extensions
2+
3+
on:
4+
push:
5+
branches: [ master, main ]
6+
paths:
7+
- 'src/Domain/Intervals.NET.Domain.Extensions/**'
8+
- 'src/Domain/Intervals.NET.Domain.Abstractions/**'
9+
- 'src/Intervals.NET/**'
10+
- 'tests/Intervals.NET.Domain.Extensions.Tests/**'
11+
- '.github/workflows/domain-extensions.yml'
12+
pull_request:
13+
branches: [ master, main ]
14+
paths:
15+
- 'src/Domain/Intervals.NET.Domain.Extensions/**'
16+
- 'src/Domain/Intervals.NET.Domain.Abstractions/**'
17+
- 'src/Intervals.NET/**'
18+
- 'tests/Intervals.NET.Domain.Extensions.Tests/**'
19+
- '.github/workflows/domain-extensions.yml'
20+
workflow_dispatch:
21+
22+
env:
23+
DOTNET_VERSION: '8.x.x'
24+
PROJECT_PATH: 'src/Domain/Intervals.NET.Domain.Extensions/Intervals.NET.Domain.Extensions.csproj'
25+
TEST_PATH: 'tests/Intervals.NET.Domain.Extensions.Tests/Intervals.NET.Domain.Extensions.Tests.csproj'
26+
27+
jobs:
28+
build-and-test:
29+
runs-on: ubuntu-latest
30+
31+
steps:
32+
- name: Checkout code
33+
uses: actions/checkout@v4
34+
35+
- name: Setup .NET
36+
uses: actions/setup-dotnet@v4
37+
with:
38+
dotnet-version: ${{ env.DOTNET_VERSION }}
39+
40+
- name: Restore dependencies
41+
run: dotnet restore ${{ env.PROJECT_PATH }}
42+
43+
- name: Build Domain.Extensions
44+
run: dotnet build ${{ env.PROJECT_PATH }} --configuration Release --no-restore
45+
46+
- name: Run Domain.Extensions tests
47+
run: dotnet test ${{ env.TEST_PATH }} --configuration Release --verbosity normal
48+
49+
publish-nuget:
50+
runs-on: ubuntu-latest
51+
needs: build-and-test
52+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
53+
54+
steps:
55+
- name: Checkout code
56+
uses: actions/checkout@v4
57+
58+
- name: Setup .NET
59+
uses: actions/setup-dotnet@v4
60+
with:
61+
dotnet-version: ${{ env.DOTNET_VERSION }}
62+
63+
- name: Restore dependencies
64+
run: dotnet restore ${{ env.PROJECT_PATH }}
65+
66+
- name: Build Domain.Extensions
67+
run: dotnet build ${{ env.PROJECT_PATH }} --configuration Release --no-restore
68+
69+
- name: Pack Domain.Extensions
70+
run: dotnet pack ${{ env.PROJECT_PATH }} --configuration Release --no-build --output ./artifacts
71+
72+
- name: Publish Domain.Extensions to NuGet
73+
run: dotnet nuget push ./artifacts/Intervals.NET.Domain.Extensions.*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
74+
75+
- name: Upload package artifacts
76+
uses: actions/upload-artifact@v4
77+
with:
78+
name: domain-extensions-package
79+
path: ./artifacts/*.nupkg
Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,12 @@ on:
66
paths:
77
- 'src/Intervals.NET/**'
88
- 'tests/Intervals.NET.Tests/**'
9-
- '*.sln'
9+
- '.github/workflows/intervals-net.yml'
1010
pull_request:
1111
branches: [ master, main ]
1212
paths:
1313
- 'src/Intervals.NET/**'
1414
- 'tests/Intervals.NET.Tests/**'
15-
- '*.sln'
1615
workflow_dispatch:
1716

1817
env:
@@ -34,18 +33,27 @@ jobs:
3433
dotnet-version: ${{ env.DOTNET_VERSION }}
3534

3635
- name: Restore dependencies
37-
run: dotnet restore
36+
run: dotnet restore ${{ env.TEST_PATH }}
3837

39-
- name: Build solution
40-
run: dotnet build --configuration Release --no-restore /p:DefineConstants=UNIT_TESTS
38+
- name: Build test project and dependencies
39+
run: dotnet build ${{ env.TEST_PATH }} --configuration Release --no-restore
4140

42-
- name: Run tests
43-
run: dotnet test ${{ env.TEST_PATH }} --configuration Release --no-build --verbosity normal
41+
- name: Run Intervals.NET tests with coverage
42+
run: dotnet test ${{ env.TEST_PATH }} --configuration Release --no-build --verbosity normal --collect:"XPlat Code Coverage" --results-directory ./TestResults
43+
44+
- name: Upload coverage reports to Codecov
45+
uses: codecov/codecov-action@v4
46+
with:
47+
files: ./TestResults/**/coverage.cobertura.xml
48+
fail_ci_if_error: false
49+
verbose: true
50+
env:
51+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
4452

4553
publish-nuget:
4654
runs-on: ubuntu-latest
4755
needs: build-and-test
48-
if: github.ref == 'refs/heads/main'
56+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
4957

5058
steps:
5159
- name: Checkout code
@@ -57,7 +65,7 @@ jobs:
5765
dotnet-version: ${{ env.DOTNET_VERSION }}
5866

5967
- name: Restore dependencies
60-
run: dotnet restore
68+
run: dotnet restore ${{ env.PROJECT_PATH }}
6169

6270
- name: Build Intervals.NET
6371
run: dotnet build ${{ env.PROJECT_PATH }} --configuration Release --no-restore

Intervals.NET.sln

Lines changed: 55 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ EndProject
66
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SolutionItems", "SolutionItems", "{5D2B78C6-39CB-44C2-9E02-57CE792FEC93}"
77
ProjectSection(SolutionItems) = preProject
88
README.md = README.md
9-
.github\workflows\ci-cd.yml = .github\workflows\ci-cd.yml
9+
.github\workflows\domain-abstractions.yml = .github\workflows\domain-abstractions.yml
10+
.github\workflows\domain-default.yml = .github\workflows\domain-default.yml
11+
.github\workflows\domain-extensions.yml = .github\workflows\domain-extensions.yml
12+
.github\workflows\intervals-net.yml = .github\workflows\intervals-net.yml
1013
EndProjectSection
1114
EndProject
1215
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{EAF02F30-A5E4-4237-B402-6F946F2B2C09}"
@@ -16,9 +19,6 @@ EndProject
1619
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Intervals.NET.Tests", "tests\Intervals.NET.Tests\Intervals.NET.Tests.csproj", "{8703AF16-1CD4-40CF-81B4-3579FDF858EF}"
1720
EndProject
1821
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "benchmarks", "benchmarks", "{479FF156-A58F-4508-8EF5-A7A3DCD4C643}"
19-
ProjectSection(SolutionItems) = preProject
20-
benchmarks\BENCHMARK-ANALYSIS.md = benchmarks\BENCHMARK-ANALYSIS.md
21-
EndProjectSection
2222
EndProject
2323
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Intervals.NET.Benchmarks", "benchmarks\Intervals.NET.Benchmarks\Intervals.NET.Benchmarks.csproj", "{C3ECBB81-C7E1-4B63-9284-74A48BD14305}"
2424
EndProject
@@ -29,8 +29,32 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Results", "Results", "{F375
2929
benchmarks\Results\Intervals.NET.Benchmarks.ParsingBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.ParsingBenchmarks-report-github.md
3030
benchmarks\Results\Intervals.NET.Benchmarks.RealWorldScenariosBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.RealWorldScenariosBenchmarks-report-github.md
3131
benchmarks\Results\Intervals.NET.Benchmarks.SetOperationsBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.SetOperationsBenchmarks-report-github.md
32+
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.ConstructionBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.ConstructionBenchmarks-report-github.md
33+
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.ContainmentBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.ContainmentBenchmarks-report-github.md
34+
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.CrossGranularityDomainBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.CrossGranularityDomainBenchmarks-report-github.md
35+
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.DomainHotPathScenariosBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.DomainHotPathScenariosBenchmarks-report-github.md
36+
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.DomainOperationsBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.DomainOperationsBenchmarks-report-github.md
37+
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.FixedStepExtensionsBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.FixedStepExtensionsBenchmarks-report-github.md
38+
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.ParsingBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.ParsingBenchmarks-report-github.md
39+
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.RealWorldScenariosBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.RealWorldScenariosBenchmarks-report-github.md
40+
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.SetOperationsBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.SetOperationsBenchmarks-report-github.md
41+
benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.VariableStepDomainBenchmarks-report-github.md = benchmarks\Results\Intervals.NET.Benchmarks.Benchmarks.VariableStepDomainBenchmarks-report-github.md
3242
EndProjectSection
3343
EndProject
44+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Intervals.NET.Domain.Abstractions", "src\Domain\Intervals.NET.Domain.Abstractions\Intervals.NET.Domain.Abstractions.csproj", "{EE258066-15D2-413B-B2F5-9122A0FA2387}"
45+
EndProject
46+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Domain", "Domain", "{BE05E07A-0EF1-4AAA-A12E-88A89AE715A4}"
47+
EndProject
48+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Intervals.NET.Domain.Extensions", "src\Domain\Intervals.NET.Domain.Extensions\Intervals.NET.Domain.Extensions.csproj", "{AA13C99C-EDBD-4933-A1AC-D896772B6F18}"
49+
EndProject
50+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Intervals.NET.Domain.Default", "src\Domain\Intervals.NET.Domain.Default\Intervals.NET.Domain.Default.csproj", "{23F763C3-E80F-4CDB-A56B-EE2A9E84BCFE}"
51+
EndProject
52+
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Domain", "Domain", "{592DCBFE-8570-44E3-B9DD-351AA775BFC8}"
53+
EndProject
54+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Intervals.NET.Domain.Default.Tests", "tests\Intervals.NET.Domain.Default.Tests\Intervals.NET.Domain.Default.Tests.csproj", "{EAC4D033-A7D7-4242-8661-3F231257B4FE}"
55+
EndProject
56+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Intervals.NET.Domain.Extensions.Tests", "tests\Intervals.NET.Domain.Extensions.Tests\Intervals.NET.Domain.Extensions.Tests.csproj", "{9F5470DF-88E2-44DC-B6D0-176EBFAF5A25}"
57+
EndProject
3458
Global
3559
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3660
Debug|Any CPU = Debug|Any CPU
@@ -49,11 +73,38 @@ Global
4973
{C3ECBB81-C7E1-4B63-9284-74A48BD14305}.Debug|Any CPU.Build.0 = Debug|Any CPU
5074
{C3ECBB81-C7E1-4B63-9284-74A48BD14305}.Release|Any CPU.ActiveCfg = Release|Any CPU
5175
{C3ECBB81-C7E1-4B63-9284-74A48BD14305}.Release|Any CPU.Build.0 = Release|Any CPU
76+
{EE258066-15D2-413B-B2F5-9122A0FA2387}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
77+
{EE258066-15D2-413B-B2F5-9122A0FA2387}.Debug|Any CPU.Build.0 = Debug|Any CPU
78+
{EE258066-15D2-413B-B2F5-9122A0FA2387}.Release|Any CPU.ActiveCfg = Release|Any CPU
79+
{EE258066-15D2-413B-B2F5-9122A0FA2387}.Release|Any CPU.Build.0 = Release|Any CPU
80+
{AA13C99C-EDBD-4933-A1AC-D896772B6F18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
81+
{AA13C99C-EDBD-4933-A1AC-D896772B6F18}.Debug|Any CPU.Build.0 = Debug|Any CPU
82+
{AA13C99C-EDBD-4933-A1AC-D896772B6F18}.Release|Any CPU.ActiveCfg = Release|Any CPU
83+
{AA13C99C-EDBD-4933-A1AC-D896772B6F18}.Release|Any CPU.Build.0 = Release|Any CPU
84+
{23F763C3-E80F-4CDB-A56B-EE2A9E84BCFE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
85+
{23F763C3-E80F-4CDB-A56B-EE2A9E84BCFE}.Debug|Any CPU.Build.0 = Debug|Any CPU
86+
{23F763C3-E80F-4CDB-A56B-EE2A9E84BCFE}.Release|Any CPU.ActiveCfg = Release|Any CPU
87+
{23F763C3-E80F-4CDB-A56B-EE2A9E84BCFE}.Release|Any CPU.Build.0 = Release|Any CPU
88+
{EAC4D033-A7D7-4242-8661-3F231257B4FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
89+
{EAC4D033-A7D7-4242-8661-3F231257B4FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
90+
{EAC4D033-A7D7-4242-8661-3F231257B4FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
91+
{EAC4D033-A7D7-4242-8661-3F231257B4FE}.Release|Any CPU.Build.0 = Release|Any CPU
92+
{9F5470DF-88E2-44DC-B6D0-176EBFAF5A25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
93+
{9F5470DF-88E2-44DC-B6D0-176EBFAF5A25}.Debug|Any CPU.Build.0 = Debug|Any CPU
94+
{9F5470DF-88E2-44DC-B6D0-176EBFAF5A25}.Release|Any CPU.ActiveCfg = Release|Any CPU
95+
{9F5470DF-88E2-44DC-B6D0-176EBFAF5A25}.Release|Any CPU.Build.0 = Release|Any CPU
5296
EndGlobalSection
5397
GlobalSection(NestedProjects) = preSolution
5498
{A2F7DF66-08BE-438A-A354-C09499B8B8B7} = {EAF02F30-A5E4-4237-B402-6F946F2B2C09}
5599
{8703AF16-1CD4-40CF-81B4-3579FDF858EF} = {28A5727D-3EDB-4F19-8B68-1DBD790EB8E2}
56100
{C3ECBB81-C7E1-4B63-9284-74A48BD14305} = {479FF156-A58F-4508-8EF5-A7A3DCD4C643}
57101
{F3754280-1B2F-4C7C-9BD0-E54001301567} = {479FF156-A58F-4508-8EF5-A7A3DCD4C643}
102+
{BE05E07A-0EF1-4AAA-A12E-88A89AE715A4} = {EAF02F30-A5E4-4237-B402-6F946F2B2C09}
103+
{EE258066-15D2-413B-B2F5-9122A0FA2387} = {BE05E07A-0EF1-4AAA-A12E-88A89AE715A4}
104+
{AA13C99C-EDBD-4933-A1AC-D896772B6F18} = {BE05E07A-0EF1-4AAA-A12E-88A89AE715A4}
105+
{23F763C3-E80F-4CDB-A56B-EE2A9E84BCFE} = {BE05E07A-0EF1-4AAA-A12E-88A89AE715A4}
106+
{592DCBFE-8570-44E3-B9DD-351AA775BFC8} = {28A5727D-3EDB-4F19-8B68-1DBD790EB8E2}
107+
{EAC4D033-A7D7-4242-8661-3F231257B4FE} = {592DCBFE-8570-44E3-B9DD-351AA775BFC8}
108+
{9F5470DF-88E2-44DC-B6D0-176EBFAF5A25} = {592DCBFE-8570-44E3-B9DD-351AA775BFC8}
58109
EndGlobalSection
59110
EndGlobal

0 commit comments

Comments
 (0)