mcp-pacemaker 1.3.1
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.
- package/CHANGELOG.md +424 -0
- package/CONTRIBUTING.md +156 -0
- package/LICENSE +21 -0
- package/README.md +620 -0
- package/SECURITY.md +110 -0
- package/THIRD_PARTY_NOTICES.txt +366 -0
- package/autostart/windows/launcher.vbs +11 -0
- package/autostart/windows/register-task.ps1 +63 -0
- package/bin/cli.mjs +880 -0
- package/bin/config-checks.mjs +62 -0
- package/bin/logs.mjs +465 -0
- package/bin/mcp-bridge.mjs +2113 -0
- package/bin/pooling-config.mjs +553 -0
- package/bin/pooling-execution.mjs +91 -0
- package/bin/pooling-writer.mjs +169 -0
- package/bin/prewarm.mjs +152 -0
- package/bin/server-metrics.mjs +69 -0
- package/bin/service-control.mjs +124 -0
- package/bin/shared-sessions.mjs +1083 -0
- package/bin/top.mjs +115 -0
- package/bin/update-check.mjs +153 -0
- package/bin/windows/PoolingSecurityHelper.build.json +39 -0
- package/bin/windows/PoolingSecurityHelper.exe +0 -0
- package/bin/windows/src/AssemblyInfo.cs +11 -0
- package/bin/windows/src/PoolingSecurityHelper.cs +165 -0
- package/bin/windows/src/PoolingSecurityReader.cs +50 -0
- package/docs/shared-sessions.md +181 -0
- package/examples/servers.example.json +31 -0
- package/package.json +77 -0
- package/supervisor/bridge-child.mjs +14 -0
- package/supervisor/supervise.mjs +172 -0
- package/supervisor/supervise.ps1 +23 -0
- package/supervisor/supervise.sh +11 -0
- package/tools/windows-security-helper/README.md +95 -0
- package/tools/windows-security-helper/build.ps1 +262 -0
- package/ui/dist/THIRD_PARTY_NOTICES.txt +366 -0
- package/ui/dist/assets/index-CIy7uxfd.css +1 -0
- package/ui/dist/assets/index-CtaaQsB9.js +8 -0
- package/ui/dist/index.html +14 -0
- package/ui/dist/third-party-manifest.json +579 -0
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
<#
|
|
2
|
+
.SYNOPSIS
|
|
3
|
+
Builds or verifies the packaged Windows security helper.
|
|
4
|
+
.DESCRIPTION
|
|
5
|
+
Uses installed Visual Studio Roslyn and .NET Framework 4.6.2 reference assemblies.
|
|
6
|
+
Builds twice in temporary directories and requires identical bytes. No tools are downloaded.
|
|
7
|
+
.PARAMETER Verify
|
|
8
|
+
Checks source, build script, toolchain, references, and rebuilt bytes against packaged metadata.
|
|
9
|
+
Does not replace packaged files.
|
|
10
|
+
.PARAMETER CompilerPath
|
|
11
|
+
Optional installed Roslyn csc.exe path. Otherwise discovers the newest Visual Studio with MSBuild.
|
|
12
|
+
.PARAMETER ReferenceAssemblyPath
|
|
13
|
+
Optional directory containing the .NET Framework 4.6.2 reference assemblies.
|
|
14
|
+
.OUTPUTS
|
|
15
|
+
Build or verification status and the executable SHA256.
|
|
16
|
+
.EXAMPLE
|
|
17
|
+
.\tools\windows-security-helper\build.ps1
|
|
18
|
+
.EXAMPLE
|
|
19
|
+
.\tools\windows-security-helper\build.ps1 -Verify
|
|
20
|
+
#>
|
|
21
|
+
[CmdletBinding()]
|
|
22
|
+
param(
|
|
23
|
+
[switch]$Verify,
|
|
24
|
+
[string]$CompilerPath,
|
|
25
|
+
[string]$ReferenceAssemblyPath
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
Set-StrictMode -Version Latest
|
|
29
|
+
$ErrorActionPreference = 'Stop'
|
|
30
|
+
|
|
31
|
+
function Get-SourceHash {
|
|
32
|
+
param([Parameter(Mandatory)][string]$Path)
|
|
33
|
+
|
|
34
|
+
$text = [System.IO.File]::ReadAllText($Path).Replace("`r`n", "`n")
|
|
35
|
+
$hash = [System.Security.Cryptography.SHA256]::Create()
|
|
36
|
+
try {
|
|
37
|
+
$bytes = [System.Text.Encoding]::UTF8.GetBytes($text)
|
|
38
|
+
return [System.BitConverter]::ToString($hash.ComputeHash($bytes)).Replace('-', '').ToLowerInvariant()
|
|
39
|
+
}
|
|
40
|
+
finally {
|
|
41
|
+
$hash.Dispose()
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function Get-BinaryHash {
|
|
46
|
+
param([Parameter(Mandatory)][string]$Path)
|
|
47
|
+
|
|
48
|
+
$hash = [System.Security.Cryptography.SHA256]::Create()
|
|
49
|
+
$stream = $null
|
|
50
|
+
try {
|
|
51
|
+
$stream = [System.IO.File]::OpenRead($Path)
|
|
52
|
+
return [System.BitConverter]::ToString($hash.ComputeHash($stream)).Replace('-', '').ToLowerInvariant()
|
|
53
|
+
}
|
|
54
|
+
finally {
|
|
55
|
+
if ($stream) {
|
|
56
|
+
$stream.Dispose()
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
$hash.Dispose()
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if ($env:OS -ne 'Windows_NT') {
|
|
64
|
+
throw 'Build on Windows with installed Visual Studio Roslyn and the .NET Framework 4.6.2 targeting pack.'
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
$root = [System.IO.Path]::GetFullPath((Join-Path $PSScriptRoot '..\..'))
|
|
68
|
+
$binaryDirectory = Join-Path $root 'bin\windows'
|
|
69
|
+
$sourceDirectory = Join-Path $binaryDirectory 'src'
|
|
70
|
+
$binaryName = 'PoolingSecurityHelper.exe'
|
|
71
|
+
$binaryPath = Join-Path $binaryDirectory $binaryName
|
|
72
|
+
$metadataPath = Join-Path $binaryDirectory 'PoolingSecurityHelper.build.json'
|
|
73
|
+
$sourceNames = @('AssemblyInfo.cs', 'PoolingSecurityReader.cs', 'PoolingSecurityHelper.cs')
|
|
74
|
+
$referenceNames = @('mscorlib.dll', 'System.dll')
|
|
75
|
+
|
|
76
|
+
if (-not $CompilerPath) {
|
|
77
|
+
$vswhere = Join-Path ${env:ProgramFiles(x86)} 'Microsoft Visual Studio\Installer\vswhere.exe'
|
|
78
|
+
if (Test-Path -LiteralPath $vswhere) {
|
|
79
|
+
$installation = & $vswhere -latest -products '*' -requires Microsoft.Component.MSBuild -property installationPath
|
|
80
|
+
if ($LASTEXITCODE -ne 0) {
|
|
81
|
+
throw 'vswhere failed. Specify -CompilerPath with an installed Visual Studio Roslyn csc.exe.'
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if ($installation) {
|
|
85
|
+
$CompilerPath = Join-Path $installation 'MSBuild\Current\Bin\Roslyn\csc.exe'
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (-not $CompilerPath) {
|
|
90
|
+
$CompilerPath = Join-Path $env:ProgramFiles 'Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\Roslyn\csc.exe'
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
if (-not (Test-Path -LiteralPath $CompilerPath -PathType Leaf)) {
|
|
95
|
+
throw 'Roslyn csc.exe was not found. Install Visual Studio/Build Tools with MSBuild, or specify -CompilerPath. The Windows Framework csc.exe is too old.'
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
$CompilerPath = (Resolve-Path -LiteralPath $CompilerPath).Path
|
|
99
|
+
$compilerVersion = (& $CompilerPath /version | Out-String).Trim()
|
|
100
|
+
if ($LASTEXITCODE -ne 0) {
|
|
101
|
+
throw 'Roslyn csc.exe /version failed.'
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
$compilerHelp = @(& $CompilerPath /help)
|
|
105
|
+
$hasDeterministic = @($compilerHelp | Where-Object { $_.Trim().StartsWith('-deterministic ') }).Length -gt 0
|
|
106
|
+
$hasPathMap = @($compilerHelp | Where-Object { $_.Trim().StartsWith('-pathmap:') }).Length -gt 0
|
|
107
|
+
if ($LASTEXITCODE -ne 0 -or
|
|
108
|
+
-not $hasDeterministic -or
|
|
109
|
+
-not $hasPathMap) {
|
|
110
|
+
throw 'The installed compiler must support /deterministic and /pathmap.'
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (-not $ReferenceAssemblyPath) {
|
|
114
|
+
$ReferenceAssemblyPath = Join-Path ${env:ProgramFiles(x86)} 'Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2'
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
foreach ($name in $referenceNames) {
|
|
118
|
+
if (-not (Test-Path -LiteralPath (Join-Path $ReferenceAssemblyPath $name) -PathType Leaf)) {
|
|
119
|
+
throw "Missing .NET Framework 4.6.2 reference assembly: $name. Install its targeting pack, or specify -ReferenceAssemblyPath."
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
$ReferenceAssemblyPath = (Resolve-Path -LiteralPath $ReferenceAssemblyPath).Path
|
|
124
|
+
$frameworkListPath = Join-Path $ReferenceAssemblyPath 'RedistList\FrameworkList.xml'
|
|
125
|
+
if (-not (Test-Path -LiteralPath $frameworkListPath -PathType Leaf)) {
|
|
126
|
+
throw 'The reference directory must contain the .NET Framework 4.6.2 targeting pack, including RedistList\FrameworkList.xml.'
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
$frameworkList = [xml](Get-Content -LiteralPath $frameworkListPath -Raw)
|
|
130
|
+
if ($frameworkList.FileList.Name -cne '.NET Framework 4.6.2') {
|
|
131
|
+
throw 'The reference directory is not the .NET Framework 4.6.2 targeting pack.'
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
$compilerArguments = @(
|
|
135
|
+
'/nologo',
|
|
136
|
+
'/noconfig',
|
|
137
|
+
'/nostdlib+',
|
|
138
|
+
'/target:exe',
|
|
139
|
+
'/platform:anycpu',
|
|
140
|
+
'/langversion:7.3',
|
|
141
|
+
'/optimize+',
|
|
142
|
+
'/debug-',
|
|
143
|
+
'/deterministic+',
|
|
144
|
+
'/checked-',
|
|
145
|
+
'/unsafe-',
|
|
146
|
+
'/warn:4',
|
|
147
|
+
'/warnaserror+',
|
|
148
|
+
'/utf8output'
|
|
149
|
+
)
|
|
150
|
+
$sourceHashes = [ordered]@{}
|
|
151
|
+
foreach ($name in $sourceNames) {
|
|
152
|
+
$sourceHashes[$name] = Get-SourceHash -Path (Join-Path $sourceDirectory $name)
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
$referenceHashes = [ordered]@{}
|
|
156
|
+
foreach ($name in $referenceNames) {
|
|
157
|
+
$referenceHashes[$name] = Get-BinaryHash -Path (Join-Path $ReferenceAssemblyPath $name)
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
$inputs = [ordered]@{
|
|
161
|
+
targetFramework = '.NETFramework,Version=v4.6.2'
|
|
162
|
+
platform = 'AnyCPU'
|
|
163
|
+
compilerVersion = $compilerVersion
|
|
164
|
+
compilerSha256 = Get-BinaryHash -Path $CompilerPath
|
|
165
|
+
compilerArguments = $compilerArguments
|
|
166
|
+
pathMap = '/_/mcp-pacemaker/windows-security-helper'
|
|
167
|
+
sourceEncoding = 'UTF-8 without BOM, LF line endings'
|
|
168
|
+
sourceSha256 = $sourceHashes
|
|
169
|
+
buildScriptSha256 = Get-SourceHash -Path $PSCommandPath
|
|
170
|
+
referenceSha256 = $referenceHashes
|
|
171
|
+
}
|
|
172
|
+
$inputsJson = $inputs | ConvertTo-Json -Depth 5 -Compress
|
|
173
|
+
$expectedMetadata = $null
|
|
174
|
+
if ($Verify) {
|
|
175
|
+
if (-not (Test-Path -LiteralPath $metadataPath -PathType Leaf)) {
|
|
176
|
+
throw 'Packaged helper metadata is missing. Build and review the helper before verification.'
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
$expectedMetadata = Get-Content -LiteralPath $metadataPath -Raw | ConvertFrom-Json
|
|
180
|
+
if ($expectedMetadata.schemaVersion -ne 1 -or
|
|
181
|
+
$expectedMetadata.binary -cne $binaryName) {
|
|
182
|
+
throw 'The packaged helper metadata schema or executable name is invalid.'
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
$expectedInputsJson = $expectedMetadata.inputs | ConvertTo-Json -Depth 5 -Compress
|
|
186
|
+
if ($inputsJson -cne $expectedInputsJson) {
|
|
187
|
+
throw "Source/build inputs differ from metadata. Expected Roslyn $($expectedMetadata.inputs.compilerVersion) and the recorded compiler/reference hashes. Current Roslyn: $compilerVersion. Use the recorded toolchain, or explicitly rebuild and review changed assets."
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
if ((Get-BinaryHash -Path $binaryPath) -cne $expectedMetadata.binarySha256) {
|
|
191
|
+
throw 'The packaged helper SHA256 does not match its metadata.'
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
$temporaryRoot = Join-Path ([System.IO.Path]::GetTempPath()) ('mcp-security-build-' + [Guid]::NewGuid().ToString('N'))
|
|
196
|
+
$createdFiles = [System.Collections.Generic.List[string]]::new()
|
|
197
|
+
$createdDirectories = [System.Collections.Generic.List[string]]::new()
|
|
198
|
+
$outputs = [System.Collections.Generic.List[string]]::new()
|
|
199
|
+
try {
|
|
200
|
+
[System.IO.Directory]::CreateDirectory($temporaryRoot) | Out-Null
|
|
201
|
+
$createdDirectories.Add($temporaryRoot)
|
|
202
|
+
foreach ($pass in @('first', 'second')) {
|
|
203
|
+
$passDirectory = Join-Path $temporaryRoot $pass
|
|
204
|
+
[System.IO.Directory]::CreateDirectory($passDirectory) | Out-Null
|
|
205
|
+
$createdDirectories.Add($passDirectory)
|
|
206
|
+
$sourcePaths = foreach ($name in $sourceNames) {
|
|
207
|
+
$sourcePath = Join-Path $passDirectory $name
|
|
208
|
+
$text = [System.IO.File]::ReadAllText((Join-Path $sourceDirectory $name)).Replace("`r`n", "`n")
|
|
209
|
+
$createdFiles.Add($sourcePath)
|
|
210
|
+
[System.IO.File]::WriteAllText($sourcePath, $text, [System.Text.UTF8Encoding]::new($false))
|
|
211
|
+
$sourcePath
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
$output = Join-Path $passDirectory $binaryName
|
|
215
|
+
$createdFiles.Add($output)
|
|
216
|
+
$arguments = $compilerArguments + @("/out:$output", "/pathmap:$passDirectory=$($inputs.pathMap)")
|
|
217
|
+
foreach ($name in $referenceNames) {
|
|
218
|
+
$arguments += '/reference:' + (Join-Path $ReferenceAssemblyPath $name)
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
& $CompilerPath @arguments @sourcePaths
|
|
222
|
+
if ($LASTEXITCODE -ne 0) {
|
|
223
|
+
throw "Windows security helper compilation failed on pass $pass."
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
$outputs.Add($output)
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
$binaryHash = Get-BinaryHash -Path $outputs[0]
|
|
230
|
+
if ($binaryHash -cne (Get-BinaryHash -Path $outputs[1])) {
|
|
231
|
+
throw 'Two builds produced different bytes. No packaged files were updated.'
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
if ($Verify) {
|
|
235
|
+
if ($binaryHash -cne $expectedMetadata.binarySha256) {
|
|
236
|
+
throw 'The deterministic rebuild does not match the packaged helper. No packaged files were updated.'
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
Write-Output "Verified source, toolchain and byte-for-byte rebuild: SHA256 $binaryHash"
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
$metadata = [ordered]@{
|
|
243
|
+
schemaVersion = 1
|
|
244
|
+
binary = $binaryName
|
|
245
|
+
binarySha256 = $binaryHash
|
|
246
|
+
inputs = $inputs
|
|
247
|
+
}
|
|
248
|
+
$metadataJson = ($metadata | ConvertTo-Json -Depth 6).Replace("`r`n", "`n") + "`n"
|
|
249
|
+
[System.IO.File]::Copy($outputs[0], $binaryPath, $true)
|
|
250
|
+
[System.IO.File]::WriteAllText($metadataPath, $metadataJson, [System.Text.UTF8Encoding]::new($false))
|
|
251
|
+
Write-Output "Built two matching executables with Roslyn ${compilerVersion}: SHA256 $binaryHash"
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
finally {
|
|
255
|
+
foreach ($path in $createdFiles) {
|
|
256
|
+
Remove-Item -LiteralPath $path -Force -ErrorAction SilentlyContinue
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
for ($index = $createdDirectories.Count - 1; $index -ge 0; $index--) {
|
|
260
|
+
[System.IO.Directory]::Delete($createdDirectories[$index])
|
|
261
|
+
}
|
|
262
|
+
}
|
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
MCP Pacemaker - third-party notices
|
|
2
|
+
|
|
3
|
+
Dashboard entries come from retained Rollup modules and observed generated CSS.
|
|
4
|
+
Runtime supplements bind upstream license text to reviewed installed producer versions.
|
|
5
|
+
ui/dist/third-party-manifest.json records module and artifact hashes.
|
|
6
|
+
The project itself remains under its separate MIT LICENSE.
|
|
7
|
+
This inventory is technical attribution evidence, not a legal compliance certification.
|
|
8
|
+
|
|
9
|
+
CLI dependencies are installed separately by npm, not copied into this UI bundle.
|
|
10
|
+
Attribution supplied by those packages remains in their installed package directories.
|
|
11
|
+
This UI inventory does not audit every separately resolved CLI dependency.
|
|
12
|
+
Those dependencies are not represented as bundled UI code in this notice.
|
|
13
|
+
|
|
14
|
+
Bundled dashboard code
|
|
15
|
+
|
|
16
|
+
==============================================================================
|
|
17
|
+
lucide-react@0.462.0
|
|
18
|
+
Declared license: ISC
|
|
19
|
+
|
|
20
|
+
--- LICENSE ---
|
|
21
|
+
ISC License
|
|
22
|
+
|
|
23
|
+
Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2022.
|
|
24
|
+
|
|
25
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
26
|
+
purpose with or without fee is hereby granted, provided that the above
|
|
27
|
+
copyright notice and this permission notice appear in all copies.
|
|
28
|
+
|
|
29
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
30
|
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
31
|
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
32
|
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
33
|
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
34
|
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
35
|
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
36
|
+
|
|
37
|
+
--- upstream/feather-LICENSE.txt ---
|
|
38
|
+
Source: https://raw.githubusercontent.com/feathericons/feather/1b002399e8758fb2bccea4d07312dc9e0f43dcb8/LICENSE
|
|
39
|
+
Lucide's LICENSE identifies Feather MIT portions. Its bundled terminal icon retains the polyline and line in this upstream revision; this is a license source, not a claim that the Feather npm package is installed.
|
|
40
|
+
|
|
41
|
+
The MIT License (MIT)
|
|
42
|
+
|
|
43
|
+
Copyright (c) 2013-2023 Cole Bemis
|
|
44
|
+
|
|
45
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
46
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
47
|
+
in the Software without restriction, including without limitation the rights
|
|
48
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
49
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
50
|
+
furnished to do so, subject to the following conditions:
|
|
51
|
+
|
|
52
|
+
The above copyright notice and this permission notice shall be included in all
|
|
53
|
+
copies or substantial portions of the Software.
|
|
54
|
+
|
|
55
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
56
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
57
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
58
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
59
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
60
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
61
|
+
SOFTWARE.
|
|
62
|
+
|
|
63
|
+
--- Notices retained from contributing source files ---
|
|
64
|
+
/**
|
|
65
|
+
* @license lucide-react v0.462.0 - ISC
|
|
66
|
+
*
|
|
67
|
+
* This source code is licensed under the ISC license.
|
|
68
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
69
|
+
*/
|
|
70
|
+
|
|
71
|
+
==============================================================================
|
|
72
|
+
react@18.3.1
|
|
73
|
+
Declared license: MIT
|
|
74
|
+
|
|
75
|
+
--- LICENSE ---
|
|
76
|
+
MIT License
|
|
77
|
+
|
|
78
|
+
Copyright (c) Facebook, Inc. and its affiliates.
|
|
79
|
+
|
|
80
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
81
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
82
|
+
in the Software without restriction, including without limitation the rights
|
|
83
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
84
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
85
|
+
furnished to do so, subject to the following conditions:
|
|
86
|
+
|
|
87
|
+
The above copyright notice and this permission notice shall be included in all
|
|
88
|
+
copies or substantial portions of the Software.
|
|
89
|
+
|
|
90
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
91
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
92
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
93
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
94
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
95
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
96
|
+
SOFTWARE.
|
|
97
|
+
|
|
98
|
+
--- Notices retained from contributing source files ---
|
|
99
|
+
/**
|
|
100
|
+
* @license React
|
|
101
|
+
* react-jsx-runtime.production.min.js
|
|
102
|
+
*
|
|
103
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
104
|
+
*
|
|
105
|
+
* This source code is licensed under the MIT license found in the
|
|
106
|
+
* LICENSE file in the root directory of this source tree.
|
|
107
|
+
*/
|
|
108
|
+
/**
|
|
109
|
+
* @license React
|
|
110
|
+
* react.production.min.js
|
|
111
|
+
*
|
|
112
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
113
|
+
*
|
|
114
|
+
* This source code is licensed under the MIT license found in the
|
|
115
|
+
* LICENSE file in the root directory of this source tree.
|
|
116
|
+
*/
|
|
117
|
+
|
|
118
|
+
==============================================================================
|
|
119
|
+
react-dom@18.3.1
|
|
120
|
+
Declared license: MIT
|
|
121
|
+
|
|
122
|
+
--- LICENSE ---
|
|
123
|
+
MIT License
|
|
124
|
+
|
|
125
|
+
Copyright (c) Facebook, Inc. and its affiliates.
|
|
126
|
+
|
|
127
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
128
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
129
|
+
in the Software without restriction, including without limitation the rights
|
|
130
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
131
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
132
|
+
furnished to do so, subject to the following conditions:
|
|
133
|
+
|
|
134
|
+
The above copyright notice and this permission notice shall be included in all
|
|
135
|
+
copies or substantial portions of the Software.
|
|
136
|
+
|
|
137
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
138
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
139
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
140
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
141
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
142
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
143
|
+
SOFTWARE.
|
|
144
|
+
|
|
145
|
+
--- Notices retained from contributing source files ---
|
|
146
|
+
/**
|
|
147
|
+
* @license React
|
|
148
|
+
* react-dom.production.min.js
|
|
149
|
+
*
|
|
150
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
151
|
+
*
|
|
152
|
+
* This source code is licensed under the MIT license found in the
|
|
153
|
+
* LICENSE file in the root directory of this source tree.
|
|
154
|
+
*/
|
|
155
|
+
|
|
156
|
+
==============================================================================
|
|
157
|
+
scheduler@0.23.2
|
|
158
|
+
Declared license: MIT
|
|
159
|
+
|
|
160
|
+
--- LICENSE ---
|
|
161
|
+
MIT License
|
|
162
|
+
|
|
163
|
+
Copyright (c) Facebook, Inc. and its affiliates.
|
|
164
|
+
|
|
165
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
166
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
167
|
+
in the Software without restriction, including without limitation the rights
|
|
168
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
169
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
170
|
+
furnished to do so, subject to the following conditions:
|
|
171
|
+
|
|
172
|
+
The above copyright notice and this permission notice shall be included in all
|
|
173
|
+
copies or substantial portions of the Software.
|
|
174
|
+
|
|
175
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
176
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
177
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
178
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
179
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
180
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
181
|
+
SOFTWARE.
|
|
182
|
+
|
|
183
|
+
--- Notices retained from contributing source files ---
|
|
184
|
+
/**
|
|
185
|
+
* @license React
|
|
186
|
+
* scheduler.production.min.js
|
|
187
|
+
*
|
|
188
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
189
|
+
*
|
|
190
|
+
* This source code is licensed under the MIT license found in the
|
|
191
|
+
* LICENSE file in the root directory of this source tree.
|
|
192
|
+
*/
|
|
193
|
+
|
|
194
|
+
==============================================================================
|
|
195
|
+
tailwindcss@3.4.19
|
|
196
|
+
Declared license: MIT
|
|
197
|
+
|
|
198
|
+
--- LICENSE ---
|
|
199
|
+
MIT License
|
|
200
|
+
|
|
201
|
+
Copyright (c) Tailwind Labs, Inc.
|
|
202
|
+
|
|
203
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
204
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
205
|
+
in the Software without restriction, including without limitation the rights
|
|
206
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
207
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
208
|
+
furnished to do so, subject to the following conditions:
|
|
209
|
+
|
|
210
|
+
The above copyright notice and this permission notice shall be included in all
|
|
211
|
+
copies or substantial portions of the Software.
|
|
212
|
+
|
|
213
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
214
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
215
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
216
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
217
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
218
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
219
|
+
SOFTWARE.
|
|
220
|
+
|
|
221
|
+
--- lib/css/LICENSE ---
|
|
222
|
+
MIT License
|
|
223
|
+
|
|
224
|
+
Copyright (c) Nicolas Gallagher
|
|
225
|
+
Copyright (c) Jonathan Neal
|
|
226
|
+
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
|
|
227
|
+
Copyright (c) Adam Wathan
|
|
228
|
+
Copyright (c) Jonathan Reinink
|
|
229
|
+
|
|
230
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
231
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
232
|
+
in the Software without restriction, including without limitation the rights
|
|
233
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
234
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
235
|
+
furnished to do so, subject to the following conditions:
|
|
236
|
+
|
|
237
|
+
The above copyright notice and this permission notice shall be included in all
|
|
238
|
+
copies or substantial portions of the Software.
|
|
239
|
+
|
|
240
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
241
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
242
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
243
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
244
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
245
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
246
|
+
SOFTWARE.
|
|
247
|
+
|
|
248
|
+
==============================================================================
|
|
249
|
+
vite@7.3.6
|
|
250
|
+
Declared license: MIT
|
|
251
|
+
|
|
252
|
+
--- LICENSE.md: # Vite core license ---
|
|
253
|
+
# Vite core license
|
|
254
|
+
Vite is released under the MIT license:
|
|
255
|
+
|
|
256
|
+
MIT License
|
|
257
|
+
|
|
258
|
+
Copyright (c) 2019-present, VoidZero Inc. and Vite contributors
|
|
259
|
+
|
|
260
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
261
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
262
|
+
in the Software without restriction, including without limitation the rights
|
|
263
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
264
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
265
|
+
furnished to do so, subject to the following conditions:
|
|
266
|
+
|
|
267
|
+
The above copyright notice and this permission notice shall be included in all
|
|
268
|
+
copies or substantial portions of the Software.
|
|
269
|
+
|
|
270
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
271
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
272
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
273
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
274
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
275
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
276
|
+
SOFTWARE.
|
|
277
|
+
|
|
278
|
+
--- LICENSE.md: ## @rollup/plugin-alias, @rollup/plugin-commonjs, @rollup/plugin-dynamic-import-vars, @rollup/pluginutils ---
|
|
279
|
+
## @rollup/plugin-alias, @rollup/plugin-commonjs, @rollup/plugin-dynamic-import-vars, @rollup/pluginutils
|
|
280
|
+
License: MIT
|
|
281
|
+
By: Johannes Stein
|
|
282
|
+
Repository: https://github.com/rollup/plugins
|
|
283
|
+
|
|
284
|
+
License: MIT
|
|
285
|
+
By: Rich Harris
|
|
286
|
+
Repository: https://github.com/rollup/plugins
|
|
287
|
+
|
|
288
|
+
License: MIT
|
|
289
|
+
By: LarsDenBakker
|
|
290
|
+
Repository: https://github.com/rollup/plugins
|
|
291
|
+
|
|
292
|
+
License: MIT
|
|
293
|
+
By: Rich Harris
|
|
294
|
+
Repository: https://github.com/rollup/plugins
|
|
295
|
+
|
|
296
|
+
> The MIT License (MIT)
|
|
297
|
+
>
|
|
298
|
+
> Copyright (c) 2019 RollupJS Plugin Contributors (https://github.com/rollup/plugins/graphs/contributors)
|
|
299
|
+
>
|
|
300
|
+
> Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
301
|
+
> of this software and associated documentation files (the "Software"), to deal
|
|
302
|
+
> in the Software without restriction, including without limitation the rights
|
|
303
|
+
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
304
|
+
> copies of the Software, and to permit persons to whom the Software is
|
|
305
|
+
> furnished to do so, subject to the following conditions:
|
|
306
|
+
>
|
|
307
|
+
> The above copyright notice and this permission notice shall be included in
|
|
308
|
+
> all copies or substantial portions of the Software.
|
|
309
|
+
>
|
|
310
|
+
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
311
|
+
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
312
|
+
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
313
|
+
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
314
|
+
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
315
|
+
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
316
|
+
> THE SOFTWARE.
|
|
317
|
+
|
|
318
|
+
---------------------------------------
|
|
319
|
+
|
|
320
|
+
Separately installed runtime supplements (not UI-bundled)
|
|
321
|
+
|
|
322
|
+
==============================================================================
|
|
323
|
+
yoga-layout@3.2.1
|
|
324
|
+
Declared license: MIT
|
|
325
|
+
|
|
326
|
+
--- upstream/yoga-LICENSE.txt ---
|
|
327
|
+
Source: https://raw.githubusercontent.com/facebook/yoga/042f5013152eb81c1552dec945b88f7b95ca350f/LICENSE
|
|
328
|
+
Supplement for the separately npm-installed runtime package, whose published source refers to this upstream LICENSE. This package is not bundled into the dashboard.
|
|
329
|
+
|
|
330
|
+
MIT License
|
|
331
|
+
|
|
332
|
+
Copyright (c) Facebook, Inc. and its affiliates.
|
|
333
|
+
|
|
334
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
335
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
336
|
+
in the Software without restriction, including without limitation the rights
|
|
337
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
338
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
339
|
+
furnished to do so, subject to the following conditions:
|
|
340
|
+
|
|
341
|
+
The above copyright notice and this permission notice shall be included in all
|
|
342
|
+
copies or substantial portions of the Software.
|
|
343
|
+
|
|
344
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
345
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
346
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
347
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
348
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
349
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
350
|
+
SOFTWARE.
|
|
351
|
+
|
|
352
|
+
--- Notices retained from contributing source files ---
|
|
353
|
+
/**
|
|
354
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
355
|
+
*
|
|
356
|
+
* This source code is licensed under the MIT license found in the
|
|
357
|
+
* LICENSE file in the root directory of this source tree.
|
|
358
|
+
*
|
|
359
|
+
* @format
|
|
360
|
+
*/
|
|
361
|
+
/**
|
|
362
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
363
|
+
*
|
|
364
|
+
* This source code is licensed under the MIT license found in the
|
|
365
|
+
* LICENSE file in the root directory of this source tree.
|
|
366
|
+
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.sticky{position:sticky}.top-0{top:0}.z-10{z-index:10}.col-span-full{grid-column:1 / -1}.m-0{margin:0}.mx-auto{margin-left:auto;margin-right:auto}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-auto{margin-left:auto}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.flex{display:flex}.table{display:table}.grid{display:grid}.h-2\.5{height:.625rem}.max-h-52{max-height:13rem}.min-h-screen{min-height:100vh}.w-2\.5{width:.625rem}.w-40{width:10rem}.w-full{width:100%}.min-w-\[260px\]{min-width:260px}.max-w-\[1160px\]{max-width:1160px}.max-w-\[1400px\]{max-width:1400px}.max-w-\[900px\]{max-width:900px}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.grid-cols-\[14px_160px_1fr\]{grid-template-columns:14px 160px 1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-\[18px\]{gap:18px}.overflow-auto{overflow:auto}.overflow-x-auto{overflow-x:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-accent{--tw-border-opacity: 1;border-color:rgb(110 168 254 / var(--tw-border-opacity, 1))}.border-amber{--tw-border-opacity: 1;border-color:rgb(240 180 41 / var(--tw-border-opacity, 1))}.border-amber\/50{border-color:#f0b42980}.border-danger{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity, 1))}.border-danger\/50{border-color:#f8717180}.border-line{--tw-border-opacity: 1;border-color:rgb(42 47 58 / var(--tw-border-opacity, 1))}.border-ok{--tw-border-opacity: 1;border-color:rgb(52 211 153 / var(--tw-border-opacity, 1))}.bg-accent\/10{background-color:#6ea8fe1a}.bg-amber{--tw-bg-opacity: 1;background-color:rgb(240 180 41 / var(--tw-bg-opacity, 1))}.bg-amber\/5{background-color:#f0b4290d}.bg-danger{--tw-bg-opacity: 1;background-color:rgb(248 113 113 / var(--tw-bg-opacity, 1))}.bg-danger\/5{background-color:#f871710d}.bg-ok{--tw-bg-opacity: 1;background-color:rgb(52 211 153 / var(--tw-bg-opacity, 1))}.bg-panel{--tw-bg-opacity: 1;background-color:rgb(23 26 35 / var(--tw-bg-opacity, 1))}.bg-panel2{--tw-bg-opacity: 1;background-color:rgb(30 34 45 / var(--tw-bg-opacity, 1))}.p-16{padding:4rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.pb-3{padding-bottom:.75rem}.text-left{text-align:left}.text-center{text-align:center}.align-top{vertical-align:top}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.leading-relaxed{line-height:1.625}.text-accent{--tw-text-opacity: 1;color:rgb(110 168 254 / var(--tw-text-opacity, 1))}.text-amber{--tw-text-opacity: 1;color:rgb(240 180 41 / var(--tw-text-opacity, 1))}.text-danger{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity, 1))}.text-fg{--tw-text-opacity: 1;color:rgb(230 232 238 / var(--tw-text-opacity, 1))}.text-muted{--tw-text-opacity: 1;color:rgb(154 163 178 / var(--tw-text-opacity, 1))}.text-muted\/40{color:#9aa3b266}.text-muted\/60{color:#9aa3b299}.text-ok{--tw-text-opacity: 1;color:rgb(52 211 153 / var(--tw-text-opacity, 1))}.shadow-\[0_0_6px\]{--tw-shadow: 0 0 6px;--tw-shadow-colored: 0 0 6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-ok{--tw-shadow-color: #34d399;--tw-shadow: var(--tw-shadow-colored)}.outline-none{outline:2px solid transparent;outline-offset:2px}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\[grid-template-columns\:repeat\(auto-fit\,minmax\(320px\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}:root{color-scheme:dark}body{margin:0;background:#0f1117;color:#e6e8ee;font:14px/1.5 ui-sans-serif,system-ui,Segoe UI,Roboto,sans-serif}.hover\:border-accent:hover{--tw-border-opacity: 1;border-color:rgb(110 168 254 / var(--tw-border-opacity, 1))}.hover\:bg-accent\/20:hover{background-color:#6ea8fe33}.hover\:text-fg:hover{--tw-text-opacity: 1;color:rgb(230 232 238 / var(--tw-text-opacity, 1))}.focus\:border-accent:focus{--tw-border-opacity: 1;border-color:rgb(110 168 254 / var(--tw-border-opacity, 1))}.disabled\:cursor-default:disabled{cursor:default}.disabled\:opacity-40:disabled{opacity:.4}
|