Got a model to populate a grouping creator
This commit is contained in:
@@ -38,10 +38,10 @@
|
|||||||
</MudPaper>
|
</MudPaper>
|
||||||
</ActivatorContent>
|
</ActivatorContent>
|
||||||
</MudFileUpload>
|
</MudFileUpload>
|
||||||
@if (_files.Any())
|
@if (Files.Any())
|
||||||
{
|
{
|
||||||
<MudPaper Style="max-height: 150px; overflow-y: auto;" Outlined="true" Class="pa-4">
|
<MudPaper Style="max-height: 150px; overflow-y: auto;" Outlined="true" Class="pa-4">
|
||||||
@foreach (var file in _files)
|
@foreach (var file in Files)
|
||||||
{
|
{
|
||||||
var color = _fileToDiskFileName.Keys.Contains(file) ? Color.Success : Color.Warning;
|
var color = _fileToDiskFileName.Keys.Contains(file) ? Color.Success : Color.Warning;
|
||||||
<MudChip T="string"
|
<MudChip T="string"
|
||||||
@@ -60,20 +60,20 @@
|
|||||||
Open file picker
|
Open file picker
|
||||||
</MudButton>
|
</MudButton>
|
||||||
<MudButton Color="Color.Primary"
|
<MudButton Color="Color.Primary"
|
||||||
Disabled="@(!_files.Any())"
|
Disabled="@(!Files.Any())"
|
||||||
OnClick="@Upload"
|
OnClick="@Upload"
|
||||||
Variant="Variant.Filled">
|
Variant="Variant.Filled">
|
||||||
Upload
|
Upload
|
||||||
</MudButton>
|
</MudButton>
|
||||||
<MudButton Color="Color.Error"
|
<MudButton Color="Color.Error"
|
||||||
Disabled="@(!_files.Any())"
|
Disabled="@(!Files.Any())"
|
||||||
OnClick="@ClearAsync"
|
OnClick="@ClearAsync"
|
||||||
Variant="Variant.Filled">
|
Variant="Variant.Filled">
|
||||||
Clear
|
Clear
|
||||||
</MudButton>
|
</MudButton>
|
||||||
</MudToolBar>
|
</MudToolBar>
|
||||||
|
|
||||||
@if (_files.Count != _fileToDiskFileName.Count)
|
@if (Files.Count != _fileToDiskFileName.Count)
|
||||||
{
|
{
|
||||||
<MudText Color="Color.Error" Align="Align.Right">*Files must be uploaded</MudText>
|
<MudText Color="Color.Error" Align="Align.Right">*Files must be uploaded</MudText>
|
||||||
}
|
}
|
||||||
@@ -89,13 +89,13 @@
|
|||||||
|
|
||||||
private string _dragClass = DefaultDragClass;
|
private string _dragClass = DefaultDragClass;
|
||||||
|
|
||||||
private readonly List<IBrowserFile> _files = new();
|
public readonly List<IBrowserFile> Files = new();
|
||||||
|
|
||||||
private readonly Dictionary<IBrowserFile, string> _fileToDiskFileName = new();
|
private readonly Dictionary<IBrowserFile, string> _fileToDiskFileName = new();
|
||||||
|
|
||||||
private MudFileUpload<IReadOnlyList<IBrowserFile>>? _fileUpload;
|
private MudFileUpload<IReadOnlyList<IBrowserFile>>? _fileUpload;
|
||||||
|
|
||||||
public int SelectedFileCount { get => _files.Count; }
|
public int SelectedFileCount { get => Files.Count; }
|
||||||
|
|
||||||
public bool UploadsComplete { get; set; } = true;
|
public bool UploadsComplete { get; set; } = true;
|
||||||
|
|
||||||
@@ -126,7 +126,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
_fileToDiskFileName.Clear();
|
_fileToDiskFileName.Clear();
|
||||||
_files.Clear();
|
Files.Clear();
|
||||||
await (_fileUpload?.ClearAsync() ?? Task.CompletedTask);
|
await (_fileUpload?.ClearAsync() ?? Task.CompletedTask);
|
||||||
|
|
||||||
ClearDragClass();
|
ClearDragClass();
|
||||||
@@ -141,7 +141,7 @@
|
|||||||
{
|
{
|
||||||
ClearDragClass();
|
ClearDragClass();
|
||||||
var files = e.GetMultipleFiles(maximumFileCount: _options.Value.MaxFileCount);
|
var files = e.GetMultipleFiles(maximumFileCount: _options.Value.MaxFileCount);
|
||||||
_files.AddRange(files);
|
Files.AddRange(files);
|
||||||
|
|
||||||
UploadsComplete = false;
|
UploadsComplete = false;
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
@@ -149,7 +149,7 @@
|
|||||||
|
|
||||||
private async Task Upload()
|
private async Task Upload()
|
||||||
{
|
{
|
||||||
if (!_files.Any())
|
if (!Files.Any())
|
||||||
{
|
{
|
||||||
Snackbar.Add("No files to upload.", Severity.Warning);
|
Snackbar.Add("No files to upload.", Severity.Warning);
|
||||||
return;
|
return;
|
||||||
@@ -158,7 +158,7 @@
|
|||||||
Snackbar.Configuration.PositionClass = Defaults.Classes.Position.TopCenter;
|
Snackbar.Configuration.PositionClass = Defaults.Classes.Position.TopCenter;
|
||||||
|
|
||||||
List<FilePathListing> fileListings = [];
|
List<FilePathListing> fileListings = [];
|
||||||
foreach (var file in _files)
|
foreach (var file in Files)
|
||||||
{
|
{
|
||||||
if (_fileToDiskFileName.ContainsKey(file)) continue;
|
if (_fileToDiskFileName.ContainsKey(file)) continue;
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -83,17 +83,20 @@
|
|||||||
FilesUploaded="OnFilesUploaded"
|
FilesUploaded="OnFilesUploaded"
|
||||||
ClearClicked="OnClearFilesClicked"></UploadDropBox>
|
ClearClicked="OnClearFilesClicked"></UploadDropBox>
|
||||||
</MudPaper>
|
</MudPaper>
|
||||||
@for (int index = 0; index < Model.ArtifactEntries.Count; ++index)
|
@if (Model is not null)
|
||||||
{
|
{
|
||||||
// Capture the current item in a local variable for the lambda
|
@for (int index = 0; index < Model.ArtifactEntries.Count; ++index)
|
||||||
var currentEntry = Model.ArtifactEntries[index];
|
{
|
||||||
|
// Capture the current item in a local variable for the lambda
|
||||||
|
var currentEntry = Model.ArtifactEntries[index];
|
||||||
|
|
||||||
<ArchiveEntryCreatorCard Model="currentEntry"
|
<ArchiveEntryCreatorCard Model="currentEntry"
|
||||||
ModelChanged="(updatedEntry) => HandleEntryUpdate(currentEntry, updatedEntry)"
|
ModelChanged="(updatedEntry) => HandleEntryUpdate(currentEntry, updatedEntry)"
|
||||||
InputsChanged="OnChanged"
|
InputsChanged="OnChanged"
|
||||||
@key="currentEntry"
|
@key="currentEntry"
|
||||||
ArtifactEntryIndex="index"
|
ArtifactEntryIndex="index"
|
||||||
OnEntryDeletedClicked="() => OnDeleteEntryClicked(index)"/>
|
OnEntryDeletedClicked="OnDeleteEntryClicked"/>
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -163,6 +166,18 @@
|
|||||||
|
|
||||||
public List<ValidationResult> ValidationResults { get; private set; } = [];
|
public List<ValidationResult> ValidationResults { get; private set; } = [];
|
||||||
|
|
||||||
|
protected override async Task OnParametersSetAsync()
|
||||||
|
{
|
||||||
|
// Ensure to reload the component if a model has been supplied so that the full
|
||||||
|
// component will render
|
||||||
|
if (Model?.Category is not null)
|
||||||
|
{
|
||||||
|
await OnCategoryChanged();
|
||||||
|
}
|
||||||
|
_isFormDivVisible = true;
|
||||||
|
StateHasChanged();
|
||||||
|
}
|
||||||
|
|
||||||
private async Task PublishClicked(MouseEventArgs args)
|
private async Task PublishClicked(MouseEventArgs args)
|
||||||
{
|
{
|
||||||
var validationContext = new ValidationContext(Model);
|
var validationContext = new ValidationContext(Model);
|
||||||
@@ -199,7 +214,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HandleEntryUpdate(ArtifactEntryValidationModel originalEntry, ArtifactEntryValidationModel updatedEntry)
|
private async Task HandleEntryUpdate(ArtifactEntryValidationModel originalEntry, ArtifactEntryValidationModel updatedEntry)
|
||||||
{
|
{
|
||||||
// Find the index of the original object in our list
|
// Find the index of the original object in our list
|
||||||
var index = Model.ArtifactEntries.IndexOf(originalEntry);
|
var index = Model.ArtifactEntries.IndexOf(originalEntry);
|
||||||
@@ -211,7 +226,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Now, run the validation logic
|
// Now, run the validation logic
|
||||||
OnChanged();
|
await OnChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
// You can now simplify your OnFilesUploaded method slightly
|
// You can now simplify your OnFilesUploaded method slightly
|
||||||
@@ -256,7 +271,7 @@
|
|||||||
|
|
||||||
async Task OnCategoryChanged()
|
async Task OnCategoryChanged()
|
||||||
{
|
{
|
||||||
if (Model.Category is not null)
|
if (Model.Category is not null && _identifierTextBox is not null)
|
||||||
{
|
{
|
||||||
_identifierTextBox.VerifyFormatCategory = Model.Category;
|
_identifierTextBox.VerifyFormatCategory = Model.Category;
|
||||||
_isFormDivVisible = true;
|
_isFormDivVisible = true;
|
||||||
@@ -303,6 +318,7 @@
|
|||||||
private async void OnDeleteEntryClicked(int index)
|
private async void OnDeleteEntryClicked(int index)
|
||||||
{
|
{
|
||||||
Model.ArtifactEntries.RemoveAt(index);
|
Model.ArtifactEntries.RemoveAt(index);
|
||||||
|
_uploadComponent.Files.RemoveAt(index);
|
||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<MudDialog>
|
<MudDialog>
|
||||||
<TitleContent>
|
<TitleContent>
|
||||||
<MudText Typo="Typo.h6">Create a Category</MudText>
|
<MudText Typo="Typo.h6">Edit a Category</MudText>
|
||||||
</TitleContent>
|
</TitleContent>
|
||||||
|
|
||||||
<DialogContent>
|
<DialogContent>
|
||||||
@@ -17,16 +17,19 @@
|
|||||||
[Parameter]
|
[Parameter]
|
||||||
public required ArtifactGroupingValidationModel Model { get; set; }
|
public required ArtifactGroupingValidationModel Model { get; set; }
|
||||||
|
|
||||||
|
[CascadingParameter]
|
||||||
|
IMudDialogInstance MudDialog { get; set; }
|
||||||
|
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public bool IsUpdate { get; set; } = false;
|
public bool IsUpdate { get; set; } = false;
|
||||||
|
|
||||||
|
|
||||||
private void OnCancel(MouseEventArgs args)
|
private void OnCancel(MouseEventArgs args)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
MudDialog.Cancel();
|
||||||
}
|
}
|
||||||
private void OnSubmit(MouseEventArgs args)
|
private void OnSubmit(MouseEventArgs args)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
MudDialog.Close(DialogResult.Ok(Model));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<MudDataGrid
|
<MudDataGrid
|
||||||
T="ArtifactGroupingRowElement"
|
T="ArtifactGroupingRowElement"
|
||||||
MultiSelection=true
|
MultiSelection=true
|
||||||
Items="ArtifactGroupingRows"
|
|
||||||
Filterable=false
|
Filterable=false
|
||||||
SelectOnRowClick=true
|
SelectOnRowClick=true
|
||||||
|
ServerData="new Func<GridState<ArtifactGroupingRowElement>, Task<GridData<ArtifactGroupingRowElement>>>(ServerReload)"
|
||||||
@ref=@DataGrid>
|
@ref=@DataGrid>
|
||||||
|
|
||||||
<ToolBarContent>
|
<ToolBarContent>
|
||||||
@@ -94,9 +94,28 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnRowEditClick(ArtifactGroupingRowElement row)
|
private async Task OnRowEditClick(ArtifactGroupingRowElement row)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
var parameters = new DialogParameters();
|
||||||
|
|
||||||
|
var model = await GroupingProvider.GetGroupingAsync(row.Id);
|
||||||
|
|
||||||
|
parameters.Add("Model", ArtifactGroupingValidationModel.ToValidationModel(model));
|
||||||
|
|
||||||
|
var options = new DialogOptions()
|
||||||
|
{
|
||||||
|
MaxWidth = MaxWidth.ExtraExtraLarge,
|
||||||
|
FullWidth = true
|
||||||
|
};
|
||||||
|
|
||||||
|
var dialog = await DialogService.ShowAsync<AddGroupingDialog>("Edit Grouping", parameters, options);
|
||||||
|
|
||||||
|
var result = await dialog.Result;
|
||||||
|
|
||||||
|
if (!result.Canceled)
|
||||||
|
{
|
||||||
|
await DataGrid.ReloadServerData();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task OnDeleteClicked(MouseEventArgs args)
|
private async Task OnDeleteClicked(MouseEventArgs args)
|
||||||
@@ -120,6 +139,27 @@
|
|||||||
StateHasChanged();
|
StateHasChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task<GridData<ArtifactGroupingRowElement>> ServerReload(GridState<ArtifactGroupingRowElement> state)
|
||||||
|
{
|
||||||
|
int totalItems = await GroupingProvider.GetTotalCount();
|
||||||
|
|
||||||
|
IEnumerable<ArtifactGrouping> groupings = await GroupingProvider.GetGroupingsPaged(state.Page + 1, state.PageSize);
|
||||||
|
|
||||||
|
var pagedItems = groupings.Select(grouping => new ArtifactGroupingRowElement()
|
||||||
|
{
|
||||||
|
Id = grouping.Id,
|
||||||
|
Title = grouping.Title,
|
||||||
|
ArtifactGroupingIdentifier = grouping.ArtifactGroupingIdentifier ?? throw new ArgumentNullException(nameof(grouping), "Got a null ArtifactGroupingIdentifier"),
|
||||||
|
CategoryName = grouping.Category.Name,
|
||||||
|
IsPublicallyVisible = grouping.IsPublicallyVisible,
|
||||||
|
});
|
||||||
|
|
||||||
|
return new GridData<ArtifactGroupingRowElement>()
|
||||||
|
{
|
||||||
|
TotalItems = totalItems,
|
||||||
|
Items = pagedItems
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -40,6 +40,7 @@
|
|||||||
public required string FieldSeparator { get; set; } = "-";
|
public required string FieldSeparator { get; set; } = "-";
|
||||||
|
|
||||||
private List<IdentifierFieldValidationModel> _identifierFields = new();
|
private List<IdentifierFieldValidationModel> _identifierFields = new();
|
||||||
|
|
||||||
[Parameter]
|
[Parameter]
|
||||||
public required List<IdentifierFieldValidationModel> IdentifierFields
|
public required List<IdentifierFieldValidationModel> IdentifierFields
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using Microsoft.IdentityModel.Tokens;
|
using Microsoft.IdentityModel.Tokens;
|
||||||
using OpenArchival.DataAccess;
|
using OpenArchival.DataAccess;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace OpenArchival.Blazor;
|
namespace OpenArchival.Blazor;
|
||||||
|
|
||||||
@@ -54,6 +55,62 @@ public class ArtifactGroupingValidationModel : IValidatableObject
|
|||||||
return grouping;
|
return grouping;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ArtifactGroupingValidationModel ToValidationModel(ArtifactGrouping grouping)
|
||||||
|
{
|
||||||
|
var entries = new List<ArtifactEntryValidationModel>();
|
||||||
|
|
||||||
|
foreach (var entry in grouping.ChildArtifactEntries)
|
||||||
|
{
|
||||||
|
var defects = new List<string>();
|
||||||
|
|
||||||
|
if (entry.Defects is not null)
|
||||||
|
{
|
||||||
|
defects.AddRange(entry.Defects.Select(defect => defect.Description));
|
||||||
|
}
|
||||||
|
|
||||||
|
var validationModel = new ArtifactEntryValidationModel()
|
||||||
|
{
|
||||||
|
Title = entry.Title,
|
||||||
|
StorageLocation = entry.StorageLocation.Location,
|
||||||
|
ArtifactNumber = entry.ArtifactNumber,
|
||||||
|
AssociatedDates = entry.AssociatedDates,
|
||||||
|
Defects = entry?.Defects?.Select(defect => defect.Description).ToList(),
|
||||||
|
Description = entry?.Description,
|
||||||
|
Files = entry?.Files,
|
||||||
|
FileTextContent = entry?.FileTextContent,
|
||||||
|
IsPublicallyVisible = entry.IsPubliclyVisible,
|
||||||
|
Links = entry.Links,
|
||||||
|
ListedNames = entry?.ListedNames?.Select(name => name.Value).ToList(),
|
||||||
|
RelatedArtifacts = entry.RelatedTo,
|
||||||
|
Tags = entry?.Tags?.Select(tag => tag.Name).ToList(),
|
||||||
|
Type = entry?.Type.Name,
|
||||||
|
};
|
||||||
|
|
||||||
|
entries.Add(validationModel);
|
||||||
|
}
|
||||||
|
|
||||||
|
var identifierFieldsStrings = grouping.IdentifierFields.Values;
|
||||||
|
List<IdentifierFieldValidationModel> identifierFields = new();
|
||||||
|
for (int index = 0; index < identifierFieldsStrings.Count; ++index)
|
||||||
|
{
|
||||||
|
identifierFields.Add(new IdentifierFieldValidationModel()
|
||||||
|
{
|
||||||
|
Value = identifierFieldsStrings[index],
|
||||||
|
Name = grouping.Category.FieldNames[index]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return new ArtifactGroupingValidationModel()
|
||||||
|
{
|
||||||
|
Title = grouping.Title,
|
||||||
|
ArtifactEntries = entries,
|
||||||
|
Category = grouping.Category,
|
||||||
|
Description = grouping.Description,
|
||||||
|
IdentifierFieldValues = identifierFields,
|
||||||
|
IsPublicallyVisible = grouping.IsPublicallyVisible,
|
||||||
|
Type = grouping.Type,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
|
||||||
{
|
{
|
||||||
foreach (var entry in ArtifactEntries)
|
foreach (var entry in ArtifactEntries)
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -15,7 +15,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("OpenArchival.Blazor")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("OpenArchival.Blazor")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+dd3968f6effa8f45f27a3ec91c34762c88380f06")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ff34eb87b9d0eec9553fb4767daadfcc0d97fb44")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("OpenArchival.Blazor")]
|
[assembly: System.Reflection.AssemblyProductAttribute("OpenArchival.Blazor")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("OpenArchival.Blazor")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("OpenArchival.Blazor")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
4cb1f71ab75baefd50d4cf23fe890ca9a8c7d28dbae39628ffdc79e6bcb2fe49
|
038afca63e0897bdd4751b98f3930ef5e6de7eabd431984af04ddfc4648f989b
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
{"documents":{"D:\\Nextcloud\\Documents\\Open-Archival\\*":"https://raw.githubusercontent.com/vtallen/Open-Archival/dd3968f6effa8f45f27a3ec91c34762c88380f06/*"}}
|
{"documents":{"D:\\Nextcloud\\Documents\\Open-Archival\\*":"https://raw.githubusercontent.com/vtallen/Open-Archival/ff34eb87b9d0eec9553fb4767daadfcc0d97fb44/*"}}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
{"GlobalPropertiesHash":"w2zJjDlrZF5/5p80zNaW9/DaLrmtiqb1ym05zjQa8AU=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["Ql2PiheSms1jp3ze9191\u002BLNizQeYVsVG\u002B7N0KZ1uG20=","J7kZmrOHXGR7mhUJ1qRNPdV4NRND\u002BvY/dHsYc/Fs5FA=","zoyQzHz20Gq24s2eR\u002BQU8CSBO06r9oxWByDVQGHt4qE=","m0ZalmIclG1CWERwq7TJzaS3UTwdWU7vJTH5wtXTRu0=","kYIUaswTSm/vuWdrFVk9i7vGl7gi4QutG\u002BtCBbnKC6I=","I92NrQVtDRIlAXcy/VupzptYIRXUmfdARzJEd\u002BMwPPI=","vwFknGJfBqZvyW3NEetGDZikd1HNT74cx2PojJjY\u002BPY=","3KENyb8mlCPncPOO5PbFfE0ubEK97voAevXn\u002BluJF7w=","NwDfbvguyiABZkN\u002B7yp6ClTOKkIFe/x4/v8tW4SUWHs=","Hourq1FvI\u002BJdRWbGSIe8r7GJGmkjFaIIQ8xB71hUBj4=","5n3ZEfHdKhL/ejFZA6mAyU6RVQAOd2wCgH3KjVv4d0U=","76\u002Bi/9Jz2zUyw2kfeC1dt0\u002B2uS7aFC2hMxE6ERdLn6s=","nvIt8ExR97wRoREETNPoXJ8D7Pb3KMAHZcwls7Q6c5E=","VfYWVT8Cth4Ztc4/xdY/qocO1V5snDiDHqbnmGMbvSw=","JxOQqF9Br69IsgvR\u002BTp8Vp93AFvsAKAiWtrgUjK7uKE=","5fR1TRHdDoMpaYhFN4ET8XHmhPG8hvpyxjiTF2qwx3M=","lxWH\u002B23ZAM/D8nGa5K0aryPD\u002BJPkC8vLJw2cEPhz8BA=","V8fXm0xeM7wossowKO5U7zhqV0P4uUGyIdkFdI9/LmY=","DGTAL07rwTwMmN0h4z8RtKm1\u002BbRR4K\u002B39bnl/wF43ZM=","rph0gnGKJ2XM54sr0iGk\u002BWTEktu647aepqf4FJUOLY8=","nklMuuwtwGoNNErDuvc4h4TaCmj4xyGZdjpGKgNvLGE=","Onb4gjU\u002B/9a/TKG0C3dG2hXdTEVs7OCECl6pWNTR6pQ=","WY7f0A5zLk9CD0lYECdLRR2b9b8GL2skPQO91AQ5wOM=","Ac8RYrUWtH4wwvUsQ9V6ndbtfhGuDzP1S9Hkh0JQLPg=","ixUpDxEYNKdhPZM9//dDIaFJGC9LvGDbh6rENZRYjWc=","SaPHXK2AwnFe3srooGZwMezdZmaxj0st4ZuBcZ0nfqE=","T5f5jCFFR0KCQwbQwHvZbWrVp7NucmIDfBynM8At\u002BFg=","DMXcRradogfvYUFJEJJT\u002B\u002B5RQjl\u002BI7kUSkHrHCl8oOk=","OLr6tSbzkGk2i5G0fVdSkw7v0IzsX6NL86pLF9m6eX0=","es5rRr8vQCVUTmRO5bFYu0yMvzBffvEDZTKp5IpEEvA=","//xOpsw6IkdGK7auzNWaN3ipl2miVcBMSjnir/YlMBM=","LxLYDw\u002BNEQs1/4eWj5xZUyDYpsFLgH0ApDhFJ57Tdxw=","MFYQHMUPDwTl5G2r85YGLzdn1v369NvEoKIV/yqP9D0=","suYCRRYSyx84XfGpJ642kjRBvpsYCZrXHIQdrDjHhM8=","FWll23MBvwnmTx45GuMEkpaohrEGlqtK5xFGH7EFhFQ=","xVQXdj83lrOmePZ2H/X8gQKeb0ZsdJwmwGlVhgn1iKk=","JBM4mmoRLcKW020j1M5/od\u002BktwV30JiF0IURK3neeVA=","LhQEEPfBv1x4zkjLkNo5UOqbP6vpsuxmDZfWrrYUOuQ=","6Ej25\u002BdEOADcqNkFwaGEjzHy7JwZjxZHE484x/wngas=","eFGzh1RmS7P9u2g03QpW6hWZdSUmi7k6aTjXbhIxvBw=","8EP2SMLjn\u002Ba9MBRxAWB0Chr/dyRQru36g4tGLaVvC5U=","1cSaY4ZOdlRQ4J8JEJcTCTaxFW6wCIkDNaHt4gOO6O0=","lOJzvq/mt94Oz7XdoNgAi5xhxeLtmYb8fQBwlPPQZZE=","OcnWLAVaHOsYs4bxnEnZqIWag3elwA7S4wtI2W/UU/w=","itNr5KUbu31/YaznAa3H9HU94pR2G5E\u002By41ZOAziBso=","9L2A6DEc9nUgGsAfznPoDJDiHK9N5yUnvVAZ55HFU5o=","jrhMriKpKb8MMoF/fFjCvVghgR1nPdlicua/iXMULrs=","CdwSbAeG72nDXEn8OBaMcL1/VmjlgS7xHzBX6FqCAhM=","ZKiapX8zYGlD2F5aGELVEVwu/xqbGH52dLsAPCg\u002BK1c=","MFwB9\u002Bmf\u002BLmDERjgvazd6oBnknubBcqxnX25YF5O\u002BR4=","ychUFdjaQZpbiFmAejbm6r2LE3ryZr0QzpQWAf8pYAU=","HHMN9Vvcgvov4W7M1YjdvfTZsFWuzyUh9TPfALHD8ys=","Rg0Zc7\u002B6aN84D0yIgRswn0g5Z\u002BCedtn8RjWnxPXD6Bc=","nJEkwqZ2WHoYX/lkd1ag99OObwa\u002BUacCxi8cPwQyYZQ=","haqWbxLhmiGrPyfId7Eidma9bDdT\u002BLmPiYFcTJeIvwM=","6Rdh8TmSgxQlWiZ1JiwrbUrqh6GigCZcyq3Y/p/GyEg=","3nVS5wBdgLMIZvvaoi8wriTzs3BDkKg37FtwHfDMhjQ=","PTCwsDOSptetl4jJHyelugE6oXbRSgUnDGBZeR5DJAw=","zzh3FW9R/C\u002BpOP8SPV2JXRRAhd1LLuYlGOyyOnZ9Gnk=","kEChOeuFq85XCariss4dIamJogzRzhHv3I\u002Bwz\u002BTM3qg=","ILgZb/GGIWdwm7iauiYzhswQLxIwoFQmo7WuMsDLZI8=","hPcbJaDUq2Gr6BBrUFWuGPpXtI2\u002Bzf\u002BB131nyeR/VhM=","6VyD1SdAUVe84G4oPqyBEYJ2vsYxzN6p\u002BE2JPzfsaHs=","g3sYtiwGKZqWqJmIFnpgMlXuzekOZOJp7bP\u002BeCGlEJg=","5kGuu3Hg/IoCEyBXsQ7ggsNkiuRTW4VUgJHrzZ6A32A=","V6Cuay3Fa0FmnT45Y/Je3\u002BP\u002BmRZG1Vn7QzNexS/U9QM=","x61JOwZ6Rincvaxrd7L/sxlpqJIbZhN8ugbqRa58Bh0=","2aJE9mIzYveQB88MIjZDblZknjB6XucYyey1JlyCSHw=","om8bC4Me/ps3m/rDiQ48q6XITG3NcGTkzfULk51DvlQ="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
{"GlobalPropertiesHash":"w2zJjDlrZF5/5p80zNaW9/DaLrmtiqb1ym05zjQa8AU=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["Ql2PiheSms1jp3ze9191\u002BLNizQeYVsVG\u002B7N0KZ1uG20=","J7kZmrOHXGR7mhUJ1qRNPdV4NRND\u002BvY/dHsYc/Fs5FA=","zoyQzHz20Gq24s2eR\u002BQU8CSBO06r9oxWByDVQGHt4qE=","m0ZalmIclG1CWERwq7TJzaS3UTwdWU7vJTH5wtXTRu0=","kYIUaswTSm/vuWdrFVk9i7vGl7gi4QutG\u002BtCBbnKC6I=","I92NrQVtDRIlAXcy/VupzptYIRXUmfdARzJEd\u002BMwPPI=","vwFknGJfBqZvyW3NEetGDZikd1HNT74cx2PojJjY\u002BPY=","3KENyb8mlCPncPOO5PbFfE0ubEK97voAevXn\u002BluJF7w=","NwDfbvguyiABZkN\u002B7yp6ClTOKkIFe/x4/v8tW4SUWHs=","Hourq1FvI\u002BJdRWbGSIe8r7GJGmkjFaIIQ8xB71hUBj4=","5n3ZEfHdKhL/ejFZA6mAyU6RVQAOd2wCgH3KjVv4d0U=","76\u002Bi/9Jz2zUyw2kfeC1dt0\u002B2uS7aFC2hMxE6ERdLn6s=","nvIt8ExR97wRoREETNPoXJ8D7Pb3KMAHZcwls7Q6c5E=","VfYWVT8Cth4Ztc4/xdY/qocO1V5snDiDHqbnmGMbvSw=","JxOQqF9Br69IsgvR\u002BTp8Vp93AFvsAKAiWtrgUjK7uKE=","5fR1TRHdDoMpaYhFN4ET8XHmhPG8hvpyxjiTF2qwx3M=","lxWH\u002B23ZAM/D8nGa5K0aryPD\u002BJPkC8vLJw2cEPhz8BA=","V8fXm0xeM7wossowKO5U7zhqV0P4uUGyIdkFdI9/LmY=","DGTAL07rwTwMmN0h4z8RtKm1\u002BbRR4K\u002B39bnl/wF43ZM=","rph0gnGKJ2XM54sr0iGk\u002BWTEktu647aepqf4FJUOLY8=","nklMuuwtwGoNNErDuvc4h4TaCmj4xyGZdjpGKgNvLGE=","Onb4gjU\u002B/9a/TKG0C3dG2hXdTEVs7OCECl6pWNTR6pQ=","WY7f0A5zLk9CD0lYECdLRR2b9b8GL2skPQO91AQ5wOM=","Ac8RYrUWtH4wwvUsQ9V6ndbtfhGuDzP1S9Hkh0JQLPg=","ixUpDxEYNKdhPZM9//dDIaFJGC9LvGDbh6rENZRYjWc=","SaPHXK2AwnFe3srooGZwMezdZmaxj0st4ZuBcZ0nfqE=","T5f5jCFFR0KCQwbQwHvZbWrVp7NucmIDfBynM8At\u002BFg=","DMXcRradogfvYUFJEJJT\u002B\u002B5RQjl\u002BI7kUSkHrHCl8oOk=","OLr6tSbzkGk2i5G0fVdSkw7v0IzsX6NL86pLF9m6eX0=","es5rRr8vQCVUTmRO5bFYu0yMvzBffvEDZTKp5IpEEvA=","//xOpsw6IkdGK7auzNWaN3ipl2miVcBMSjnir/YlMBM=","LxLYDw\u002BNEQs1/4eWj5xZUyDYpsFLgH0ApDhFJ57Tdxw=","MFYQHMUPDwTl5G2r85YGLzdn1v369NvEoKIV/yqP9D0=","suYCRRYSyx84XfGpJ642kjRBvpsYCZrXHIQdrDjHhM8=","FWll23MBvwnmTx45GuMEkpaohrEGlqtK5xFGH7EFhFQ=","xVQXdj83lrOmePZ2H/X8gQKeb0ZsdJwmwGlVhgn1iKk=","JBM4mmoRLcKW020j1M5/od\u002BktwV30JiF0IURK3neeVA=","LhQEEPfBv1x4zkjLkNo5UOqbP6vpsuxmDZfWrrYUOuQ=","6Ej25\u002BdEOADcqNkFwaGEjzHy7JwZjxZHE484x/wngas=","eFGzh1RmS7P9u2g03QpW6hWZdSUmi7k6aTjXbhIxvBw=","8EP2SMLjn\u002Ba9MBRxAWB0Chr/dyRQru36g4tGLaVvC5U=","1cSaY4ZOdlRQ4J8JEJcTCTaxFW6wCIkDNaHt4gOO6O0=","lOJzvq/mt94Oz7XdoNgAi5xhxeLtmYb8fQBwlPPQZZE=","OcnWLAVaHOsYs4bxnEnZqIWag3elwA7S4wtI2W/UU/w=","H8aFhn2drJzt36/L24d0engnsOFCb0JKnLejDgKTLi4=","9L2A6DEc9nUgGsAfznPoDJDiHK9N5yUnvVAZ55HFU5o=","jrhMriKpKb8MMoF/fFjCvVghgR1nPdlicua/iXMULrs=","CdwSbAeG72nDXEn8OBaMcL1/VmjlgS7xHzBX6FqCAhM=","rRfEoGduwRYI4dLUcvO1K5zL1Uf4y/R3qc5y1tZ6bbM=","j/BlMWNIm8dU8cN80vx7pKvotDlEPvK3Aw0x0gRwsGw=","unYa1AQD93GWZQpvokZZaLPzmQsIKVtMCYJWev1NKdA=","hTdJsAcxKOAgmREDxM0Q7F0XFAPcSi9LbkooIvw4pDo=","Rg0Zc7\u002B6aN84D0yIgRswn0g5Z\u002BCedtn8RjWnxPXD6Bc=","7i19fmcUtxUfpJGLk9ori6H9NTqI2TYMBHblGvKBU5w=","haqWbxLhmiGrPyfId7Eidma9bDdT\u002BLmPiYFcTJeIvwM=","6Rdh8TmSgxQlWiZ1JiwrbUrqh6GigCZcyq3Y/p/GyEg=","3nVS5wBdgLMIZvvaoi8wriTzs3BDkKg37FtwHfDMhjQ=","PTCwsDOSptetl4jJHyelugE6oXbRSgUnDGBZeR5DJAw=","zzh3FW9R/C\u002BpOP8SPV2JXRRAhd1LLuYlGOyyOnZ9Gnk=","kEChOeuFq85XCariss4dIamJogzRzhHv3I\u002Bwz\u002BTM3qg=","ILgZb/GGIWdwm7iauiYzhswQLxIwoFQmo7WuMsDLZI8=","hPcbJaDUq2Gr6BBrUFWuGPpXtI2\u002Bzf\u002BB131nyeR/VhM=","6VyD1SdAUVe84G4oPqyBEYJ2vsYxzN6p\u002BE2JPzfsaHs=","g3sYtiwGKZqWqJmIFnpgMlXuzekOZOJp7bP\u002BeCGlEJg=","5kGuu3Hg/IoCEyBXsQ7ggsNkiuRTW4VUgJHrzZ6A32A=","V6Cuay3Fa0FmnT45Y/Je3\u002BP\u002BmRZG1Vn7QzNexS/U9QM=","x61JOwZ6Rincvaxrd7L/sxlpqJIbZhN8ugbqRa58Bh0=","2aJE9mIzYveQB88MIjZDblZknjB6XucYyey1JlyCSHw=","G1Q8UgbSRswYv\u002BdHjSZGTEhWf8RSQOrZKntY9Seu1Zw="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||||
@@ -1 +1 @@
|
|||||||
{"GlobalPropertiesHash":"uX1JeFdFTytYlQPawspOQefa+m0agbesQLMiaeAPgD0=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["Ql2PiheSms1jp3ze9191\u002BLNizQeYVsVG\u002B7N0KZ1uG20=","J7kZmrOHXGR7mhUJ1qRNPdV4NRND\u002BvY/dHsYc/Fs5FA=","zoyQzHz20Gq24s2eR\u002BQU8CSBO06r9oxWByDVQGHt4qE=","m0ZalmIclG1CWERwq7TJzaS3UTwdWU7vJTH5wtXTRu0=","kYIUaswTSm/vuWdrFVk9i7vGl7gi4QutG\u002BtCBbnKC6I=","I92NrQVtDRIlAXcy/VupzptYIRXUmfdARzJEd\u002BMwPPI=","vwFknGJfBqZvyW3NEetGDZikd1HNT74cx2PojJjY\u002BPY=","3KENyb8mlCPncPOO5PbFfE0ubEK97voAevXn\u002BluJF7w=","NwDfbvguyiABZkN\u002B7yp6ClTOKkIFe/x4/v8tW4SUWHs=","Hourq1FvI\u002BJdRWbGSIe8r7GJGmkjFaIIQ8xB71hUBj4=","5n3ZEfHdKhL/ejFZA6mAyU6RVQAOd2wCgH3KjVv4d0U=","76\u002Bi/9Jz2zUyw2kfeC1dt0\u002B2uS7aFC2hMxE6ERdLn6s=","nvIt8ExR97wRoREETNPoXJ8D7Pb3KMAHZcwls7Q6c5E=","VfYWVT8Cth4Ztc4/xdY/qocO1V5snDiDHqbnmGMbvSw=","JxOQqF9Br69IsgvR\u002BTp8Vp93AFvsAKAiWtrgUjK7uKE=","5fR1TRHdDoMpaYhFN4ET8XHmhPG8hvpyxjiTF2qwx3M=","lxWH\u002B23ZAM/D8nGa5K0aryPD\u002BJPkC8vLJw2cEPhz8BA=","V8fXm0xeM7wossowKO5U7zhqV0P4uUGyIdkFdI9/LmY=","DGTAL07rwTwMmN0h4z8RtKm1\u002BbRR4K\u002B39bnl/wF43ZM=","rph0gnGKJ2XM54sr0iGk\u002BWTEktu647aepqf4FJUOLY8=","nklMuuwtwGoNNErDuvc4h4TaCmj4xyGZdjpGKgNvLGE=","Onb4gjU\u002B/9a/TKG0C3dG2hXdTEVs7OCECl6pWNTR6pQ=","WY7f0A5zLk9CD0lYECdLRR2b9b8GL2skPQO91AQ5wOM=","Ac8RYrUWtH4wwvUsQ9V6ndbtfhGuDzP1S9Hkh0JQLPg=","ixUpDxEYNKdhPZM9//dDIaFJGC9LvGDbh6rENZRYjWc=","SaPHXK2AwnFe3srooGZwMezdZmaxj0st4ZuBcZ0nfqE=","T5f5jCFFR0KCQwbQwHvZbWrVp7NucmIDfBynM8At\u002BFg=","DMXcRradogfvYUFJEJJT\u002B\u002B5RQjl\u002BI7kUSkHrHCl8oOk=","OLr6tSbzkGk2i5G0fVdSkw7v0IzsX6NL86pLF9m6eX0=","es5rRr8vQCVUTmRO5bFYu0yMvzBffvEDZTKp5IpEEvA=","//xOpsw6IkdGK7auzNWaN3ipl2miVcBMSjnir/YlMBM=","LxLYDw\u002BNEQs1/4eWj5xZUyDYpsFLgH0ApDhFJ57Tdxw=","MFYQHMUPDwTl5G2r85YGLzdn1v369NvEoKIV/yqP9D0=","suYCRRYSyx84XfGpJ642kjRBvpsYCZrXHIQdrDjHhM8=","FWll23MBvwnmTx45GuMEkpaohrEGlqtK5xFGH7EFhFQ=","xVQXdj83lrOmePZ2H/X8gQKeb0ZsdJwmwGlVhgn1iKk=","JBM4mmoRLcKW020j1M5/od\u002BktwV30JiF0IURK3neeVA=","LhQEEPfBv1x4zkjLkNo5UOqbP6vpsuxmDZfWrrYUOuQ=","6Ej25\u002BdEOADcqNkFwaGEjzHy7JwZjxZHE484x/wngas=","eFGzh1RmS7P9u2g03QpW6hWZdSUmi7k6aTjXbhIxvBw=","8EP2SMLjn\u002Ba9MBRxAWB0Chr/dyRQru36g4tGLaVvC5U=","1cSaY4ZOdlRQ4J8JEJcTCTaxFW6wCIkDNaHt4gOO6O0=","lOJzvq/mt94Oz7XdoNgAi5xhxeLtmYb8fQBwlPPQZZE=","OcnWLAVaHOsYs4bxnEnZqIWag3elwA7S4wtI2W/UU/w=","itNr5KUbu31/YaznAa3H9HU94pR2G5E\u002By41ZOAziBso=","9L2A6DEc9nUgGsAfznPoDJDiHK9N5yUnvVAZ55HFU5o=","jrhMriKpKb8MMoF/fFjCvVghgR1nPdlicua/iXMULrs=","CdwSbAeG72nDXEn8OBaMcL1/VmjlgS7xHzBX6FqCAhM=","ZKiapX8zYGlD2F5aGELVEVwu/xqbGH52dLsAPCg\u002BK1c=","MFwB9\u002Bmf\u002BLmDERjgvazd6oBnknubBcqxnX25YF5O\u002BR4=","ychUFdjaQZpbiFmAejbm6r2LE3ryZr0QzpQWAf8pYAU=","HHMN9Vvcgvov4W7M1YjdvfTZsFWuzyUh9TPfALHD8ys=","Rg0Zc7\u002B6aN84D0yIgRswn0g5Z\u002BCedtn8RjWnxPXD6Bc=","nJEkwqZ2WHoYX/lkd1ag99OObwa\u002BUacCxi8cPwQyYZQ=","haqWbxLhmiGrPyfId7Eidma9bDdT\u002BLmPiYFcTJeIvwM=","6Rdh8TmSgxQlWiZ1JiwrbUrqh6GigCZcyq3Y/p/GyEg=","3nVS5wBdgLMIZvvaoi8wriTzs3BDkKg37FtwHfDMhjQ=","PTCwsDOSptetl4jJHyelugE6oXbRSgUnDGBZeR5DJAw=","zzh3FW9R/C\u002BpOP8SPV2JXRRAhd1LLuYlGOyyOnZ9Gnk=","kEChOeuFq85XCariss4dIamJogzRzhHv3I\u002Bwz\u002BTM3qg=","ILgZb/GGIWdwm7iauiYzhswQLxIwoFQmo7WuMsDLZI8=","hPcbJaDUq2Gr6BBrUFWuGPpXtI2\u002Bzf\u002BB131nyeR/VhM=","6VyD1SdAUVe84G4oPqyBEYJ2vsYxzN6p\u002BE2JPzfsaHs=","g3sYtiwGKZqWqJmIFnpgMlXuzekOZOJp7bP\u002BeCGlEJg=","5kGuu3Hg/IoCEyBXsQ7ggsNkiuRTW4VUgJHrzZ6A32A=","V6Cuay3Fa0FmnT45Y/Je3\u002BP\u002BmRZG1Vn7QzNexS/U9QM=","x61JOwZ6Rincvaxrd7L/sxlpqJIbZhN8ugbqRa58Bh0=","2aJE9mIzYveQB88MIjZDblZknjB6XucYyey1JlyCSHw=","om8bC4Me/ps3m/rDiQ48q6XITG3NcGTkzfULk51DvlQ="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
{"GlobalPropertiesHash":"uX1JeFdFTytYlQPawspOQefa+m0agbesQLMiaeAPgD0=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["Ql2PiheSms1jp3ze9191\u002BLNizQeYVsVG\u002B7N0KZ1uG20=","J7kZmrOHXGR7mhUJ1qRNPdV4NRND\u002BvY/dHsYc/Fs5FA=","zoyQzHz20Gq24s2eR\u002BQU8CSBO06r9oxWByDVQGHt4qE=","m0ZalmIclG1CWERwq7TJzaS3UTwdWU7vJTH5wtXTRu0=","kYIUaswTSm/vuWdrFVk9i7vGl7gi4QutG\u002BtCBbnKC6I=","I92NrQVtDRIlAXcy/VupzptYIRXUmfdARzJEd\u002BMwPPI=","vwFknGJfBqZvyW3NEetGDZikd1HNT74cx2PojJjY\u002BPY=","3KENyb8mlCPncPOO5PbFfE0ubEK97voAevXn\u002BluJF7w=","NwDfbvguyiABZkN\u002B7yp6ClTOKkIFe/x4/v8tW4SUWHs=","Hourq1FvI\u002BJdRWbGSIe8r7GJGmkjFaIIQ8xB71hUBj4=","5n3ZEfHdKhL/ejFZA6mAyU6RVQAOd2wCgH3KjVv4d0U=","76\u002Bi/9Jz2zUyw2kfeC1dt0\u002B2uS7aFC2hMxE6ERdLn6s=","nvIt8ExR97wRoREETNPoXJ8D7Pb3KMAHZcwls7Q6c5E=","VfYWVT8Cth4Ztc4/xdY/qocO1V5snDiDHqbnmGMbvSw=","JxOQqF9Br69IsgvR\u002BTp8Vp93AFvsAKAiWtrgUjK7uKE=","5fR1TRHdDoMpaYhFN4ET8XHmhPG8hvpyxjiTF2qwx3M=","lxWH\u002B23ZAM/D8nGa5K0aryPD\u002BJPkC8vLJw2cEPhz8BA=","V8fXm0xeM7wossowKO5U7zhqV0P4uUGyIdkFdI9/LmY=","DGTAL07rwTwMmN0h4z8RtKm1\u002BbRR4K\u002B39bnl/wF43ZM=","rph0gnGKJ2XM54sr0iGk\u002BWTEktu647aepqf4FJUOLY8=","nklMuuwtwGoNNErDuvc4h4TaCmj4xyGZdjpGKgNvLGE=","Onb4gjU\u002B/9a/TKG0C3dG2hXdTEVs7OCECl6pWNTR6pQ=","WY7f0A5zLk9CD0lYECdLRR2b9b8GL2skPQO91AQ5wOM=","Ac8RYrUWtH4wwvUsQ9V6ndbtfhGuDzP1S9Hkh0JQLPg=","ixUpDxEYNKdhPZM9//dDIaFJGC9LvGDbh6rENZRYjWc=","SaPHXK2AwnFe3srooGZwMezdZmaxj0st4ZuBcZ0nfqE=","T5f5jCFFR0KCQwbQwHvZbWrVp7NucmIDfBynM8At\u002BFg=","DMXcRradogfvYUFJEJJT\u002B\u002B5RQjl\u002BI7kUSkHrHCl8oOk=","OLr6tSbzkGk2i5G0fVdSkw7v0IzsX6NL86pLF9m6eX0=","es5rRr8vQCVUTmRO5bFYu0yMvzBffvEDZTKp5IpEEvA=","//xOpsw6IkdGK7auzNWaN3ipl2miVcBMSjnir/YlMBM=","LxLYDw\u002BNEQs1/4eWj5xZUyDYpsFLgH0ApDhFJ57Tdxw=","MFYQHMUPDwTl5G2r85YGLzdn1v369NvEoKIV/yqP9D0=","suYCRRYSyx84XfGpJ642kjRBvpsYCZrXHIQdrDjHhM8=","FWll23MBvwnmTx45GuMEkpaohrEGlqtK5xFGH7EFhFQ=","xVQXdj83lrOmePZ2H/X8gQKeb0ZsdJwmwGlVhgn1iKk=","JBM4mmoRLcKW020j1M5/od\u002BktwV30JiF0IURK3neeVA=","LhQEEPfBv1x4zkjLkNo5UOqbP6vpsuxmDZfWrrYUOuQ=","6Ej25\u002BdEOADcqNkFwaGEjzHy7JwZjxZHE484x/wngas=","eFGzh1RmS7P9u2g03QpW6hWZdSUmi7k6aTjXbhIxvBw=","8EP2SMLjn\u002Ba9MBRxAWB0Chr/dyRQru36g4tGLaVvC5U=","1cSaY4ZOdlRQ4J8JEJcTCTaxFW6wCIkDNaHt4gOO6O0=","lOJzvq/mt94Oz7XdoNgAi5xhxeLtmYb8fQBwlPPQZZE=","OcnWLAVaHOsYs4bxnEnZqIWag3elwA7S4wtI2W/UU/w=","H8aFhn2drJzt36/L24d0engnsOFCb0JKnLejDgKTLi4=","9L2A6DEc9nUgGsAfznPoDJDiHK9N5yUnvVAZ55HFU5o=","jrhMriKpKb8MMoF/fFjCvVghgR1nPdlicua/iXMULrs=","CdwSbAeG72nDXEn8OBaMcL1/VmjlgS7xHzBX6FqCAhM=","rRfEoGduwRYI4dLUcvO1K5zL1Uf4y/R3qc5y1tZ6bbM=","j/BlMWNIm8dU8cN80vx7pKvotDlEPvK3Aw0x0gRwsGw=","unYa1AQD93GWZQpvokZZaLPzmQsIKVtMCYJWev1NKdA=","hTdJsAcxKOAgmREDxM0Q7F0XFAPcSi9LbkooIvw4pDo=","Rg0Zc7\u002B6aN84D0yIgRswn0g5Z\u002BCedtn8RjWnxPXD6Bc=","7i19fmcUtxUfpJGLk9ori6H9NTqI2TYMBHblGvKBU5w=","haqWbxLhmiGrPyfId7Eidma9bDdT\u002BLmPiYFcTJeIvwM=","6Rdh8TmSgxQlWiZ1JiwrbUrqh6GigCZcyq3Y/p/GyEg=","3nVS5wBdgLMIZvvaoi8wriTzs3BDkKg37FtwHfDMhjQ=","PTCwsDOSptetl4jJHyelugE6oXbRSgUnDGBZeR5DJAw=","zzh3FW9R/C\u002BpOP8SPV2JXRRAhd1LLuYlGOyyOnZ9Gnk=","kEChOeuFq85XCariss4dIamJogzRzhHv3I\u002Bwz\u002BTM3qg=","ILgZb/GGIWdwm7iauiYzhswQLxIwoFQmo7WuMsDLZI8=","hPcbJaDUq2Gr6BBrUFWuGPpXtI2\u002Bzf\u002BB131nyeR/VhM=","6VyD1SdAUVe84G4oPqyBEYJ2vsYxzN6p\u002BE2JPzfsaHs=","g3sYtiwGKZqWqJmIFnpgMlXuzekOZOJp7bP\u002BeCGlEJg=","5kGuu3Hg/IoCEyBXsQ7ggsNkiuRTW4VUgJHrzZ6A32A=","V6Cuay3Fa0FmnT45Y/Je3\u002BP\u002BmRZG1Vn7QzNexS/U9QM=","x61JOwZ6Rincvaxrd7L/sxlpqJIbZhN8ugbqRa58Bh0=","2aJE9mIzYveQB88MIjZDblZknjB6XucYyey1JlyCSHw=","G1Q8UgbSRswYv\u002BdHjSZGTEhWf8RSQOrZKntY9Seu1Zw="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||||
@@ -1 +1 @@
|
|||||||
{"GlobalPropertiesHash":"XVWMafEhfrS/fg2Zj7asTNqgDrfpiwoMDXnjdP5dMDc=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["Ql2PiheSms1jp3ze9191\u002BLNizQeYVsVG\u002B7N0KZ1uG20=","J7kZmrOHXGR7mhUJ1qRNPdV4NRND\u002BvY/dHsYc/Fs5FA=","zoyQzHz20Gq24s2eR\u002BQU8CSBO06r9oxWByDVQGHt4qE=","S9txWBMkH4Yj1eG2HUPOkUWz9AoQkGdbSfeW8NgN\u002BxE=","o0aea9nqp02517BUOs9/nGaM6H/UnpWWtWAeDomcgV4=","y2dTx6xFkyjAzITP/\u002BSs40MCBm/Tmm7ZOBpI/DqlBFE=","ZmxUJu7Va54dnyLTpPaeb3LXxiTxJP0LRIHL\u002BnuF44c=","cg4n0kRzzWgY2qlZdUwROVqv25x8/QQaCM/NXeXHAm0=","AcEyg5sF\u002BG7h8cTd4OPHIBGSDc58NkKWM9LXnPCts2s=","VFrRe4girF3FRpDOlYSBnVrkOnl76ekWOxNm7mF4t0A=","j9/Tw8fXyMbeynWjJYmY6kJ7FJ59tcwknts73gweoEI=","8d5OfgLy6a4RJsFXKLcxA1egZHtmIKAbps5lBmeNt38=","AaPPr3bR/sBWrgmYgZKKMSIKNbQeqLf310KQRpKnfsI=","5IT4oOrh1c8VH1VjwWuD7ai4PiPBq/13R4tEiY/TSPI=","Czn9tLfHWPwVf9uh/XrNgA6Ks6J9tVB4JwfLegj/ftM=","SphdH4dZI\u002BUI/NAY8yVibP3CY6lMLtHcvNauNjiMUG4=","NuRRqbDGasbzd5BYo0DL2OjUjjh57dbMlAUsJkIwkPM=","yLN/BA9iAut9Pd7HzcSogC02i9ddxjif2fdbbGIUB70=","CPWWJ2Bp2hzILnMJAY673sNfUfm3FZSJEAufT8hMY6E=","2QKOn\u002BHTSGGnvtnKhUgPyG3helsQD0OCrMBMj\u002B7T3lw=","wtIXZYfkJHNxuSRxgTwoC\u002BU59\u002Byk38nSrpBgrm/qiAo=","9b\u002BWZIOTiDlyAbFbG434M0hhY786ENq3Fu7wCA09jUo=","87spKP4vbfUzWbrg4lDHyoNr6kpsnJEK24nTFEP9rck=","/vMoyd2fA4sgtfeJQc7cppdLQDn8TcwztXnss03HUUw=","oNCxGtvhYEhZorlxe3gldEXtD1YdpsMnXGcFwqqeeQw=","Ld9r0/i9fUO7QsnlP7r1KKriqtVDmSx8cLG0in2YMSo=","53lPHr9hM1ATjEpC\u002B2/TXZeAlArG\u002BcTVBOU0rnOCSYY=","XPDTlgt2uSfOwx8b0oKHXnDrOjRanq/v7VC/aAqsKsg=","XA43zdGlmTrdY6wEAYknKYBFN9IztLZ2jSrofw0b6V4=","InYJRKMtWl6vOkkIYW9DWTiLIRhMbWwp/GcLrfgTYhs=","b/\u002BexuVW46WvMaRrT/V89clZeIFOODWEpaVshFcyvdA=","A0ZKYLLhNwY/0fzk/IVDeOqWtMmS3l3OqAUcDcBwc/A=","CVg6HDxR8p\u002BKSy1NlJ3zIKBQvgufzL\u002BppFGICUQ\u002Bt3w=","QIOQB6Fr0POEbCmn8nJHkvxhD/MBJBkLkRbYJLA/IYQ=","JJFYlRoX9pKL3BogzIBb9yD5WmSNP4CS7LqbhDK3ZV0=","m//7eW/q\u002B\u002BS7cLBAJncoxjjMdd4ob9yeVwXyO\u002BUT9eI=","bK\u002BMzz3RPOuZoQyDguWcV6QBHxrg2U2\u002B/bAVZ\u002BgpVmE=","Xo3U/owG8nW3wjViQjnwmTJExAAnQChLevgIL6SxVgs=","SfZ1OYxt3htPAa47uV4vmWa1Bdgc4ieW\u002B9xakLRDHO8=","vzc7efbyllU994SpWhcuSAj24nDhk3qWXXJzCFKhIec=","Hv9au18n6omxvLxP0EsBJ8HeLnUAyfa1Jg4xpVg87no=","adO3IRtQJ9N8t04wKkZwPZiqyI0LJOP6xF/Suhog1JE=","4pzRrv9HLcQeFngePzOiTXUmXw1iRIiKRoSCce0cugM=","ngTcMNcqz/xhWZBn5CPSCOvjsrREr0HuEN5UW941TxA=","M9OQdzerfnWfXeRb3kqjQR22ZEAOhPUxnUuB5YzydL0=","orh0CcK78/TtV1LjA11aYsn/YxKYUBNSni\u002BannRaWeI=","UGiYv\u002B7Q0HlOyGACdO9FzYJXDNFgT/cKO8xYQLlx5eg=","mplxK8c12PonhfXKpL\u002BHRLxWkaWn30SmMhIBChvSCVE=","BiFEtxAeulxzg4093ODVO/hBU6BTvilbCg7luNc0QSk=","DKhaZ5fHA5jhqYZosYg5BHMriRJHTo30JRbiC\u002BOpd3c=","h0g/Fvvw0atLURHfHCthiHIOZpDTYQ3D\u002BxmffXCZTGs=","OX7hVhGLcy1hGsMR9Q6K5e1m9Inuxss\u002B3dBLxzpfxGo=","zSEvxET0DOTN2cpCiXQExXCGOxdoXNvPpmHsUTUhTXM=","ePeQgUMQPfE9ZZdl8jI2rfGshuKKHGpnajQ0M5shZSk=","BZMtXiMXFAikFlU3GpSO4qnu4ytUYCrr\u002BH44xQ0sqVg=","WhBc1hqkyc8177jVvo4eQuWlpHVI96iHm4VFZAOO7Fc=","mcMbV2\u002BNCfk5eAGwoYnsWOyN8b8NuAO7iH1ewAHyW6U=","DcLX4hxLgf7iG7fZIKLj7eUITuiIGEgGnDYTCSAmcII=","nzN2wI8kPPjBRWwSKLalEYmrDXyx2Y8f5S\u002BJCKVFj1o=","3QVdUFr8xuBbDhinUAe\u002BtHZRSDw8whCbedlQRGg3ByU=","Uml6Zk4Nd3yDJrKkoHqxmSCEYTiat3222CyFbAAoU28=","GstRCs2Ap1VD2t\u002BJ6nr0UpVFlKhrBm8Fi9PmSQbgj\u002B8=","sr4sunvZGYlxTk47R8QnORuMVrTEufupLlUwtph8jAE=","fm0hNxD23Xg4KufltLQTxCmPvcM3fZYY\u002B7jlnuLutTc=","DH6X9\u002BUzPeMZmgXVBMIcvPEMbk70kYRRprZcygSB9Q8="],"CachedAssets":{"Ql2PiheSms1jp3ze9191\u002BLNizQeYVsVG\u002B7N0KZ1uG20=":{"Identity":"D:\\Nextcloud\\Documents\\Open-Archival\\OpenArchival.Blazor\\wwwroot\\favicon.ico","SourceId":"OpenArchival.Blazor","SourceType":"Discovered","ContentRoot":"D:\\Nextcloud\\Documents\\Open-Archival\\OpenArchival.Blazor\\wwwroot\\","BasePath":"_content/OpenArchival.Blazor","RelativePath":"favicon#[.{fingerprint}]?.ico","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"2jeq8efc6q","Integrity":"8kNQh\u002BLErZHx3sMz237BHWFasAGQ88EWakJrWWYOxTA=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\favicon.ico","FileLength":15086,"LastWriteTime":"2025-08-12T18:28:17.583355+00:00"}},"CachedCopyCandidates":{}}
|
{"GlobalPropertiesHash":"XVWMafEhfrS/fg2Zj7asTNqgDrfpiwoMDXnjdP5dMDc=","FingerprintPatternsHash":"gq3WsqcKBUGTSNle7RKKyXRIwh7M8ccEqOqYvIzoM04=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["Ql2PiheSms1jp3ze9191\u002BLNizQeYVsVG\u002B7N0KZ1uG20=","J7kZmrOHXGR7mhUJ1qRNPdV4NRND\u002BvY/dHsYc/Fs5FA=","zoyQzHz20Gq24s2eR\u002BQU8CSBO06r9oxWByDVQGHt4qE=","S9txWBMkH4Yj1eG2HUPOkUWz9AoQkGdbSfeW8NgN\u002BxE=","o0aea9nqp02517BUOs9/nGaM6H/UnpWWtWAeDomcgV4=","y2dTx6xFkyjAzITP/\u002BSs40MCBm/Tmm7ZOBpI/DqlBFE=","ZmxUJu7Va54dnyLTpPaeb3LXxiTxJP0LRIHL\u002BnuF44c=","cg4n0kRzzWgY2qlZdUwROVqv25x8/QQaCM/NXeXHAm0=","AcEyg5sF\u002BG7h8cTd4OPHIBGSDc58NkKWM9LXnPCts2s=","VFrRe4girF3FRpDOlYSBnVrkOnl76ekWOxNm7mF4t0A=","j9/Tw8fXyMbeynWjJYmY6kJ7FJ59tcwknts73gweoEI=","8d5OfgLy6a4RJsFXKLcxA1egZHtmIKAbps5lBmeNt38=","AaPPr3bR/sBWrgmYgZKKMSIKNbQeqLf310KQRpKnfsI=","5IT4oOrh1c8VH1VjwWuD7ai4PiPBq/13R4tEiY/TSPI=","Czn9tLfHWPwVf9uh/XrNgA6Ks6J9tVB4JwfLegj/ftM=","SphdH4dZI\u002BUI/NAY8yVibP3CY6lMLtHcvNauNjiMUG4=","NuRRqbDGasbzd5BYo0DL2OjUjjh57dbMlAUsJkIwkPM=","yLN/BA9iAut9Pd7HzcSogC02i9ddxjif2fdbbGIUB70=","CPWWJ2Bp2hzILnMJAY673sNfUfm3FZSJEAufT8hMY6E=","2QKOn\u002BHTSGGnvtnKhUgPyG3helsQD0OCrMBMj\u002B7T3lw=","wtIXZYfkJHNxuSRxgTwoC\u002BU59\u002Byk38nSrpBgrm/qiAo=","9b\u002BWZIOTiDlyAbFbG434M0hhY786ENq3Fu7wCA09jUo=","87spKP4vbfUzWbrg4lDHyoNr6kpsnJEK24nTFEP9rck=","/vMoyd2fA4sgtfeJQc7cppdLQDn8TcwztXnss03HUUw=","oNCxGtvhYEhZorlxe3gldEXtD1YdpsMnXGcFwqqeeQw=","Ld9r0/i9fUO7QsnlP7r1KKriqtVDmSx8cLG0in2YMSo=","53lPHr9hM1ATjEpC\u002B2/TXZeAlArG\u002BcTVBOU0rnOCSYY=","XPDTlgt2uSfOwx8b0oKHXnDrOjRanq/v7VC/aAqsKsg=","XA43zdGlmTrdY6wEAYknKYBFN9IztLZ2jSrofw0b6V4=","InYJRKMtWl6vOkkIYW9DWTiLIRhMbWwp/GcLrfgTYhs=","b/\u002BexuVW46WvMaRrT/V89clZeIFOODWEpaVshFcyvdA=","A0ZKYLLhNwY/0fzk/IVDeOqWtMmS3l3OqAUcDcBwc/A=","CVg6HDxR8p\u002BKSy1NlJ3zIKBQvgufzL\u002BppFGICUQ\u002Bt3w=","QIOQB6Fr0POEbCmn8nJHkvxhD/MBJBkLkRbYJLA/IYQ=","JJFYlRoX9pKL3BogzIBb9yD5WmSNP4CS7LqbhDK3ZV0=","m//7eW/q\u002B\u002BS7cLBAJncoxjjMdd4ob9yeVwXyO\u002BUT9eI=","bK\u002BMzz3RPOuZoQyDguWcV6QBHxrg2U2\u002B/bAVZ\u002BgpVmE=","Xo3U/owG8nW3wjViQjnwmTJExAAnQChLevgIL6SxVgs=","SfZ1OYxt3htPAa47uV4vmWa1Bdgc4ieW\u002B9xakLRDHO8=","vzc7efbyllU994SpWhcuSAj24nDhk3qWXXJzCFKhIec=","Hv9au18n6omxvLxP0EsBJ8HeLnUAyfa1Jg4xpVg87no=","adO3IRtQJ9N8t04wKkZwPZiqyI0LJOP6xF/Suhog1JE=","4pzRrv9HLcQeFngePzOiTXUmXw1iRIiKRoSCce0cugM=","ngTcMNcqz/xhWZBn5CPSCOvjsrREr0HuEN5UW941TxA=","BUREzTKq6RTkGHrfniKilZfRuTg4naE2ieRV7bV5lz8=","orh0CcK78/TtV1LjA11aYsn/YxKYUBNSni\u002BannRaWeI=","UGiYv\u002B7Q0HlOyGACdO9FzYJXDNFgT/cKO8xYQLlx5eg=","mplxK8c12PonhfXKpL\u002BHRLxWkaWn30SmMhIBChvSCVE=","NIYgVLh6ji9gJ1Rhs4pFuptF3VfDQWz0HV7NHwzTT6c=","uAozb7aRuFLoAnAhhvZeFjIdKDdTACDgpJiOl6qHZF8=","WJ839ZvY8at/iFC8W6iEpRBlbT1jxwU8ZxLszuamAeA=","WqkWjsLTtPmi62fvid\u002BunNqDvkSqFLJ\u002BnRuuVn/CuK0=","zSEvxET0DOTN2cpCiXQExXCGOxdoXNvPpmHsUTUhTXM=","4n9PKTbTnHbwJbn0rzhgsQnIrFt83FYEMWA4GNooCzA=","BZMtXiMXFAikFlU3GpSO4qnu4ytUYCrr\u002BH44xQ0sqVg=","WhBc1hqkyc8177jVvo4eQuWlpHVI96iHm4VFZAOO7Fc=","mcMbV2\u002BNCfk5eAGwoYnsWOyN8b8NuAO7iH1ewAHyW6U=","DcLX4hxLgf7iG7fZIKLj7eUITuiIGEgGnDYTCSAmcII=","nzN2wI8kPPjBRWwSKLalEYmrDXyx2Y8f5S\u002BJCKVFj1o=","3QVdUFr8xuBbDhinUAe\u002BtHZRSDw8whCbedlQRGg3ByU=","Uml6Zk4Nd3yDJrKkoHqxmSCEYTiat3222CyFbAAoU28=","GstRCs2Ap1VD2t\u002BJ6nr0UpVFlKhrBm8Fi9PmSQbgj\u002B8=","sr4sunvZGYlxTk47R8QnORuMVrTEufupLlUwtph8jAE=","fm0hNxD23Xg4KufltLQTxCmPvcM3fZYY\u002B7jlnuLutTc=","DH6X9\u002BUzPeMZmgXVBMIcvPEMbk70kYRRprZcygSB9Q8="],"CachedAssets":{"Ql2PiheSms1jp3ze9191\u002BLNizQeYVsVG\u002B7N0KZ1uG20=":{"Identity":"D:\\Nextcloud\\Documents\\Open-Archival\\OpenArchival.Blazor\\wwwroot\\favicon.ico","SourceId":"OpenArchival.Blazor","SourceType":"Discovered","ContentRoot":"D:\\Nextcloud\\Documents\\Open-Archival\\OpenArchival.Blazor\\wwwroot\\","BasePath":"_content/OpenArchival.Blazor","RelativePath":"favicon#[.{fingerprint}]?.ico","AssetKind":"All","AssetMode":"All","AssetRole":"Primary","AssetMergeBehavior":null,"AssetMergeSource":"","RelatedAsset":null,"AssetTraitName":null,"AssetTraitValue":null,"Fingerprint":"2jeq8efc6q","Integrity":"8kNQh\u002BLErZHx3sMz237BHWFasAGQ88EWakJrWWYOxTA=","CopyToOutputDirectory":"Never","CopyToPublishDirectory":"PreserveNewest","OriginalItemSpec":"wwwroot\\favicon.ico","FileLength":15086,"LastWriteTime":"2025-08-12T18:28:17.583355+00:00"}},"CachedCopyCandidates":{}}
|
||||||
@@ -218,3 +218,39 @@ D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\st
|
|||||||
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
D:\Nextcloud\Documents\Open-Archival\OpenArchival.DataAccess\obj\Debug\net9.0\staticwebassets.build.json
|
||||||
|
|||||||
@@ -50,6 +50,10 @@ public class ApplicationDbContext(DbContextOptions<ApplicationDbContext> options
|
|||||||
.HasForeignKey(entry => entry.ArtifactGroupingId)
|
.HasForeignKey(entry => entry.ArtifactGroupingId)
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade);
|
||||||
|
|
||||||
|
modelBuilder.Entity<ArtifactGrouping>()
|
||||||
|
.Navigation(g => g.IdentifierFields)
|
||||||
|
.UsePropertyAccessMode(PropertyAccessMode.Field);
|
||||||
|
|
||||||
var dictionaryComparer = new ValueComparer<Dictionary<string, string>>(
|
var dictionaryComparer = new ValueComparer<Dictionary<string, string>>(
|
||||||
(dictionary1, dictionary2) => dictionary1.OrderBy(pair => pair.Key)
|
(dictionary1, dictionary2) => dictionary1.OrderBy(pair => pair.Key)
|
||||||
.SequenceEqual(dictionary2.OrderBy(pair => pair.Key)),
|
.SequenceEqual(dictionary2.OrderBy(pair => pair.Key)),
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ public class ArtifactGrouping
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return ModelHelpers.MakeIdentifier(_identifierFields.Values, Category.FieldSeparator, null);
|
return ModelHelpers.MakeIdentifier(IdentifierFields.Values, Category.FieldSeparator, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,11 +6,11 @@ namespace OpenArchival.DataAccess;
|
|||||||
|
|
||||||
public class ArtifactGroupingProvider : IArtifactGroupingProvider
|
public class ArtifactGroupingProvider : IArtifactGroupingProvider
|
||||||
{
|
{
|
||||||
private readonly ApplicationDbContext _context;
|
private readonly IDbContextFactory<ApplicationDbContext> _context;
|
||||||
private readonly ILogger<ArtifactGroupingProvider> _logger;
|
private readonly ILogger<ArtifactGroupingProvider> _logger;
|
||||||
|
|
||||||
[SetsRequiredMembers]
|
[SetsRequiredMembers]
|
||||||
public ArtifactGroupingProvider(ApplicationDbContext context, ILogger<ArtifactGroupingProvider> logger)
|
public ArtifactGroupingProvider(IDbContextFactory<ApplicationDbContext> context, ILogger<ArtifactGroupingProvider> logger)
|
||||||
{
|
{
|
||||||
_context = context;
|
_context = context;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
@@ -18,57 +18,75 @@ public class ArtifactGroupingProvider : IArtifactGroupingProvider
|
|||||||
|
|
||||||
public async Task<ArtifactGrouping?> GetGroupingAsync(int id)
|
public async Task<ArtifactGrouping?> GetGroupingAsync(int id)
|
||||||
{
|
{
|
||||||
return await _context.ArtifactGroupings
|
await using var context = await _context.CreateDbContextAsync();
|
||||||
.Where(g => g.Id == id)
|
return await context.ArtifactGroupings
|
||||||
.Include(g => g.Category)
|
.Include(g => g.Category)
|
||||||
|
.Include(g => g.IdentifierFields)
|
||||||
|
.Include(g => g.ChildArtifactEntries)
|
||||||
|
.ThenInclude(e => e.StorageLocation)
|
||||||
|
.Include(g => g.ChildArtifactEntries)
|
||||||
|
.ThenInclude(e => e.Type)
|
||||||
|
.Include(g => g.ChildArtifactEntries)
|
||||||
|
.ThenInclude(e => e.Files)
|
||||||
|
.Where(g => g.Id == id)
|
||||||
.FirstOrDefaultAsync();
|
.FirstOrDefaultAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<ArtifactGrouping?> GetGroupingAsync(string artifactGroupingIdentifier)
|
public async Task<ArtifactGrouping?> GetGroupingAsync(string artifactGroupingIdentifier)
|
||||||
{
|
{
|
||||||
return await _context.ArtifactGroupings
|
await using var context = await _context.CreateDbContextAsync();
|
||||||
|
return await context.ArtifactGroupings
|
||||||
.Where(g => g.ArtifactGroupingIdentifier == artifactGroupingIdentifier)
|
.Where(g => g.ArtifactGroupingIdentifier == artifactGroupingIdentifier)
|
||||||
.Include(g => g.Category)
|
.Include(g => g.Category)
|
||||||
|
.Include(g => g.ChildArtifactEntries)
|
||||||
|
.ThenInclude(g => g.StorageLocation)
|
||||||
|
.ThenInclude(g => g.Location)
|
||||||
.FirstOrDefaultAsync();
|
.FirstOrDefaultAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task CreateGroupingAsync(ArtifactGrouping grouping)
|
public async Task CreateGroupingAsync(ArtifactGrouping grouping)
|
||||||
{
|
{
|
||||||
_context.ArtifactGroupings.Add(grouping);
|
await using var context = await _context.CreateDbContextAsync();
|
||||||
await _context.SaveChangesAsync();
|
context.ArtifactGroupings.Add(grouping);
|
||||||
|
await context.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task UpdateGroupingAsync(ArtifactGrouping grouping)
|
public async Task UpdateGroupingAsync(ArtifactGrouping grouping)
|
||||||
{
|
{
|
||||||
_context.ArtifactGroupings.Update(grouping);
|
await using var context = await _context.CreateDbContextAsync();
|
||||||
await _context.SaveChangesAsync();
|
context.ArtifactGroupings.Update(grouping);
|
||||||
|
await context.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task DeleteGroupingAsync(int id)
|
public async Task DeleteGroupingAsync(int id)
|
||||||
{
|
{
|
||||||
await _context.ArtifactGroupings
|
await using var context = await _context.CreateDbContextAsync();
|
||||||
|
await context.ArtifactGroupings
|
||||||
.Where(p => p.Id == id)
|
.Where(p => p.Id == id)
|
||||||
.ExecuteDeleteAsync();
|
.ExecuteDeleteAsync();
|
||||||
|
|
||||||
await _context.SaveChangesAsync();
|
await context.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task DeleteGroupingAsync(ArtifactGrouping grouping)
|
public async Task DeleteGroupingAsync(ArtifactGrouping grouping)
|
||||||
{
|
{
|
||||||
_context.ArtifactGroupings.Remove(grouping);
|
await using var context = await _context.CreateDbContextAsync();
|
||||||
await _context.SaveChangesAsync();
|
context.ArtifactGroupings.Remove(grouping);
|
||||||
|
await context.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<List<ArtifactGrouping>> GetGroupingsPaged(int pageNumber, int resultsCount)
|
public async Task<List<ArtifactGrouping>> GetGroupingsPaged(int pageNumber, int resultsCount)
|
||||||
{
|
{
|
||||||
|
await using var context = await _context.CreateDbContextAsync();
|
||||||
if (pageNumber < 1 || resultsCount < 1)
|
if (pageNumber < 1 || resultsCount < 1)
|
||||||
{
|
{
|
||||||
throw new ArgumentOutOfRangeException($"Either page number or number of results was less than or equal to 0. {nameof(pageNumber)}={pageNumber} {nameof(resultsCount)}={resultsCount}");
|
throw new ArgumentOutOfRangeException($"Either page number or number of results was less than or equal to 0. {nameof(pageNumber)}={pageNumber} {nameof(resultsCount)}={resultsCount}");
|
||||||
}
|
}
|
||||||
|
|
||||||
var totalCount = await _context.ArtifactGroupings.CountAsync();
|
var totalCount = await context.ArtifactGroupings.CountAsync();
|
||||||
|
|
||||||
var items = await _context.ArtifactGroupings
|
var items = await context.ArtifactGroupings
|
||||||
|
.Include(g => g.ChildArtifactEntries)
|
||||||
.Include(g => g.Category)
|
.Include(g => g.Category)
|
||||||
.OrderBy(g => g.Id)
|
.OrderBy(g => g.Id)
|
||||||
.Skip((pageNumber - 1) * resultsCount)
|
.Skip((pageNumber - 1) * resultsCount)
|
||||||
@@ -77,4 +95,10 @@ public class ArtifactGroupingProvider : IArtifactGroupingProvider
|
|||||||
|
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<int> GetTotalCount()
|
||||||
|
{
|
||||||
|
await using var context = await _context.CreateDbContextAsync();
|
||||||
|
return context.ArtifactGroupings.Count();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -9,4 +9,5 @@ public interface IArtifactGroupingProvider
|
|||||||
Task DeleteGroupingAsync(int id);
|
Task DeleteGroupingAsync(int id);
|
||||||
Task DeleteGroupingAsync(ArtifactGrouping grouping);
|
Task DeleteGroupingAsync(ArtifactGrouping grouping);
|
||||||
Task<List<ArtifactGrouping>> GetGroupingsPaged(int pageNumber, int resultsCount);
|
Task<List<ArtifactGrouping>> GetGroupingsPaged(int pageNumber, int resultsCount);
|
||||||
|
public Task<int> GetTotalCount();
|
||||||
}
|
}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -15,7 +15,7 @@ using System.Reflection;
|
|||||||
[assembly: System.Reflection.AssemblyCompanyAttribute("OpenArchival.DataAccess")]
|
[assembly: System.Reflection.AssemblyCompanyAttribute("OpenArchival.DataAccess")]
|
||||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+dd3968f6effa8f45f27a3ec91c34762c88380f06")]
|
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+ff34eb87b9d0eec9553fb4767daadfcc0d97fb44")]
|
||||||
[assembly: System.Reflection.AssemblyProductAttribute("OpenArchival.DataAccess")]
|
[assembly: System.Reflection.AssemblyProductAttribute("OpenArchival.DataAccess")]
|
||||||
[assembly: System.Reflection.AssemblyTitleAttribute("OpenArchival.DataAccess")]
|
[assembly: System.Reflection.AssemblyTitleAttribute("OpenArchival.DataAccess")]
|
||||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
3f1dc26310f431c1735242d3a315e070d6215de828a0f93ee5bf50c1e5b9de38
|
9c710d1eda832a1b6dfacbdd6d88e8d851c4fd9722e33c20de29410792da1d82
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
{"documents":{"D:\\Nextcloud\\Documents\\Open-Archival\\*":"https://raw.githubusercontent.com/vtallen/Open-Archival/dd3968f6effa8f45f27a3ec91c34762c88380f06/*"}}
|
{"documents":{"D:\\Nextcloud\\Documents\\Open-Archival\\*":"https://raw.githubusercontent.com/vtallen/Open-Archival/ff34eb87b9d0eec9553fb4767daadfcc0d97fb44/*"}}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1 +1 @@
|
|||||||
{"GlobalPropertiesHash":"J3r5h7pKF0kY0DRJx0Xqba86ngtHs3jduVq7GPX+nwI=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["51WRq7nT/WTvnhamRxLn7Ony/A1bnAxDelsXO4Ehpwc=","aDrxgmPzfmAYNrzynmphKXORQNARBvx3ZJm3IcIlVIA=","dFQa1Ee6LWN6QaEoa8lulEtbH6imVMCsVrPTv7uB7rA=","KAWcEu8sopHLr7dsoLsr\u002Bz7vrHN0YxMtmdfBYeH1kwI=","\u002Bjyo4JejKGZVNH7yAY1POV7dsMBGmszgVLUsVwm0S6Y=","E6ltkajZSrcZfEd5mYBcKe4AnJ/ZOJ8hZBTp71ugK08="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
{"GlobalPropertiesHash":"J3r5h7pKF0kY0DRJx0Xqba86ngtHs3jduVq7GPX+nwI=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["51WRq7nT/WTvnhamRxLn7Ony/A1bnAxDelsXO4Ehpwc=","aDrxgmPzfmAYNrzynmphKXORQNARBvx3ZJm3IcIlVIA=","dFQa1Ee6LWN6QaEoa8lulEtbH6imVMCsVrPTv7uB7rA=","KAWcEu8sopHLr7dsoLsr\u002Bz7vrHN0YxMtmdfBYeH1kwI=","\u002Bjyo4JejKGZVNH7yAY1POV7dsMBGmszgVLUsVwm0S6Y=","fDpShEUul2xTzLSmjcwncSU4OZgXILMHjt2fTsSSXoo="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||||
@@ -1 +1 @@
|
|||||||
{"GlobalPropertiesHash":"EHbx5ejyqDv8gH5NpOoZxRAV9glFiYxTGFnRTcGg8no=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["51WRq7nT/WTvnhamRxLn7Ony/A1bnAxDelsXO4Ehpwc=","aDrxgmPzfmAYNrzynmphKXORQNARBvx3ZJm3IcIlVIA=","dFQa1Ee6LWN6QaEoa8lulEtbH6imVMCsVrPTv7uB7rA=","KAWcEu8sopHLr7dsoLsr\u002Bz7vrHN0YxMtmdfBYeH1kwI=","\u002Bjyo4JejKGZVNH7yAY1POV7dsMBGmszgVLUsVwm0S6Y=","E6ltkajZSrcZfEd5mYBcKe4AnJ/ZOJ8hZBTp71ugK08="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
{"GlobalPropertiesHash":"EHbx5ejyqDv8gH5NpOoZxRAV9glFiYxTGFnRTcGg8no=","FingerprintPatternsHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","PropertyOverridesHash":"8ZRc1sGeVrPBx4lD717BgRaQekyh78QKV9SKsdt638U=","InputHashes":["51WRq7nT/WTvnhamRxLn7Ony/A1bnAxDelsXO4Ehpwc=","aDrxgmPzfmAYNrzynmphKXORQNARBvx3ZJm3IcIlVIA=","dFQa1Ee6LWN6QaEoa8lulEtbH6imVMCsVrPTv7uB7rA=","KAWcEu8sopHLr7dsoLsr\u002Bz7vrHN0YxMtmdfBYeH1kwI=","\u002Bjyo4JejKGZVNH7yAY1POV7dsMBGmszgVLUsVwm0S6Y=","fDpShEUul2xTzLSmjcwncSU4OZgXILMHjt2fTsSSXoo="],"CachedAssets":{},"CachedCopyCandidates":{}}
|
||||||
Reference in New Issue
Block a user