hemspect 3.0.0__tar.gz → 3.0.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hemspect-3.0.0 → hemspect-3.0.2}/PKG-INFO +26 -33
- {hemspect-3.0.0 → hemspect-3.0.2}/README.md +25 -32
- {hemspect-3.0.0 → hemspect-3.0.2}/pyproject.toml +1 -1
- {hemspect-3.0.0 → hemspect-3.0.2}/src/hemspect/cli.py +4 -1
- {hemspect-3.0.0 → hemspect-3.0.2}/src/hemspect/scanners/report_generator.py +14 -2
- {hemspect-3.0.0 → hemspect-3.0.2}/src/hemspect.egg-info/PKG-INFO +26 -33
- {hemspect-3.0.0 → hemspect-3.0.2}/setup.cfg +0 -0
- {hemspect-3.0.0 → hemspect-3.0.2}/src/hemspect/__init__.py +0 -0
- {hemspect-3.0.0 → hemspect-3.0.2}/src/hemspect/config/__init__.py +0 -0
- {hemspect-3.0.0 → hemspect-3.0.2}/src/hemspect/config/allowlist.yaml +0 -0
- {hemspect-3.0.0 → hemspect-3.0.2}/src/hemspect/config/compliance_mapping.yaml +0 -0
- {hemspect-3.0.0 → hemspect-3.0.2}/src/hemspect/config/rules.yaml +0 -0
- {hemspect-3.0.0 → hemspect-3.0.2}/src/hemspect/scanners/__init__.py +0 -0
- {hemspect-3.0.0 → hemspect-3.0.2}/src/hemspect/scanners/approval_workflow.py +0 -0
- {hemspect-3.0.0 → hemspect-3.0.2}/src/hemspect/scanners/sbom_generator.py +0 -0
- {hemspect-3.0.0 → hemspect-3.0.2}/src/hemspect/scanners/scan_psadt.py +0 -0
- {hemspect-3.0.0 → hemspect-3.0.2}/src/hemspect.egg-info/SOURCES.txt +0 -0
- {hemspect-3.0.0 → hemspect-3.0.2}/src/hemspect.egg-info/dependency_links.txt +0 -0
- {hemspect-3.0.0 → hemspect-3.0.2}/src/hemspect.egg-info/entry_points.txt +0 -0
- {hemspect-3.0.0 → hemspect-3.0.2}/src/hemspect.egg-info/requires.txt +0 -0
- {hemspect-3.0.0 → hemspect-3.0.2}/src/hemspect.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hemspect
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.2
|
|
4
4
|
Summary: Enterprise package security scanner for PSADT
|
|
5
5
|
Author: Hemendra Mahajan
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -52,33 +52,25 @@ HemSpect is an enterprise security scanner purpose-built for organizations that
|
|
|
52
52
|
### Installation
|
|
53
53
|
|
|
54
54
|
```powershell
|
|
55
|
-
#
|
|
56
|
-
|
|
57
|
-
cd psadt_secure
|
|
58
|
-
|
|
59
|
-
# Create a virtual environment (recommended)
|
|
60
|
-
python -m venv venv
|
|
61
|
-
.\venv\Scripts\Activate.ps1
|
|
62
|
-
|
|
63
|
-
# Install dependencies
|
|
64
|
-
pip install -r requirements.txt
|
|
55
|
+
# Install the latest version from PyPI
|
|
56
|
+
pip install hemspect
|
|
65
57
|
```
|
|
66
58
|
|
|
67
59
|
### Scan a Single Package
|
|
68
60
|
|
|
69
61
|
```powershell
|
|
70
62
|
# Interactive mode (prompts for report folder name)
|
|
71
|
-
|
|
63
|
+
hemspect scan "C:\Packages\MyApp" --format all
|
|
72
64
|
|
|
73
65
|
# Specify output directory
|
|
74
|
-
|
|
66
|
+
hemspect scan "C:\Packages\MyApp" -o "C:\HemSpect\MyApp" --format all --sign-report
|
|
75
67
|
```
|
|
76
68
|
|
|
77
69
|
### Factory Scan (Batch Mode)
|
|
78
70
|
|
|
79
71
|
```powershell
|
|
80
72
|
# Scan your entire package factory in one shot
|
|
81
|
-
|
|
73
|
+
hemspect factory-scan "\\server\PackageFactory" -o "C:\HemSpect\FactoryReport"
|
|
82
74
|
```
|
|
83
75
|
|
|
84
76
|
---
|
|
@@ -88,7 +80,7 @@ python main.py factory-scan "\\server\PackageFactory" -o "C:\HemSpect\FactoryRep
|
|
|
88
80
|
### `scan` — Scan a Single Package
|
|
89
81
|
|
|
90
82
|
```
|
|
91
|
-
|
|
83
|
+
hemspect scan <PACKAGE_PATH> [OPTIONS]
|
|
92
84
|
```
|
|
93
85
|
|
|
94
86
|
| Option | Description | Default |
|
|
@@ -108,7 +100,7 @@ python main.py scan <PACKAGE_PATH> [OPTIONS]
|
|
|
108
100
|
### `factory-scan` — Batch Scan Entire Package Factory
|
|
109
101
|
|
|
110
102
|
```
|
|
111
|
-
|
|
103
|
+
hemspect factory-scan <FACTORY_PATH> [OPTIONS]
|
|
112
104
|
```
|
|
113
105
|
|
|
114
106
|
| Option | Description | Default |
|
|
@@ -126,17 +118,17 @@ python main.py factory-scan <FACTORY_PATH> [OPTIONS]
|
|
|
126
118
|
### `verify` — Verify Signed Manifest
|
|
127
119
|
|
|
128
120
|
```powershell
|
|
129
|
-
|
|
121
|
+
hemspect verify "C:\HemSpect\MyApp"
|
|
130
122
|
```
|
|
131
123
|
|
|
132
124
|
### `workflow` — Manage Approval Workflow
|
|
133
125
|
|
|
134
126
|
```powershell
|
|
135
127
|
# Analyst review
|
|
136
|
-
|
|
128
|
+
hemspect workflow analyst-review "C:\HemSpect\MyApp" "Jane.Smith" --approve --notes "All FPs validated"
|
|
137
129
|
|
|
138
130
|
# CISO approval
|
|
139
|
-
|
|
131
|
+
hemspect workflow ciso-approve "C:\HemSpect\MyApp" "CEO.Name" "AUTH-20260601" --approve
|
|
140
132
|
```
|
|
141
133
|
|
|
142
134
|
---
|
|
@@ -221,20 +213,21 @@ Scans file contents for:
|
|
|
221
213
|
|
|
222
214
|
## 📁 Project Structure
|
|
223
215
|
|
|
224
|
-
```
|
|
216
|
+
```text
|
|
225
217
|
hemspect/
|
|
226
|
-
├──
|
|
227
|
-
├──
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
├──
|
|
232
|
-
│
|
|
233
|
-
│
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
218
|
+
├── pyproject.toml # Packaging configuration
|
|
219
|
+
├── README.md # Documentation
|
|
220
|
+
└── src/
|
|
221
|
+
└── hemspect/
|
|
222
|
+
├── cli.py # Global terminal command entry point
|
|
223
|
+
├── config/
|
|
224
|
+
│ ├── rules.yaml # Threat detection patterns
|
|
225
|
+
│ └── allowlist.yaml # Global exceptions
|
|
226
|
+
└── scanners/
|
|
227
|
+
├── scan_psadt.py # Core scanner engine + HemSpect
|
|
228
|
+
├── report_generator.py # Enterprise HTML report generator
|
|
229
|
+
├── sbom_generator.py # CycloneDX + SPDX SBOM generator
|
|
230
|
+
└── approval_workflow.py # 3-stage approval workflow
|
|
238
231
|
```
|
|
239
232
|
|
|
240
233
|
---
|
|
@@ -275,7 +268,7 @@ exceptions:
|
|
|
275
268
|
|
|
276
269
|
```powershell
|
|
277
270
|
# Create a nightly scheduled task
|
|
278
|
-
$action = New-ScheduledTaskAction -Execute "
|
|
271
|
+
$action = New-ScheduledTaskAction -Execute "hemspect" -Argument "factory-scan \\server\PackageFactory -o C:\HemSpect\Nightly"
|
|
279
272
|
$trigger = New-ScheduledTaskTrigger -Daily -At "02:00AM"
|
|
280
273
|
Register-ScheduledTask -TaskName "HemSpect-Nightly" -Action $action -Trigger $trigger
|
|
281
274
|
```
|
|
@@ -38,33 +38,25 @@ HemSpect is an enterprise security scanner purpose-built for organizations that
|
|
|
38
38
|
### Installation
|
|
39
39
|
|
|
40
40
|
```powershell
|
|
41
|
-
#
|
|
42
|
-
|
|
43
|
-
cd psadt_secure
|
|
44
|
-
|
|
45
|
-
# Create a virtual environment (recommended)
|
|
46
|
-
python -m venv venv
|
|
47
|
-
.\venv\Scripts\Activate.ps1
|
|
48
|
-
|
|
49
|
-
# Install dependencies
|
|
50
|
-
pip install -r requirements.txt
|
|
41
|
+
# Install the latest version from PyPI
|
|
42
|
+
pip install hemspect
|
|
51
43
|
```
|
|
52
44
|
|
|
53
45
|
### Scan a Single Package
|
|
54
46
|
|
|
55
47
|
```powershell
|
|
56
48
|
# Interactive mode (prompts for report folder name)
|
|
57
|
-
|
|
49
|
+
hemspect scan "C:\Packages\MyApp" --format all
|
|
58
50
|
|
|
59
51
|
# Specify output directory
|
|
60
|
-
|
|
52
|
+
hemspect scan "C:\Packages\MyApp" -o "C:\HemSpect\MyApp" --format all --sign-report
|
|
61
53
|
```
|
|
62
54
|
|
|
63
55
|
### Factory Scan (Batch Mode)
|
|
64
56
|
|
|
65
57
|
```powershell
|
|
66
58
|
# Scan your entire package factory in one shot
|
|
67
|
-
|
|
59
|
+
hemspect factory-scan "\\server\PackageFactory" -o "C:\HemSpect\FactoryReport"
|
|
68
60
|
```
|
|
69
61
|
|
|
70
62
|
---
|
|
@@ -74,7 +66,7 @@ python main.py factory-scan "\\server\PackageFactory" -o "C:\HemSpect\FactoryRep
|
|
|
74
66
|
### `scan` — Scan a Single Package
|
|
75
67
|
|
|
76
68
|
```
|
|
77
|
-
|
|
69
|
+
hemspect scan <PACKAGE_PATH> [OPTIONS]
|
|
78
70
|
```
|
|
79
71
|
|
|
80
72
|
| Option | Description | Default |
|
|
@@ -94,7 +86,7 @@ python main.py scan <PACKAGE_PATH> [OPTIONS]
|
|
|
94
86
|
### `factory-scan` — Batch Scan Entire Package Factory
|
|
95
87
|
|
|
96
88
|
```
|
|
97
|
-
|
|
89
|
+
hemspect factory-scan <FACTORY_PATH> [OPTIONS]
|
|
98
90
|
```
|
|
99
91
|
|
|
100
92
|
| Option | Description | Default |
|
|
@@ -112,17 +104,17 @@ python main.py factory-scan <FACTORY_PATH> [OPTIONS]
|
|
|
112
104
|
### `verify` — Verify Signed Manifest
|
|
113
105
|
|
|
114
106
|
```powershell
|
|
115
|
-
|
|
107
|
+
hemspect verify "C:\HemSpect\MyApp"
|
|
116
108
|
```
|
|
117
109
|
|
|
118
110
|
### `workflow` — Manage Approval Workflow
|
|
119
111
|
|
|
120
112
|
```powershell
|
|
121
113
|
# Analyst review
|
|
122
|
-
|
|
114
|
+
hemspect workflow analyst-review "C:\HemSpect\MyApp" "Jane.Smith" --approve --notes "All FPs validated"
|
|
123
115
|
|
|
124
116
|
# CISO approval
|
|
125
|
-
|
|
117
|
+
hemspect workflow ciso-approve "C:\HemSpect\MyApp" "CEO.Name" "AUTH-20260601" --approve
|
|
126
118
|
```
|
|
127
119
|
|
|
128
120
|
---
|
|
@@ -207,20 +199,21 @@ Scans file contents for:
|
|
|
207
199
|
|
|
208
200
|
## 📁 Project Structure
|
|
209
201
|
|
|
210
|
-
```
|
|
202
|
+
```text
|
|
211
203
|
hemspect/
|
|
212
|
-
├──
|
|
213
|
-
├──
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
├──
|
|
218
|
-
│
|
|
219
|
-
│
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
204
|
+
├── pyproject.toml # Packaging configuration
|
|
205
|
+
├── README.md # Documentation
|
|
206
|
+
└── src/
|
|
207
|
+
└── hemspect/
|
|
208
|
+
├── cli.py # Global terminal command entry point
|
|
209
|
+
├── config/
|
|
210
|
+
│ ├── rules.yaml # Threat detection patterns
|
|
211
|
+
│ └── allowlist.yaml # Global exceptions
|
|
212
|
+
└── scanners/
|
|
213
|
+
├── scan_psadt.py # Core scanner engine + HemSpect
|
|
214
|
+
├── report_generator.py # Enterprise HTML report generator
|
|
215
|
+
├── sbom_generator.py # CycloneDX + SPDX SBOM generator
|
|
216
|
+
└── approval_workflow.py # 3-stage approval workflow
|
|
224
217
|
```
|
|
225
218
|
|
|
226
219
|
---
|
|
@@ -261,7 +254,7 @@ exceptions:
|
|
|
261
254
|
|
|
262
255
|
```powershell
|
|
263
256
|
# Create a nightly scheduled task
|
|
264
|
-
$action = New-ScheduledTaskAction -Execute "
|
|
257
|
+
$action = New-ScheduledTaskAction -Execute "hemspect" -Argument "factory-scan \\server\PackageFactory -o C:\HemSpect\Nightly"
|
|
265
258
|
$trigger = New-ScheduledTaskTrigger -Daily -At "02:00AM"
|
|
266
259
|
Register-ScheduledTask -TaskName "HemSpect-Nightly" -Action $action -Trigger $trigger
|
|
267
260
|
```
|
|
@@ -101,7 +101,7 @@ def _make_banner() -> str:
|
|
|
101
101
|
"| HEMSPECT v3.0 -- Package Security Scanner |\n"
|
|
102
102
|
"| NIST 800-53 | CMMC 2.0 | IEC 62443 | CIS v8 | MITRE ATT&CK |\n"
|
|
103
103
|
"|------------------------------------------------------------------|\n"
|
|
104
|
-
"|
|
|
104
|
+
"| Designed and developed by Hemendra Mahajan |\n"
|
|
105
105
|
"+==================================================================+\n"
|
|
106
106
|
)
|
|
107
107
|
|
|
@@ -135,6 +135,8 @@ def _make_banner() -> str:
|
|
|
135
135
|
f"{R}"
|
|
136
136
|
)
|
|
137
137
|
|
|
138
|
+
AUTHOR_CREDIT = f" {DIM}{CY3}Designed and developed by {R}{B}{CY1}Hemendra Mahajan{R}"
|
|
139
|
+
|
|
138
140
|
return (
|
|
139
141
|
"\n"
|
|
140
142
|
f"{PTC}\n"
|
|
@@ -142,6 +144,7 @@ def _make_banner() -> str:
|
|
|
142
144
|
+ "\n".join(_art) + "\n"
|
|
143
145
|
"\n"
|
|
144
146
|
f"{PTC}\n"
|
|
147
|
+
f"{AUTHOR_CREDIT}\n\n"
|
|
145
148
|
)
|
|
146
149
|
|
|
147
150
|
|
|
@@ -244,8 +244,8 @@ class ReportGenerator:
|
|
|
244
244
|
NIST SP 800-53 Rev5 | CMMC 2.0 |
|
|
245
245
|
IEC 62443-2-4 | CIS Controls v8
|
|
246
246
|
</div>
|
|
247
|
-
<div
|
|
248
|
-
|
|
247
|
+
<div class="footer-credit">
|
|
248
|
+
Designed and developed by <span class="author-name">Hemendra Mahajan</span>
|
|
249
249
|
</div>
|
|
250
250
|
</footer>
|
|
251
251
|
</main>
|
|
@@ -680,6 +680,18 @@ table.mitre-table {
|
|
|
680
680
|
}
|
|
681
681
|
.footer-compliance { color: var(--accent); font-weight: 600; font-size: 0.72rem; }
|
|
682
682
|
.report-footer code { color: #6dffb9; font-family: monospace; }
|
|
683
|
+
.footer-credit {
|
|
684
|
+
margin-top: 24px; text-align: center; font-size: 0.82rem;
|
|
685
|
+
color: var(--text-muted); padding-top: 16px;
|
|
686
|
+
border-top: 1px solid rgba(255,255,255,0.05);
|
|
687
|
+
letter-spacing: 0.05em; text-transform: uppercase;
|
|
688
|
+
}
|
|
689
|
+
.footer-credit .author-name {
|
|
690
|
+
color: #00ff88; font-weight: 800; letter-spacing: 0.1em;
|
|
691
|
+
text-shadow: 0 0 10px rgba(0, 255, 136, 0.4);
|
|
692
|
+
background: linear-gradient(135deg, #00ff88, #00d4ff);
|
|
693
|
+
-webkit-background-clip: text; -webkit-text-fill-color: transparent;
|
|
694
|
+
}
|
|
683
695
|
|
|
684
696
|
/* ---- Password Intelligence Section ---- */
|
|
685
697
|
.pwd-section-header {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hemspect
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.2
|
|
4
4
|
Summary: Enterprise package security scanner for PSADT
|
|
5
5
|
Author: Hemendra Mahajan
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -52,33 +52,25 @@ HemSpect is an enterprise security scanner purpose-built for organizations that
|
|
|
52
52
|
### Installation
|
|
53
53
|
|
|
54
54
|
```powershell
|
|
55
|
-
#
|
|
56
|
-
|
|
57
|
-
cd psadt_secure
|
|
58
|
-
|
|
59
|
-
# Create a virtual environment (recommended)
|
|
60
|
-
python -m venv venv
|
|
61
|
-
.\venv\Scripts\Activate.ps1
|
|
62
|
-
|
|
63
|
-
# Install dependencies
|
|
64
|
-
pip install -r requirements.txt
|
|
55
|
+
# Install the latest version from PyPI
|
|
56
|
+
pip install hemspect
|
|
65
57
|
```
|
|
66
58
|
|
|
67
59
|
### Scan a Single Package
|
|
68
60
|
|
|
69
61
|
```powershell
|
|
70
62
|
# Interactive mode (prompts for report folder name)
|
|
71
|
-
|
|
63
|
+
hemspect scan "C:\Packages\MyApp" --format all
|
|
72
64
|
|
|
73
65
|
# Specify output directory
|
|
74
|
-
|
|
66
|
+
hemspect scan "C:\Packages\MyApp" -o "C:\HemSpect\MyApp" --format all --sign-report
|
|
75
67
|
```
|
|
76
68
|
|
|
77
69
|
### Factory Scan (Batch Mode)
|
|
78
70
|
|
|
79
71
|
```powershell
|
|
80
72
|
# Scan your entire package factory in one shot
|
|
81
|
-
|
|
73
|
+
hemspect factory-scan "\\server\PackageFactory" -o "C:\HemSpect\FactoryReport"
|
|
82
74
|
```
|
|
83
75
|
|
|
84
76
|
---
|
|
@@ -88,7 +80,7 @@ python main.py factory-scan "\\server\PackageFactory" -o "C:\HemSpect\FactoryRep
|
|
|
88
80
|
### `scan` — Scan a Single Package
|
|
89
81
|
|
|
90
82
|
```
|
|
91
|
-
|
|
83
|
+
hemspect scan <PACKAGE_PATH> [OPTIONS]
|
|
92
84
|
```
|
|
93
85
|
|
|
94
86
|
| Option | Description | Default |
|
|
@@ -108,7 +100,7 @@ python main.py scan <PACKAGE_PATH> [OPTIONS]
|
|
|
108
100
|
### `factory-scan` — Batch Scan Entire Package Factory
|
|
109
101
|
|
|
110
102
|
```
|
|
111
|
-
|
|
103
|
+
hemspect factory-scan <FACTORY_PATH> [OPTIONS]
|
|
112
104
|
```
|
|
113
105
|
|
|
114
106
|
| Option | Description | Default |
|
|
@@ -126,17 +118,17 @@ python main.py factory-scan <FACTORY_PATH> [OPTIONS]
|
|
|
126
118
|
### `verify` — Verify Signed Manifest
|
|
127
119
|
|
|
128
120
|
```powershell
|
|
129
|
-
|
|
121
|
+
hemspect verify "C:\HemSpect\MyApp"
|
|
130
122
|
```
|
|
131
123
|
|
|
132
124
|
### `workflow` — Manage Approval Workflow
|
|
133
125
|
|
|
134
126
|
```powershell
|
|
135
127
|
# Analyst review
|
|
136
|
-
|
|
128
|
+
hemspect workflow analyst-review "C:\HemSpect\MyApp" "Jane.Smith" --approve --notes "All FPs validated"
|
|
137
129
|
|
|
138
130
|
# CISO approval
|
|
139
|
-
|
|
131
|
+
hemspect workflow ciso-approve "C:\HemSpect\MyApp" "CEO.Name" "AUTH-20260601" --approve
|
|
140
132
|
```
|
|
141
133
|
|
|
142
134
|
---
|
|
@@ -221,20 +213,21 @@ Scans file contents for:
|
|
|
221
213
|
|
|
222
214
|
## 📁 Project Structure
|
|
223
215
|
|
|
224
|
-
```
|
|
216
|
+
```text
|
|
225
217
|
hemspect/
|
|
226
|
-
├──
|
|
227
|
-
├──
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
├──
|
|
232
|
-
│
|
|
233
|
-
│
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
218
|
+
├── pyproject.toml # Packaging configuration
|
|
219
|
+
├── README.md # Documentation
|
|
220
|
+
└── src/
|
|
221
|
+
└── hemspect/
|
|
222
|
+
├── cli.py # Global terminal command entry point
|
|
223
|
+
├── config/
|
|
224
|
+
│ ├── rules.yaml # Threat detection patterns
|
|
225
|
+
│ └── allowlist.yaml # Global exceptions
|
|
226
|
+
└── scanners/
|
|
227
|
+
├── scan_psadt.py # Core scanner engine + HemSpect
|
|
228
|
+
├── report_generator.py # Enterprise HTML report generator
|
|
229
|
+
├── sbom_generator.py # CycloneDX + SPDX SBOM generator
|
|
230
|
+
└── approval_workflow.py # 3-stage approval workflow
|
|
238
231
|
```
|
|
239
232
|
|
|
240
233
|
---
|
|
@@ -275,7 +268,7 @@ exceptions:
|
|
|
275
268
|
|
|
276
269
|
```powershell
|
|
277
270
|
# Create a nightly scheduled task
|
|
278
|
-
$action = New-ScheduledTaskAction -Execute "
|
|
271
|
+
$action = New-ScheduledTaskAction -Execute "hemspect" -Argument "factory-scan \\server\PackageFactory -o C:\HemSpect\Nightly"
|
|
279
272
|
$trigger = New-ScheduledTaskTrigger -Daily -At "02:00AM"
|
|
280
273
|
Register-ScheduledTask -TaskName "HemSpect-Nightly" -Action $action -Trigger $trigger
|
|
281
274
|
```
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|