| pva.Helpers | 135 | 64 | 199 | 550 | 67.8% | | 65 | 116 | 56% | |
| pva.Helpers.Extensions.DateTimeExtensions | 3 | 0 | 3 | 12 | 100% | | 0 | 0 | | |
| pva.Helpers.Extensions.EquivalencyOptions<T> | 8 | 32 | 40 | 216 | 20% | | 0 | 12 | 0% | |
| pva.Helpers.Extensions.IDictionaryExtensions | 6 | 0 | 6 | 19 | 100% | | 2 | 2 | 100% | |
| pva.Helpers.Extensions.IEnumerableExtensions | 6 | 0 | 6 | 18 | 100% | | 2 | 2 | 100% | |
| pva.Helpers.Extensions.JSonElementExtensions | 4 | 0 | 4 | 13 | 100% | | 1 | 2 | 50% | |
| pva.Helpers.Extensions.ShouldlyExtensions | 76 | 28 | 104 | 216 | 73% | | 55 | 92 | 59.7% | |
| pva.Helpers.Extensions.TimeSpanExtensions | 4 | 0 | 4 | 14 | 100% | | 0 | 0 | | |
| pva.Helpers.SystemCommand | 28 | 4 | 32 | 42 | 87.5% | | 5 | 6 | 83.3% | |
| pva.SuperV.Api | 2227 | 223 | 2450 | 4365 | 90.8% | | 282 | 366 | 77% | |
| pva.SuperV.Api.Exceptions.EntityPropertyNotChangeableException | 6 | 0 | 6 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Exceptions.InvalidSortOptionException | 3 | 0 | 3 | 29 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Exceptions.NonRunnableProjectException | 3 | 0 | 3 | 24 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Exceptions.NonWipProjectException | 3 | 0 | 3 | 24 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Mappers.ClassMapper | 1 | 0 | 1 | 11 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Mappers.FieldDefinitionMapper | 34 | 2 | 36 | 49 | 94.4% | | 59 | 76 | 77.6% | |
| pva.SuperV.Api.Mappers.FieldFormatterMapper | 8 | 2 | 10 | 24 | 80% | | 2 | 4 | 50% | |
| pva.SuperV.Api.Mappers.FieldMapper | 1 | 0 | 1 | 12 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Mappers.FieldProcessingMapper | 79 | 4 | 83 | 106 | 95.1% | | 47 | 62 | 75.8% | |
| pva.SuperV.Api.Mappers.FieldValueMapper | 35 | 2 | 37 | 56 | 94.5% | | 26 | 28 | 92.8% | |
| pva.SuperV.Api.Mappers.HistoryRepositoryMapper | 2 | 0 | 2 | 13 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Mappers.HistoryRowMapper | 67 | 3 | 70 | 94 | 95.7% | | 49 | 52 | 94.2% | |
| pva.SuperV.Api.Mappers.InstanceMapper | 3 | 0 | 3 | 13 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Mappers.ProjectMapper | 2 | 0 | 2 | 12 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Mappers.ScriptDefinitionMapper | 2 | 0 | 2 | 14 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Classes.ClassEndpoints | 76 | 0 | 76 | 95 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Classes.CreateClass | 11 | 0 | 11 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Classes.DeleteClass | 11 | 0 | 11 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Classes.GetClass | 7 | 3 | 10 | 27 | 70% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Classes.GetClasses | 7 | 3 | 10 | 26 | 70% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Classes.SearchClasses | 4 | 6 | 10 | 28 | 40% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Classes.UpdateClass | 11 | 0 | 11 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldDefinitions.CreateFieldDefinitions | 11 | 0 | 11 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldDefinitions.DeleteFieldDefinition | 11 | 0 | 11 | 27 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldDefinitions.FieldDefinitionEndpoints | 82 | 0 | 82 | 101 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldDefinitions.GetFieldDefinition | 8 | 3 | 11 | 28 | 72.7% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldDefinitions.GetFieldDefinitions | 7 | 3 | 10 | 27 | 70% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldDefinitions.SearchFieldDefinitions | 4 | 6 | 10 | 28 | 40% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldDefinitions.UpdateFieldDefinition | 11 | 0 | 11 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldFormatters.CreateFieldFormatter | 11 | 0 | 11 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldFormatters.DeleteFieldFormatter | 11 | 0 | 11 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldFormatters.FieldFormattersEndpoints | 81 | 0 | 81 | 101 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldFormatters.GetFieldFormatter | 8 | 3 | 11 | 29 | 72.7% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldFormatters.GetFieldFormatters | 7 | 3 | 10 | 28 | 70% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldFormatters.GetFieldFormatterTypes | 5 | 3 | 8 | 24 | 62.5% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldFormatters.SearchFieldFormatters | 4 | 6 | 10 | 28 | 40% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldFormatters.UpdateFieldFormatter | 11 | 0 | 11 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldProcessings.CreateProcessing | 11 | 0 | 11 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldProcessings.DeleteProcessing | 11 | 0 | 11 | 27 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldProcessings.FieldProcessingEndpoints | 74 | 0 | 74 | 92 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldProcessings.GetProcessing | 7 | 3 | 10 | 27 | 70% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldProcessings.GetProcessings | 7 | 3 | 10 | 27 | 70% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.FieldProcessings.UpdateProcessing | 11 | 0 | 11 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.HistoryRepositories.CreateHistoryRepository | 11 | 0 | 11 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.HistoryRepositories.DeleteHistoryRepository | 11 | 0 | 11 | 27 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.HistoryRepositories.GetHistoryRepositories | 7 | 3 | 10 | 28 | 70% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.HistoryRepositories.GetHistoryRepository | 7 | 3 | 10 | 28 | 70% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.HistoryRepositories.HistoryRepositoryEndpoints | 64 | 0 | 64 | 80 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.HistoryRepositories.UpdateHistoryRepository | 11 | 0 | 11 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.HistoryValues.GetHistoryRawStatistics | 11 | 0 | 11 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.HistoryValues.GetHistoryRawValues | 11 | 3 | 14 | 32 | 78.5% | | 2 | 2 | 100% | |
| pva.SuperV.Api.Routes.HistoryValues.GetHistoryStatistics | 14 | 0 | 14 | 32 | 100% | | 2 | 2 | 100% | |
| pva.SuperV.Api.Routes.HistoryValues.GetHistoryValues | 11 | 3 | 14 | 32 | 78.5% | | 2 | 2 | 100% | |
| pva.SuperV.Api.Routes.HistoryValues.HistoryValuesEndpoints | 56 | 0 | 56 | 70 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Instances.CreateInstance | 10 | 0 | 10 | 27 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Instances.DeleteInstance | 11 | 0 | 11 | 26 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Instances.GetInstance | 7 | 3 | 10 | 27 | 70% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Instances.GetInstanceField | 7 | 3 | 10 | 27 | 70% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Instances.GetInstances | 7 | 3 | 10 | 27 | 70% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Instances.InstancesEndpoints | 91 | 0 | 91 | 112 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Instances.SearchInstances | 4 | 6 | 10 | 28 | 40% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Instances.UpdateInstanceFieldValue | 7 | 3 | 10 | 27 | 70% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Projects.BuildProject | 8 | 6 | 14 | 31 | 57.1% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Projects.CreateProject | 5 | 3 | 8 | 24 | 62.5% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Projects.CreateProjectFromRunnable | 8 | 0 | 8 | 24 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Projects.GetProject | 7 | 3 | 10 | 27 | 70% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Projects.GetProjects | 4 | 3 | 7 | 23 | 57.1% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Projects.GetTopicNames | 5 | 9 | 14 | 30 | 35.7% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Projects.LoadProjectFromDefinitions | 6 | 3 | 9 | 26 | 66.6% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Projects.LoadProjectInstances | 12 | 0 | 12 | 29 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Projects.ProjectEndpoints | 133 | 0 | 133 | 159 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Projects.SaveProjectDefinitions | 12 | 5 | 17 | 32 | 70.5% | | 1 | 2 | 50% | |
| pva.SuperV.Api.Routes.Projects.SaveProjectInstances | 15 | 2 | 17 | 32 | 88.2% | | 1 | 2 | 50% | |
| pva.SuperV.Api.Routes.Projects.SearchProjects | 5 | 3 | 8 | 25 | 62.5% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Projects.UnloadProject | 7 | 4 | 11 | 27 | 63.6% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Projects.UpdateProject | 4 | 6 | 10 | 27 | 40% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Scripts.CreateScript | 11 | 0 | 11 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Scripts.DeleteScript | 11 | 0 | 11 | 27 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Scripts.GetScript | 7 | 3 | 10 | 27 | 70% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Scripts.GetScripts | 7 | 3 | 10 | 27 | 70% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Scripts.ScriptEndpoints | 64 | 0 | 64 | 81 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Routes.Scripts.UpdateScript | 11 | 0 | 11 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Services.BaseService | 50 | 2 | 52 | 87 | 96.1% | | 14 | 16 | 87.5% | |
| pva.SuperV.Api.Services.Classes.ClassService | 58 | 4 | 62 | 96 | 93.5% | | 7 | 12 | 58.3% | |
| pva.SuperV.Api.Services.FieldDefinitions.FieldDefinitionService | 78 | 14 | 92 | 134 | 84.7% | | 11 | 16 | 68.7% | |
| pva.SuperV.Api.Services.FieldFormatters.FieldFormatterService | 78 | 4 | 82 | 123 | 95.1% | | 13 | 16 | 81.2% | |
| pva.SuperV.Api.Services.FieldProcessings.FieldProcessingService | 51 | 3 | 54 | 83 | 94.4% | | 4 | 8 | 50% | |
| pva.SuperV.Api.Services.History.HistoryValuesService | 90 | 4 | 94 | 136 | 95.7% | | 6 | 12 | 50% | |
| pva.SuperV.Api.Services.HistoryRepositories.HistoryRepositoryService | 35 | 13 | 48 | 78 | 72.9% | | 3 | 8 | 37.5% | |
| pva.SuperV.Api.Services.Instances.FieldValueService | 16 | 0 | 16 | 34 | 100% | | 0 | 0 | | |
| pva.SuperV.Api.Services.Instances.InstanceService | 79 | 14 | 93 | 131 | 84.9% | | 18 | 24 | 75% | |
| pva.SuperV.Api.Services.Projects.ProjectService | 102 | 11 | 113 | 163 | 90.2% | | 10 | 14 | 71.4% | |
| pva.SuperV.Api.Services.Scripts.ScriptService | 43 | 3 | 46 | 75 | 93.4% | | 5 | 8 | 62.5% | |
| pva.SuperV.Api.WebApiProgram | 78 | 10 | 88 | 218 | 88.6% | | 0 | 0 | | |
| pva.SuperV.Engine | 2075 | 150 | 2225 | 5269 | 93.2% | | 481 | 628 | 76.5% | |
| pva.SuperV.Engine.Class | 109 | 7 | 116 | 244 | 93.9% | | 21 | 28 | 75% | |
| pva.SuperV.Engine.Exceptions.BadHistoryIntervalException | 3 | 0 | 3 | 29 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.Exceptions.BadHistoryStartTimeException | 3 | 0 | 3 | 29 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.Exceptions.EntityAlreadyExistException | 3 | 0 | 3 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.Exceptions.EntityInUseException | 3 | 0 | 3 | 29 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.Exceptions.FieldUsedInOtherProcessingException | 6 | 0 | 6 | 26 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.Exceptions.InvalidIdentifierNameException | 3 | 0 | 3 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.Exceptions.InvalidTypeForFormatterException | 3 | 0 | 3 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.Exceptions.MixedHistoryProcessingException | 0 | 3 | 3 | 22 | 0% | | 0 | 0 | | |
| pva.SuperV.Engine.Exceptions.NoHistoryStorageEngineException | 3 | 0 | 3 | 23 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.Exceptions.ScriptSyntaxErrorException | 3 | 0 | 3 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.Exceptions.StringConversionException | 6 | 0 | 6 | 33 | 100% | | 1 | 2 | 50% | |
| pva.SuperV.Engine.Exceptions.SuperVException | 3 | 0 | 3 | 22 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.Exceptions.UnhandledFieldTypeException | 3 | 0 | 3 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.Exceptions.UnhandledHistoryFieldTypeException | 3 | 0 | 3 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.Exceptions.UnhandledMappingException | 0 | 3 | 3 | 27 | 0% | | 0 | 0 | | |
| pva.SuperV.Engine.Exceptions.UnknownEntityException | 3 | 0 | 3 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.Exceptions.WrongFieldTypeException | 3 | 0 | 3 | 28 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.Field<T> | 63 | 3 | 66 | 186 | 95.4% | | 19 | 26 | 73% | |
| pva.SuperV.Engine.FieldDefinition<T> | 56 | 0 | 56 | 172 | 100% | | 19 | 22 | 86.3% | |
| pva.SuperV.Engine.FieldFormatters.EnumFormatter | 52 | 5 | 57 | 123 | 91.2% | | 9 | 12 | 75% | |
| pva.SuperV.Engine.FieldFormatters.FieldFormatter | 20 | 0 | 20 | 75 | 100% | | 2 | 2 | 100% | |
| pva.SuperV.Engine.FieldValueSetter | 60 | 1 | 61 | 100 | 98.3% | | 32 | 36 | 88.8% | |
| pva.SuperV.Engine.HistoryRetrieval.HistoryRow | 136 | 25 | 161 | 226 | 84.4% | | 53 | 104 | 50.9% | |
| pva.SuperV.Engine.HistoryRetrieval.HistoryStatisticField | 1 | 0 | 1 | 6 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.HistoryRetrieval.HistoryStatisticFieldName | 1 | 0 | 1 | 6 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.HistoryRetrieval.HistoryStatisticRow | 4 | 0 | 4 | 32 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.HistoryRetrieval.HistoryStatisticTimeRange | 1 | 0 | 1 | 6 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.HistoryRetrieval.HistoryTimeRange | 1 | 0 | 1 | 4 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.HistoryStorage.HistoryRepository | 12 | 2 | 14 | 76 | 85.7% | | 2 | 4 | 50% | |
| pva.SuperV.Engine.HistoryStorage.HistoryStorageEngineFactory | 12 | 1 | 13 | 38 | 92.3% | | 5 | 6 | 83.3% | |
| pva.SuperV.Engine.HistoryStorage.InstanceTimeSerieParameters | 1 | 0 | 1 | 6 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.HistoryStorage.NullHistoryStorageEngine | 14 | 8 | 22 | 108 | 63.6% | | 0 | 0 | | |
| pva.SuperV.Engine.HistoryStorage.TDengineHistoryStorage | 183 | 28 | 211 | 382 | 86.7% | | 39 | 46 | 84.7% | |
| pva.SuperV.Engine.IdentifierValidation | 7 | 0 | 7 | 56 | 100% | | 3 | 4 | 75% | |
| pva.SuperV.Engine.Instance | 23 | 0 | 23 | 85 | 100% | | 4 | 4 | 100% | |
| pva.SuperV.Engine.JsonConverters.FieldDefinitionJsonConverter | 60 | 2 | 62 | 131 | 96.7% | | 22 | 24 | 91.6% | |
| pva.SuperV.Engine.JsonConverters.FieldValueProcessingJsonConverter | 68 | 1 | 69 | 134 | 98.5% | | 10 | 12 | 83.3% | |
| pva.SuperV.Engine.JsonConverters.InstanceJsonConverter | 72 | 6 | 78 | 145 | 92.3% | | 19 | 26 | 73% | |
| pva.SuperV.Engine.JsonConverters.JsonHelpers | 17 | 4 | 21 | 47 | 80.9% | | 4 | 6 | 66.6% | |
| pva.SuperV.Engine.Processing.AlarmStateProcessing<T> | 91 | 2 | 93 | 240 | 97.8% | | 44 | 54 | 81.4% | |
| pva.SuperV.Engine.Processing.FieldReference | 3 | 0 | 3 | 19 | 100% | | 4 | 4 | 100% | |
| pva.SuperV.Engine.Processing.FieldValueChangedEvent | 3 | 2 | 5 | 8 | 60% | | 0 | 0 | | |
| pva.SuperV.Engine.Processing.FieldValueProcessing<T> | 34 | 3 | 37 | 141 | 91.8% | | 6 | 8 | 75% | |
| pva.SuperV.Engine.Processing.HistorizationProcessing<T> | 77 | 9 | 86 | 176 | 89.5% | | 21 | 34 | 61.7% | |
| pva.SuperV.Engine.Processing.ScriptBase | 28 | 4 | 32 | 97 | 87.5% | | 7 | 8 | 87.5% | |
| pva.SuperV.Engine.Processing.ScriptDefinition | 30 | 0 | 30 | 84 | 100% | | 2 | 2 | 100% | |
| pva.SuperV.Engine.Processing.ScriptParser | 66 | 0 | 66 | 101 | 100% | | 13 | 14 | 92.8% | |
| pva.SuperV.Engine.Project | 147 | 2 | 149 | 404 | 98.6% | | 28 | 28 | 100% | |
| pva.SuperV.Engine.ProjectAssemblyLoader | 3 | 0 | 3 | 33 | 100% | | 0 | 0 | | |
| pva.SuperV.Engine.ProjectBuilder | 54 | 5 | 59 | 95 | 91.5% | | 3 | 4 | 75% | |
| pva.SuperV.Engine.ProjectStorage | 74 | 0 | 74 | 161 | 100% | | 4 | 4 | 100% | |
| pva.SuperV.Engine.RunnableProject | 260 | 11 | 271 | 476 | 95.9% | | 49 | 58 | 84.4% | |
| pva.SuperV.Engine.WipProject | 181 | 13 | 194 | 382 | 93.2% | | 36 | 46 | 78.2% | |
| pva.SuperV.Model | 11 | 0 | 11 | 17 | 100% | | 0 | 0 | | |
| pva.SuperV.Model.PagedSearchRequest | 11 | 0 | 11 | 17 | 100% | | 0 | 0 | | |
| pva.SuperV.TestContainers | 83 | 24 | 107 | 143 | 77.5% | | 17 | 22 | 77.2% | |
| pva.SuperV.TestContainers.TDengineContainer | 83 | 24 | 107 | 143 | 77.5% | | 17 | 22 | 77.2% | |