From dbfc3691505c47986f80d8994a96927414d47cd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=BCtte?= Date: Wed, 20 Dec 2023 09:30:26 +0100 Subject: [PATCH 001/102] initial implementation of new functions --- .../simona/model/participant/PvModel.scala | 22 ++++++++----------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala index 847d45e5a1..4bfb74cd24 100644 --- a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala +++ b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala @@ -405,32 +405,27 @@ final case class PvModel private ( omegaSS: Angle, omegaSR: Angle ): Option[(Angle, Angle)] = { - val thetaGInRad = thetaG.toRadians val omegaSSInRad = omegaSS.toRadians val omegaSRInRad = omegaSR.toRadians val omegaOneHour = toRadians(15d) - val omegaHalfHour = omegaOneHour / 2d val omega1InRad = omega.toRadians // requested hour val omega2InRad = omega1InRad + omegaOneHour // requested hour plus 1 hour - // (thetaG < 90°): sun is visible - // (thetaG > 90°), otherwise: sun is behind the surface -> no direct radiation if ( - thetaGInRad < toRadians(90) - // omega1 and omega2: sun has risen and has not set yet - && omega2InRad > omegaSRInRad + omegaHalfHour - && omega1InRad < omegaSSInRad - omegaHalfHour + // requested time is between sunrise and sunset (+/- one hour) + omega1InRad > omegaSRInRad - omegaOneHour + && omega1InRad < omegaSSInRad ) { val (finalOmega1, finalOmega2) = if (omega1InRad < omegaSRInRad) { // requested time earlier than sunrise - (omegaSRInRad, omegaSRInRad + omegaOneHour) - } else if (omega2InRad > omegaSSInRad) { - // sunset earlier than requested time - (omegaSSInRad - omegaOneHour, omegaSSInRad) + (omegaSRInRad, omega2InRad) + } else if (omega1InRad > omegaSSInRad - omegaOneHour) { + // requested time is less than one hour before sunset + (omega1InRad, omegaSSInRad) } else { (omega1InRad, omega2InRad) } @@ -478,6 +473,7 @@ final case class PvModel private ( val omega1InRad = omega1.toRadians val omega2InRad = omega2.toRadians + val timeFrame = (omega2 - omega1) / 15d val a = ((sin(deltaInRad) * sin(latInRad) * cos(gammaEInRad) - sin(deltaInRad) * cos(latInRad) * sin(gammaEInRad) * cos( @@ -499,7 +495,7 @@ final case class PvModel private ( // in rare cases (close to sunrise) r can become negative (although very small) val r = max(a / b, 0d) - eBeamH * r + eBeamH * r * timeFrame case None => WattHoursPerSquareMeter(0d) } } From 66cd6eb76040274dca43c9d034b5cd17684388b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=BCtte?= Date: Wed, 20 Dec 2023 09:49:01 +0100 Subject: [PATCH 002/102] noticed an error in Test --- .../groovy/edu/ie3/simona/model/participant/PvModelTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy b/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy index ade1dc2fef..7cd6ff31cd 100644 --- a/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy +++ b/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy @@ -322,7 +322,7 @@ class PvModelTest extends Specification { Angle omegaRad = Sq.create(Math.toRadians(omegaDeg), Radians$.MODULE$) //Inclination Angle of the surface Angle gammaERad = Sq.create(Math.toRadians(gammaEDeg), Radians$.MODULE$) - //Sun's azimuth + //Surface azimuth Angle alphaERad = Sq.create(Math.toRadians(alphaEDeg), Radians$.MODULE$) when: From 1c92a27ed9c19b3820289f95af8e6a1305c8ebd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=BCtte?= Date: Sun, 7 Jan 2024 13:00:33 +0100 Subject: [PATCH 003/102] attempt to fix error with wrong unit in the variable timeFrame --- src/main/scala/edu/ie3/simona/model/participant/PvModel.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala index 4bfb74cd24..e39a2d3743 100644 --- a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala +++ b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala @@ -473,7 +473,7 @@ final case class PvModel private ( val omega1InRad = omega1.toRadians val omega2InRad = omega2.toRadians - val timeFrame = (omega2 - omega1) / 15d + val timeFrame = (omega2 - omega1).toRadians * 12 / Math.PI val a = ((sin(deltaInRad) * sin(latInRad) * cos(gammaEInRad) - sin(deltaInRad) * cos(latInRad) * sin(gammaEInRad) * cos( From 684e9cd5ebc2e96800918c12550433d980ae0fda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=BCtte?= Date: Wed, 17 Jan 2024 08:21:47 +0100 Subject: [PATCH 004/102] added comment --- src/main/scala/edu/ie3/simona/model/participant/PvModel.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala index e39a2d3743..87b16091aa 100644 --- a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala +++ b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala @@ -473,7 +473,7 @@ final case class PvModel private ( val omega1InRad = omega1.toRadians val omega2InRad = omega2.toRadians - val timeFrame = (omega2 - omega1).toRadians * 12 / Math.PI + val timeFrame = (omega2 - omega1).toRadians * 12 / Math.PI // original term: (omega2 - omega1).toRadians * 180 / Math.PI / 15, since a one hour difference equals 15° val a = ((sin(deltaInRad) * sin(latInRad) * cos(gammaEInRad) - sin(deltaInRad) * cos(latInRad) * sin(gammaEInRad) * cos( From eb59fd41bc0dc7707b7c82959f0a4e071d7fc68f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=BCtte?= Date: Mon, 22 Jan 2024 21:43:35 +0100 Subject: [PATCH 005/102] fixed epsilon + testing beam radiation --- .../simona/model/participant/PvModel.scala | 7 +++--- .../model/participant/PvModelTest.groovy | 22 +++++++++++++------ 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala index 87b16091aa..538ac42da9 100644 --- a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala +++ b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala @@ -473,6 +473,7 @@ final case class PvModel private ( val omega1InRad = omega1.toRadians val omega2InRad = omega2.toRadians + // variable that accounts for cases when the integration interval is shorter than 15° (1 hour equivalent), when the time is close to sunrise or sunset val timeFrame = (omega2 - omega1).toRadians * 12 / Math.PI // original term: (omega2 - omega1).toRadians * 180 / Math.PI / 15, since a one hour difference equals 15° val a = ((sin(deltaInRad) * sin(latInRad) * cos(gammaEInRad) @@ -547,12 +548,12 @@ final case class PvModel private ( if (eDifH.value.doubleValue > 0) { // if we have diffuse radiation on horizontal surface we have to check if we have another epsilon due to clouds get the epsilon - var epsilon = ((eDifH + eBeamH) / eDifH + + var epsilon = ((eDifH + eBeamH / cos (thetaZInRad)) / eDifH + (5.535d * 1.0e-6) * pow( - thetaZInRad, + thetaZ.toDegrees, 3 )) / (1d + (5.535d * 1.0e-6) * pow( - thetaZInRad, + thetaZ.toDegrees, 3 )) diff --git a/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy b/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy index 7cd6ff31cd..5c278f4726 100644 --- a/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy +++ b/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy @@ -449,18 +449,26 @@ class PvModelTest extends Specification { expect: "- should calculate the beam contribution," + def calculatedsunsetangle = pvModel.calcSunsetAngleOmegaSS(latitudeInRad, delta) + def calculateAngleDifference(Tuple2 angles) { + def firstAngle = angles._1 + def secondAngle = angles._2 - pvModel.calcBeamRadiationOnSlopedSurface(eBeamH, omegas, delta, latitudeInRad, gammaE, alphaE) =~ Sq.create(eBeamSSol, WattHoursPerSquareMeter$.MODULE$) + return firstAngle.minus(secondAngle) + } + def timeframe = (calculateAngleDifference(omegas)).toRadians * 12 / Math.PI + def beamradiation = pvModel.calcBeamRadiationOnSlopedSurface(eBeamH, omegas, delta, latitudeInRad, gammaE, alphaE) + beamradiation =~ Sq.create(eBeamSSol, WattHoursPerSquareMeter$.MODULE$) where: "the following parameters are given" latitudeInDeg | slope | azimuth | deltaIn | omegaIn | thetaGIn || eBeamSSol - 40d | 0d | 0d | -11.6d | -37.5d | 37.0d || 67.777778d // flat surface => eBeamS = eBeamH - 40d | 60d | 0d | -11.6d | -37.5d | 37.0d || 112.84217113154841369d // 2011-02-20T09:00:00 - 40d | 60d | 0d | -11.6d | -78.0d | 75.0d || 210.97937494450755d // sunrise - 40d | 60d | 0d | -11.6d | 62.0d | 76.0d || 199.16566536224116d // sunset - 40d | 60d | 0d | -11.6d | 69.0d | 89.9d || 245.77637766673405d // sunset, cut off - 40d | 60d | 0d | -11.6d | 75.0d | 89.9d || 0d // no sun + //40d | 0d | 0d | -11.6d | -37.5d | 37.0d || 67.777778d // flat surface => eBeamS = eBeamH + //40d | 60d | 0d | -11.6d | -37.5d | 37.0d || 112.84217113154841369d // 2011-02-20T09:00:00 + //40d | 60d | 0d | -11.6d | -78.0d | 75.0d || 210.97937494450755d // sunrise + //40d | 60d | 0d | -11.6d | 62.0d | 76.0d || 199.16566536224116d // sunset + //40d | 60d | 0d | -11.6d | 69.0d | 89.9d || 245.77637766673405d // sunset, cut off + //40d | 60d | 0d | -11.6d | 75.0d | 89.9d || 0d // no sun 40d | 60d | -90.0d | -11.6d | 60.0d | 91.0d || 0d // no direct beam } From bb053895f9dd020d6b8a7f317513c4353d05e1f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=BCtte?= Date: Thu, 25 Jan 2024 10:08:35 +0100 Subject: [PATCH 006/102] testing beam and diffuse radiation --- .../simona/model/participant/PvModel.scala | 28 +++++++++++++++++-- .../model/participant/PvModelTest.groovy | 20 ++++++------- 2 files changed, 35 insertions(+), 13 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala index 538ac42da9..d799d112c7 100644 --- a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala +++ b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala @@ -455,6 +455,16 @@ final case class PvModel private ( * @return * the beam radiation on the sloped surface */ + + def calculateTimeFrame(omegas: Option[(Angle, Angle)]): Unit = { + omegas match { + case Some((omega1, omega2)) => + + (omega2 - omega1).toRadians * 12 / Math.PI + + case None => 0d + } + } private def calcBeamRadiationOnSlopedSurface( eBeamH: Irradiation, omegas: Option[(Angle, Angle)], @@ -526,6 +536,18 @@ final case class PvModel private ( * @return * the diffuse radiation on the sloped surface */ + + private def calcEpsilon(eDifH: Irradiation, eBeamH: Irradiation, thetaZ: Angle): Unit = { + ((eDifH + eBeamH) / eDifH + + (5.535d * 1.0e-6) * pow( + thetaZ.toRadians, + 3 + )) / (1d + (5.535d * 1.0e-6) * pow( + thetaZ.toRadians, + 3 + )) + } + private def calcDiffuseRadiationOnSlopedSurfacePerez( eDifH: Irradiation, eBeamH: Irradiation, @@ -548,12 +570,12 @@ final case class PvModel private ( if (eDifH.value.doubleValue > 0) { // if we have diffuse radiation on horizontal surface we have to check if we have another epsilon due to clouds get the epsilon - var epsilon = ((eDifH + eBeamH / cos (thetaZInRad)) / eDifH + + var epsilon = ((eDifH + eBeamH) / eDifH + (5.535d * 1.0e-6) * pow( - thetaZ.toDegrees, + thetaZ.toRadians, 3 )) / (1d + (5.535d * 1.0e-6) * pow( - thetaZ.toDegrees, + thetaZ.toRadians, 3 )) diff --git a/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy b/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy index 5c278f4726..bdb50484b4 100644 --- a/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy +++ b/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy @@ -450,13 +450,8 @@ class PvModelTest extends Specification { expect: "- should calculate the beam contribution," def calculatedsunsetangle = pvModel.calcSunsetAngleOmegaSS(latitudeInRad, delta) - def calculateAngleDifference(Tuple2 angles) { - def firstAngle = angles._1 - def secondAngle = angles._2 - - return firstAngle.minus(secondAngle) - } - def timeframe = (calculateAngleDifference(omegas)).toRadians * 12 / Math.PI + //def calculateAngleDifference = (omegas.get(1) - omegas.get(2)) + def timeframe = pvModel.calculateTimeFrame(omegas) def beamradiation = pvModel.calcBeamRadiationOnSlopedSurface(eBeamH, omegas, delta, latitudeInRad, gammaE, alphaE) beamradiation =~ Sq.create(eBeamSSol, WattHoursPerSquareMeter$.MODULE$) @@ -468,8 +463,8 @@ class PvModelTest extends Specification { //40d | 60d | 0d | -11.6d | -78.0d | 75.0d || 210.97937494450755d // sunrise //40d | 60d | 0d | -11.6d | 62.0d | 76.0d || 199.16566536224116d // sunset //40d | 60d | 0d | -11.6d | 69.0d | 89.9d || 245.77637766673405d // sunset, cut off - //40d | 60d | 0d | -11.6d | 75.0d | 89.9d || 0d // no sun - 40d | 60d | -90.0d | -11.6d | 60.0d | 91.0d || 0d // no direct beam + 40d | 60d | 0d | -11.6d | 75.0d | 89.9d || 0d // no sun + //40d | 60d | -90.0d | -11.6d | 60.0d | 91.0d || 0d // no direct beam } def "Calculate the estimate diffuse radiation eDifS"() { @@ -495,7 +490,12 @@ class PvModelTest extends Specification { "- should calculate the beam diffusion" // == 0,7792781569074354 MJ/m^2 - pvModel.calcDiffuseRadiationOnSlopedSurfacePerez(eDifH, eBeamH, airMass, I0Quantity, thetaZ, thetaG, gammaE) =~ Sq.create(eDifSSol, WattHoursPerSquareMeter$.MODULE$) + def epsilon = pvModel.calcEpsilon(eDifH, eBeamH, thetaZ) + + + + def diffuseradiation = pvModel.calcDiffuseRadiationOnSlopedSurfacePerez(eDifH, eBeamH, airMass, I0Quantity, thetaZ, thetaG, gammaE) + diffuseradiation =~ Sq.create(eDifSSol, WattHoursPerSquareMeter$.MODULE$) where: "the following parameters are given" thetaGIn | thetaZIn | slope | airMass | I0 || eDifSSol From e7e9bccb69e006e1d1d3cd7815a651aa332e38ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=BCtte?= Date: Fri, 26 Jan 2024 09:29:40 +0100 Subject: [PATCH 007/102] further testing --- .../simona/model/participant/PvModel.scala | 19 +++++++++++-------- .../model/participant/PvModelTest.groovy | 6 +++--- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala index d799d112c7..0afa4f1d8f 100644 --- a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala +++ b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala @@ -456,11 +456,11 @@ final case class PvModel private ( * the beam radiation on the sloped surface */ - def calculateTimeFrame(omegas: Option[(Angle, Angle)]): Unit = { + def calculateTimeFrame(omegas: Option[(Angle, Angle)]): Double = { omegas match { case Some((omega1, omega2)) => - (omega2 - omega1).toRadians * 12 / Math.PI + (omega2 - omega1).toDegrees / 15 case None => 0d } @@ -471,7 +471,8 @@ final case class PvModel private ( delta: Angle, latitude: Angle, gammaE: Angle, - alphaE: Angle + alphaE: Angle, + duration: Time ): Irradiation = { omegas match { @@ -484,7 +485,7 @@ final case class PvModel private ( val omega1InRad = omega1.toRadians val omega2InRad = omega2.toRadians // variable that accounts for cases when the integration interval is shorter than 15° (1 hour equivalent), when the time is close to sunrise or sunset - val timeFrame = (omega2 - omega1).toRadians * 12 / Math.PI // original term: (omega2 - omega1).toRadians * 180 / Math.PI / 15, since a one hour difference equals 15° + val timeFrame = (omega2 - omega1).toDegrees * duration.toHours // original term: (omega2 - omega1).toRadians * 180 / Math.PI / 15, since a one hour difference equals 15° val a = ((sin(deltaInRad) * sin(latInRad) * cos(gammaEInRad) - sin(deltaInRad) * cos(latInRad) * sin(gammaEInRad) * cos( @@ -537,13 +538,15 @@ final case class PvModel private ( * the diffuse radiation on the sloped surface */ - private def calcEpsilon(eDifH: Irradiation, eBeamH: Irradiation, thetaZ: Angle): Unit = { - ((eDifH + eBeamH) / eDifH + + private def calcEpsilon(eDifH: Irradiation, eBeamH: Irradiation, thetaZ: Angle): Double = { + val thetaZInRad = thetaZ.toRadians + + ((eDifH + eBeamH / cos(thetaZInRad)) / eDifH + (5.535d * 1.0e-6) * pow( - thetaZ.toRadians, + thetaZ.toDegrees, 3 )) / (1d + (5.535d * 1.0e-6) * pow( - thetaZ.toRadians, + thetaZ.toDegrees, 3 )) } diff --git a/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy b/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy index bdb50484b4..3551298f9e 100644 --- a/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy +++ b/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy @@ -450,7 +450,7 @@ class PvModelTest extends Specification { expect: "- should calculate the beam contribution," def calculatedsunsetangle = pvModel.calcSunsetAngleOmegaSS(latitudeInRad, delta) - //def calculateAngleDifference = (omegas.get(1) - omegas.get(2)) + def calculateAngleDifference = (omegas.get()._1() - omegas.get()._2()) def timeframe = pvModel.calculateTimeFrame(omegas) def beamradiation = pvModel.calcBeamRadiationOnSlopedSurface(eBeamH, omegas, delta, latitudeInRad, gammaE, alphaE) beamradiation =~ Sq.create(eBeamSSol, WattHoursPerSquareMeter$.MODULE$) @@ -462,8 +462,8 @@ class PvModelTest extends Specification { //40d | 60d | 0d | -11.6d | -37.5d | 37.0d || 112.84217113154841369d // 2011-02-20T09:00:00 //40d | 60d | 0d | -11.6d | -78.0d | 75.0d || 210.97937494450755d // sunrise //40d | 60d | 0d | -11.6d | 62.0d | 76.0d || 199.16566536224116d // sunset - //40d | 60d | 0d | -11.6d | 69.0d | 89.9d || 245.77637766673405d // sunset, cut off - 40d | 60d | 0d | -11.6d | 75.0d | 89.9d || 0d // no sun + 40d | 60d | 0d | -11.6d | 69.0d | 89.9d || 245.77637766673405d // sunset, cut off + //40d | 60d | 0d | -11.6d | 75.0d | 89.9d || 0d // no sun //40d | 60d | -90.0d | -11.6d | 60.0d | 91.0d || 0d // no direct beam } From bd362d9e9ebd25f90372f07db3c41632714aa80b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=BCtte?= Date: Mon, 29 Jan 2024 08:05:34 +0100 Subject: [PATCH 008/102] testing --- .../simona/model/participant/PvModel.scala | 24 +++++++++++++++++-- .../model/participant/PvModelTest.groovy | 4 ++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala index 0afa4f1d8f..75e446ea70 100644 --- a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala +++ b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala @@ -110,7 +110,8 @@ final case class PvModel private ( delta, lat, gammaE, - alphaE + alphaE, + duration ) // === Diffuse Radiation Parameters ===// @@ -485,7 +486,7 @@ final case class PvModel private ( val omega1InRad = omega1.toRadians val omega2InRad = omega2.toRadians // variable that accounts for cases when the integration interval is shorter than 15° (1 hour equivalent), when the time is close to sunrise or sunset - val timeFrame = (omega2 - omega1).toDegrees * duration.toHours // original term: (omega2 - omega1).toRadians * 180 / Math.PI / 15, since a one hour difference equals 15° + val timeFrame = (omega2 - omega1).toDegrees / 15d / duration.toHours // original term: (omega2 - omega1).toRadians * 180 / Math.PI / 15, since a one hour difference equals 15° val a = ((sin(deltaInRad) * sin(latInRad) * cos(gammaEInRad) - sin(deltaInRad) * cos(latInRad) * sin(gammaEInRad) * cos( @@ -551,6 +552,25 @@ final case class PvModel private ( )) } + private def calcEpsilonOld(eDifH: Irradiation, eBeamH: Irradiation, thetaZ: Angle): Double = { + val thetaZInRad = thetaZ.toRadians + + ((eDifH + eBeamH) / eDifH + + (5.535d * 1.0e-6) * pow( + thetaZ.toRadians, + 3 + )) / (1d + (5.535d * 1.0e-6) * pow( + thetaZ.toRadians, + 3 + )) + } + + private def firstFraction(eDifH: Irradiation, eBeamH: Irradiation, thetaZ: Angle): Double = { + + (eDifH + eBeamH) / eDifH + } + + private def calcDiffuseRadiationOnSlopedSurfacePerez( eDifH: Irradiation, eBeamH: Irradiation, diff --git a/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy b/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy index 3551298f9e..c8b8a1779a 100644 --- a/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy +++ b/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy @@ -491,8 +491,8 @@ class PvModelTest extends Specification { // == 0,7792781569074354 MJ/m^2 def epsilon = pvModel.calcEpsilon(eDifH, eBeamH, thetaZ) - - + def epsilonOld = pvModel.calcEpsilonOld(eDifH, eBeamH, thetaZ) + def firstFraction = pvModel.firstFraction(eDifH, eBeamH, thetaZ) def diffuseradiation = pvModel.calcDiffuseRadiationOnSlopedSurfacePerez(eDifH, eBeamH, airMass, I0Quantity, thetaZ, thetaG, gammaE) diffuseradiation =~ Sq.create(eDifSSol, WattHoursPerSquareMeter$.MODULE$) From 8fbf117a4582abf148763ada5dc215f7ee5e0409 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=BCtte?= Date: Mon, 29 Jan 2024 08:12:40 +0100 Subject: [PATCH 009/102] noticed error in CalcExtraterrestrialRadiation --- src/main/scala/edu/ie3/simona/model/participant/PvModel.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala index 75e446ea70..136c9e69f2 100644 --- a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala +++ b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala @@ -334,7 +334,7 @@ final case class PvModel private ( val e0 = 1.000110 + 0.034221 * cos(jInRad) + 0.001280 * sin(jInRad) + - 0.000719 * cos(2d * jInRad) + + 0.00719 * cos(2d * jInRad) + 0.000077 * sin(2d * jInRad) // solar constant in W/m2 From 993b0fd190b9187a994e59f50896573fa2f2343b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=BCtte?= Date: Mon, 29 Jan 2024 09:21:20 +0100 Subject: [PATCH 010/102] adjusted values for extraterrestrial radiation in test function --- .../edu/ie3/simona/model/participant/PvModelTest.groovy | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy b/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy index c8b8a1779a..5b394809e7 100644 --- a/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy +++ b/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy @@ -300,9 +300,9 @@ class PvModelTest extends Specification { where: j || I0Sol - 0d || 1414.91335d // Jan 1st - 2.943629280897834d || 1322.494291080537598d // Jun 21st - 4.52733626243351d || 1355.944773587800003d // Sep 21st + 0d || 1423.7592070000003d // Jan 1st + 2.943629280897834d || 1330.655828592125d // Jun 21st + 4.52733626243351d || 1347.6978765254157d // Sep 21st } def "Calculate the angle of incidence thetaG"() { From 8e8549ea5d2edfc813ec6c1cbe7aa2cd6ff0b811 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=BCtte?= Date: Wed, 7 Feb 2024 15:19:04 +0100 Subject: [PATCH 011/102] found error in GroovyTest (wrong data) --- .../simona/model/participant/PvModel.scala | 31 +++++-------------- .../model/participant/PvModelTest.groovy | 8 ++--- 2 files changed, 12 insertions(+), 27 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala index 136c9e69f2..34ca829923 100644 --- a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala +++ b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala @@ -542,27 +542,15 @@ final case class PvModel private ( private def calcEpsilon(eDifH: Irradiation, eBeamH: Irradiation, thetaZ: Angle): Double = { val thetaZInRad = thetaZ.toRadians - ((eDifH + eBeamH / cos(thetaZInRad)) / eDifH + - (5.535d * 1.0e-6) * pow( - thetaZ.toDegrees, - 3 - )) / (1d + (5.535d * 1.0e-6) * pow( - thetaZ.toDegrees, - 3 - )) + ((eDifH + eBeamH / cos(thetaZInRad)) / eDifH +(5.535d * 1.0e-6) * pow(thetaZ.toDegrees, 3)) / + (1d + (5.535d * 1.0e-6) * pow(thetaZ.toDegrees,3)) } private def calcEpsilonOld(eDifH: Irradiation, eBeamH: Irradiation, thetaZ: Angle): Double = { val thetaZInRad = thetaZ.toRadians - ((eDifH + eBeamH) / eDifH + - (5.535d * 1.0e-6) * pow( - thetaZ.toRadians, - 3 - )) / (1d + (5.535d * 1.0e-6) * pow( - thetaZ.toRadians, - 3 - )) + ((eDifH + eBeamH) / eDifH +(5.535d * 1.0e-6) * pow(thetaZ.toRadians, 3)) / + (1d + (5.535d * 1.0e-6) * pow(thetaZ.toRadians, 3)) } private def firstFraction(eDifH: Irradiation, eBeamH: Irradiation, thetaZ: Angle): Double = { @@ -593,12 +581,12 @@ final case class PvModel private ( if (eDifH.value.doubleValue > 0) { // if we have diffuse radiation on horizontal surface we have to check if we have another epsilon due to clouds get the epsilon - var epsilon = ((eDifH + eBeamH) / eDifH + + var epsilon = ((eDifH + eBeamH / cos(thetaZInRad)) / eDifH + (5.535d * 1.0e-6) * pow( - thetaZ.toRadians, + thetaZ.toDegrees, 3 )) / (1d + (5.535d * 1.0e-6) * pow( - thetaZ.toRadians, + thetaZ.toDegrees, 3 )) @@ -635,10 +623,7 @@ final case class PvModel private ( // calculate the f_ij components based on the epsilon bin val f11 = -0.0161 * pow(x, 3) + 0.1840 * pow(x, 2) - 0.3806 * x + 0.2324 - val f12 = 0.0134 * pow(x, 4) - 0.1938 * pow(x, 3) + 0.8410 * pow( - x, - 2 - ) - 1.4018 * x + 1.3579 + val f12 = 0.0134 * pow(x, 4) - 0.1938 * pow(x, 3) + 0.8410 * pow(x, 2) - 1.4018 * x + 1.3579 val f13 = 0.0032 * pow(x, 3) - 0.0280 * pow(x, 2) - 0.0056 * x - 0.0385 val f21 = -0.0048 * pow(x, 3) + 0.0536 * pow(x, 2) - 0.1049 * x + 0.0034 val f22 = 0.0012 * pow(x, 3) - 0.0067 * pow(x, 2) + 0.0091 * x - 0.0269 diff --git a/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy b/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy index 5b394809e7..71f8afb7fb 100644 --- a/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy +++ b/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy @@ -476,9 +476,9 @@ class PvModelTest extends Specification { // 0.244 MJ/m^2 = 67.777778 Wh/m^2 //Beam Radiation on horizontal surface Irradiation eBeamH = Sq.create(67.777778d, WattHoursPerSquareMeter$.MODULE$) - // 0.769 MJ/m^2 = 213,61111 Wh/m^2 + // 0.796 MJ/m^2 = 221,111288 Wh/m^2 //Diffuse beam Radiation on horizontal surface - Irradiation eDifH = Sq.create(213.61111d, WattHoursPerSquareMeter$.MODULE$) + Irradiation eDifH = Sq.create(221.111288d, WattHoursPerSquareMeter$.MODULE$) //Incidence Angle Angle thetaG = Sq.create(Math.toRadians(thetaGIn), Radians$.MODULE$) //Zenith Angle @@ -490,7 +490,7 @@ class PvModelTest extends Specification { "- should calculate the beam diffusion" // == 0,7792781569074354 MJ/m^2 - def epsilon = pvModel.calcEpsilon(eDifH, eBeamH, thetaZ) + def epsilon = pvModel.calcEpsilon(eDifH, eBeamH, thetaZ) // epsilon(Duffie) = 1,28451252 def epsilonOld = pvModel.calcEpsilonOld(eDifH, eBeamH, thetaZ) def firstFraction = pvModel.firstFraction(eDifH, eBeamH, thetaZ) @@ -499,7 +499,7 @@ class PvModelTest extends Specification { where: "the following parameters are given" thetaGIn | thetaZIn | slope | airMass | I0 || eDifSSol - 37.0 | 62.2 | 60 | 2.13873080095658d | 1399.0077631849722d || 216.46615469650982d + 37.0 | 62.2 | 60 | 2.144d | 1395.8445d || 220.83351d } def "Calculate the ground reflection eRefS"() { From 761e8eb22879b9055f62337e12403967354d1598 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=BCtte?= Date: Tue, 5 Mar 2024 17:26:23 +0100 Subject: [PATCH 012/102] spotless apply --- .../simona/model/participant/PvModel.scala | 39 +++++++++++++------ 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala index fb8023b40a..fe2a830d68 100644 --- a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala +++ b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala @@ -464,7 +464,6 @@ final case class PvModel private ( def calculateTimeFrame(omegas: Option[(Angle, Angle)]): Double = { omegas match { case Some((omega1, omega2)) => - (omega2 - omega1).toDegrees / 15 case None => 0d @@ -490,7 +489,8 @@ final case class PvModel private ( val omega1InRad = omega1.toRadians val omega2InRad = omega2.toRadians // variable that accounts for cases when the integration interval is shorter than 15° (1 hour equivalent), when the time is close to sunrise or sunset - val timeFrame = (omega2 - omega1).toDegrees / 15d / duration.toHours // original term: (omega2 - omega1).toRadians * 180 / Math.PI / 15, since a one hour difference equals 15° + val timeFrame = + (omega2 - omega1).toDegrees / 15d / duration.toHours // original term: (omega2 - omega1).toRadians * 180 / Math.PI / 15, since a one hour difference equals 15° val a = ((sin(deltaInRad) * sin(latInRad) * cos(gammaEInRad) - sin(deltaInRad) * cos(latInRad) * sin(gammaEInRad) * cos( @@ -543,26 +543,40 @@ final case class PvModel private ( * the diffuse radiation on the sloped surface */ - private def calcEpsilon(eDifH: Irradiation, eBeamH: Irradiation, thetaZ: Angle): Double = { + private def calcEpsilon( + eDifH: Irradiation, + eBeamH: Irradiation, + thetaZ: Angle, + ): Double = { val thetaZInRad = thetaZ.toRadians - ((eDifH + eBeamH / cos(thetaZInRad)) / eDifH +(5.535d * 1.0e-6) * pow(thetaZ.toDegrees, 3)) / - (1d + (5.535d * 1.0e-6) * pow(thetaZ.toDegrees,3)) + ((eDifH + eBeamH / cos(thetaZInRad)) / eDifH + (5.535d * 1.0e-6) * pow( + thetaZ.toDegrees, + 3, + )) / + (1d + (5.535d * 1.0e-6) * pow(thetaZ.toDegrees, 3)) } - private def calcEpsilonOld(eDifH: Irradiation, eBeamH: Irradiation, thetaZ: Angle): Double = { + private def calcEpsilonOld( + eDifH: Irradiation, + eBeamH: Irradiation, + thetaZ: Angle, + ): Double = { val thetaZInRad = thetaZ.toRadians - ((eDifH + eBeamH) / eDifH +(5.535d * 1.0e-6) * pow(thetaZ.toRadians, 3)) / - (1d + (5.535d * 1.0e-6) * pow(thetaZ.toRadians, 3)) + ((eDifH + eBeamH) / eDifH + (5.535d * 1.0e-6) * pow(thetaZ.toRadians, 3)) / + (1d + (5.535d * 1.0e-6) * pow(thetaZ.toRadians, 3)) } - private def firstFraction(eDifH: Irradiation, eBeamH: Irradiation, thetaZ: Angle): Double = { + private def firstFraction( + eDifH: Irradiation, + eBeamH: Irradiation, + thetaZ: Angle, + ): Double = { (eDifH + eBeamH) / eDifH } - private def calcDiffuseRadiationOnSlopedSurfacePerez( eDifH: Irradiation, eBeamH: Irradiation, @@ -627,7 +641,10 @@ final case class PvModel private ( // calculate the f_ij components based on the epsilon bin val f11 = -0.0161 * pow(x, 3) + 0.1840 * pow(x, 2) - 0.3806 * x + 0.2324 - val f12 = 0.0134 * pow(x, 4) - 0.1938 * pow(x, 3) + 0.8410 * pow(x, 2) - 1.4018 * x + 1.3579 + val f12 = 0.0134 * pow(x, 4) - 0.1938 * pow(x, 3) + 0.8410 * pow( + x, + 2, + ) - 1.4018 * x + 1.3579 val f13 = 0.0032 * pow(x, 3) - 0.0280 * pow(x, 2) - 0.0056 * x - 0.0385 val f21 = -0.0048 * pow(x, 3) + 0.0536 * pow(x, 2) - 0.1049 * x + 0.0034 val f22 = 0.0012 * pow(x, 3) - 0.0067 * pow(x, 2) + 0.0091 * x - 0.0269 From e725f06bf049d47fb26bacbb4058c67d2221b1b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=BCtte?= Date: Sat, 30 Mar 2024 09:01:30 +0100 Subject: [PATCH 013/102] added sources in documentation --- docs/readthedocs/models/pv_model.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/readthedocs/models/pv_model.md b/docs/readthedocs/models/pv_model.md index 8ddb822c0b..6ddd75fd7e 100644 --- a/docs/readthedocs/models/pv_model.md +++ b/docs/readthedocs/models/pv_model.md @@ -240,6 +240,8 @@ $$ ```{eval-rst} * :cite:ts:`Zheng.2017` p. 53, formula 2.3b * :cite:ts:`Iqbal.1983` +* :cite:ts:`Spencer.1971` +* :cite:ts:`Duffie.2013` ``` ### Beam Radiation on Sloped Surface From b755427b0159a11fdd0e8664bcc71a69ea33d9ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=BCtte?= Date: Sat, 30 Mar 2024 09:09:55 +0100 Subject: [PATCH 014/102] angle in degrees documentation --- docs/readthedocs/models/pv_model.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/readthedocs/models/pv_model.md b/docs/readthedocs/models/pv_model.md index 6ddd75fd7e..8eb4ce2da2 100644 --- a/docs/readthedocs/models/pv_model.md +++ b/docs/readthedocs/models/pv_model.md @@ -312,6 +312,8 @@ $$ \epsilon = \frac{\frac{E_{dif,H} + E_{beam,H}}{E_{dif,H}} + 5.535 \cdot 10^{-6} \cdot \theta_{z}^3}{1 + 5.535 \cdot 10^{-6} \cdot \theta_{z}^3} $$ +where the angle $theta_{z}$ is in **degrees**. + Calculating a brightness index $$ @@ -414,6 +416,7 @@ $$ * :cite:ts:`Perez.1987` * :cite:ts:`Perez.1990` * :cite:ts:`Myers.2017` p. 96f +* :cite:ts:`Duffie.2013` p. 95f ``` ### Reflected Radiation on Sloped Surface From ac0828e9db83b420c5c3d8a503763398f5e3f5b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=BCtte?= Date: Sat, 30 Mar 2024 11:11:03 +0100 Subject: [PATCH 015/102] updated links in library --- docs/readthedocs/_static/bibliography/bibtexAll.bib | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/readthedocs/_static/bibliography/bibtexAll.bib b/docs/readthedocs/_static/bibliography/bibtexAll.bib index e3a6a3f045..8899037ad0 100644 --- a/docs/readthedocs/_static/bibliography/bibtexAll.bib +++ b/docs/readthedocs/_static/bibliography/bibtexAll.bib @@ -15,7 +15,7 @@ @Article{Maleki.2017 @MISC{Itaca_Sun, author = {Itacanet}, title = {The Sun As A Source Of Energy}, -howpublished={\url{https://www.itacanet.org/the-sun-as-a-source-of-energy/part-3-calculating-solar-angles/}} +howpublished={\url{https://de.scribd.com/document/455342846/Part-3-Calculating-Solar-Angles-ITACA}} } @article{Spencer.1971, @@ -73,7 +73,7 @@ @book{Quaschning.2013 author = {Quaschning, Volker}, year = {2013}, title = {Regenerative Energiesysteme: Technologie; Berechnung; Simulation}, - url = {http://ebooks.ciando.com/book/index.cfm/bok_id/471802}, + url = {https://www.hanser-elibrary.com/doi/book/10.3139/9783446435711}, price = {39.99 EUR}, address = {M{\"u}nchen}, edition = {8., aktualisierte und erw. Aufl.}, @@ -92,7 +92,8 @@ @Inbook{Schoenberg.1929 pages={1--280}, abstract={Die ersten Versuche, Messungen der Lichtst{\"a}rke der Himmelsk{\"o}rper auszuf{\"u}hren, um auf diesem Wege Aufschl{\"u}sse {\"u}ber ihre Beschaffenheit zu erhalten, fallen in die Zeit jenes gewaltigen Aufschwungs, welchen die Optik durch die Arbeiten von Newton und Huygens am Ende des siebzehnten und zu Beginn des achtzehnten Jahrhunderts erfahren hatte. Schon Huygens1 selbst versuchte die Helligkeit des Sirius mit derjenigen der Sonne zu vergleichen, indem er das Sonnenlicht durch eine kleine {\"O}ffnung im verschlossenen Ende eines langen Rohres abschw{\"a}chte. Der schwedische Physiker Celsius2 suchte nach einem Gesetze der Lichtabnahme beleuchteter Fl{\"a}chen, doch waren seine Schlu{\ss}folgerungen, ebenso wie diejenigen von Huygens, infolge der Unzul{\"a}nglichkeit der angewandten Methoden nicht stichhaltig. Au{\ss}er der Formel der Lichtabnahme mit dem Quadrate der Entfernung besa{\ss} die Physik noch keinerlei R{\"u}stzeug an strengen Definitionen und Gesetzen und keinerlei Apparate zur Messung der Lichtst{\"a}rken. Buffon3 versuchte den Verlust zu bestimmen, den das Sonnenlicht bei Reflexion an gl{\"a}sernen Spiegeln erleidet. Aber erst die gro{\ss} angelegten Arbeiten von Pierre Bouguer4 5 (1698--1758) und Johann Heinrich Lambert (1728--1777) schufen die Grundlagen der Photometrie. In systematischer experimenteller Arbeit, die durch sinnreiche Theorien erl{\"a}utert wird, behandelt Bouguer ihre Hauptprobleme: die Absorption des Lichtes bei der Reflexion und beim Durchgang durch feste und fl{\"u}ssige K{\"o}rper sowie die diffuse Reflexion an matten Fl{\"a}chen und beim Durchgange durch tr{\"u}be Medien.}, isbn={978-3-642-90703-6}, -doi={10.1007/978-3} +doi={10.1007/978-3}, +url = {https://link.springer.com/chapter/10.1007/978-3-642-90703-6_1} } @MISC{WikiAirMass, @@ -122,7 +123,7 @@ @book{Iqbal.1983 author = {Iqbal, Muhammad}, year = {1983}, title = {An Introduction To Solar Radiation}, - url = {http://site.ebrary.com/lib/alltitles/docDetail.action?docID=10678925}, + url = {https://books.google.de/books/about/An_Introduction_To_Solar_Radiation.html?id=3_qWce_mbPsC&redir_esc=y}, address = {Oxford}, publisher = {{Elsevier Science}}, isbn = {9780123737502} From 8ee3b77bb1c97b5105d8d102ea1bb6331a70b548 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Wed, 21 Aug 2024 19:28:16 +0200 Subject: [PATCH 016/102] refactor ThermalEnergyDemand --- .../simona/model/thermal/ThermalGrid.scala | 20 +++----- .../model/thermal/ThermalGridSpec.scala | 47 ++++++++++++++----- 2 files changed, 43 insertions(+), 24 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala b/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala index 85b41b35ff..c38a72d285 100644 --- a/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala +++ b/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala @@ -9,15 +9,10 @@ package edu.ie3.simona.model.thermal import com.typesafe.scalalogging.LazyLogging import edu.ie3.datamodel.models.input.thermal.CylindricalStorageInput import edu.ie3.datamodel.models.result.ResultEntity -import edu.ie3.datamodel.models.result.thermal.{ - CylindricalStorageResult, - ThermalHouseResult, -} +import edu.ie3.datamodel.models.result.thermal.{CylindricalStorageResult, ThermalHouseResult} +import edu.ie3.simona.exceptions.InvalidParameterException import edu.ie3.simona.exceptions.agent.InconsistentStateException -import edu.ie3.simona.model.thermal.ThermalGrid.{ - ThermalEnergyDemand, - ThermalGridState, -} +import edu.ie3.simona.model.thermal.ThermalGrid.{ThermalEnergyDemand, ThermalGridState} import edu.ie3.simona.model.thermal.ThermalHouse.ThermalHouseState import edu.ie3.simona.model.thermal.ThermalStorage.ThermalStorageState import edu.ie3.simona.util.TickUtil.TickLong @@ -483,13 +478,12 @@ object ThermalGrid { def hasRequiredDemand: Boolean = required > zeroMWH - def hasAdditionalDemand: Boolean = possible > required + def hasAdditionalDemand: Boolean = possible > zeroMWH } object ThermalEnergyDemand { /** Builds a new instance of [[ThermalEnergyDemand]]. If the possible energy - * is less than the required energy, this is considered to be a bad state - * and the required energy is curtailed to the possible energy. + * is less than the required energy, this is considered to be a bad state. * @param required * The absolutely required energy to reach target state * @param possible @@ -501,8 +495,8 @@ object ThermalGrid { required: Energy, possible: Energy, ): ThermalEnergyDemand = { - if (possible < required) - new ThermalEnergyDemand(possible, possible) + if (math.abs(possible.toKilowattHours) < math.abs(required.toKilowattHours)) + throw new InvalidParameterException(s"The possible amount of energy {$possible} is smaller than the required amount of energy {$required}. This is not supported.") else new ThermalEnergyDemand(required, possible) } diff --git a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala index e4c1c14c70..9244a28bdd 100644 --- a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala +++ b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala @@ -6,6 +6,7 @@ package edu.ie3.simona.model.thermal +import edu.ie3.simona.exceptions.InvalidParameterException import edu.ie3.simona.model.thermal.ThermalGrid.ThermalEnergyDemand import edu.ie3.simona.test.common.UnitSpec import squants.energy.{MegawattHours, WattHours, Watts} @@ -20,16 +21,23 @@ class ThermalGridSpec extends UnitSpec { "Testing the thermal energy demand" when { "instantiating it from given values" should { - "correct non-sensible input" in { + "throw exception for non-sensible input (positive)" in { val possible = MegawattHours(40d) val required = MegawattHours(42d) - val energyDemand = ThermalEnergyDemand(required, possible) + intercept[InvalidParameterException] {ThermalEnergyDemand(required, possible) + }.getMessage shouldBe s"The possible amount of energy {$possible} is smaller than the required amount of energy {$required}. This is not supported." + } - energyDemand.required should approximate(possible) - energyDemand.possible should approximate(possible) + "throw exception for non-sensible input (negative)" in { + val possible = MegawattHours(-40d) + val required = MegawattHours(-42d) + + intercept[InvalidParameterException] {ThermalEnergyDemand(required, possible) + }.getMessage shouldBe s"The possible amount of energy {$possible} is smaller than the required amount of energy {$required}. This is not supported." } + "set the correct values, if they are sensible" in { val possible = MegawattHours(45d) val required = MegawattHours(42d) @@ -51,22 +59,29 @@ class ThermalGridSpec extends UnitSpec { } "checking for required and additional demand" should { - "return proper information, if no required but additional demand is apparent" in { + "return proper information, if no required and no additional demand is apparent" in { val required = MegawattHours(0d) - val possible = MegawattHours(45d) + val possible = MegawattHours(0d) val energyDemand = ThermalEnergyDemand(required, possible) energyDemand.hasRequiredDemand shouldBe false - energyDemand.hasAdditionalDemand shouldBe true + energyDemand.hasAdditionalDemand shouldBe false } - "return proper information, if required but no additional demand is apparent" in { - val required = MegawattHours(45d) + "return proper information, if no required but additional demand is apparent" in { + val required = MegawattHours(0d) val possible = MegawattHours(45d) val energyDemand = ThermalEnergyDemand(required, possible) - energyDemand.hasRequiredDemand shouldBe true - energyDemand.hasAdditionalDemand shouldBe false + energyDemand.hasRequiredDemand shouldBe false + energyDemand.hasAdditionalDemand shouldBe true + } + + "throw exception, if required demand is higher than possible demand" in { + val required = MegawattHours(1d) + val possible = MegawattHours(0d) + intercept[InvalidParameterException] {ThermalEnergyDemand(required, possible) + }.getMessage shouldBe s"The possible amount of energy {$possible} is smaller than the required amount of energy {$required}. This is not supported." } "return proper information, if required and additional demand is apparent" in { @@ -77,6 +92,16 @@ class ThermalGridSpec extends UnitSpec { energyDemand.hasRequiredDemand shouldBe true energyDemand.hasAdditionalDemand shouldBe true } + + //FIXME: Think about "negative demand", maybe add more cases as well + "return proper information, if no required but additional demand is apparent (negative)" in { + val required = MegawattHours(-10d) + val possible = MegawattHours(-45d) + + val energyDemand = ThermalEnergyDemand(required, possible) + energyDemand.hasRequiredDemand shouldBe false + energyDemand.hasAdditionalDemand shouldBe true + } } "adding two demands" should { From ced3b555d016db7d358a9bec890c7d65022142c3 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Wed, 21 Aug 2024 19:29:30 +0200 Subject: [PATCH 017/102] fmt --- .../ie3/simona/model/thermal/ThermalGrid.scala | 18 ++++++++++++++---- .../simona/model/thermal/ThermalGridSpec.scala | 12 +++++++----- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala b/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala index c38a72d285..4f8f3e0631 100644 --- a/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala +++ b/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala @@ -9,10 +9,16 @@ package edu.ie3.simona.model.thermal import com.typesafe.scalalogging.LazyLogging import edu.ie3.datamodel.models.input.thermal.CylindricalStorageInput import edu.ie3.datamodel.models.result.ResultEntity -import edu.ie3.datamodel.models.result.thermal.{CylindricalStorageResult, ThermalHouseResult} +import edu.ie3.datamodel.models.result.thermal.{ + CylindricalStorageResult, + ThermalHouseResult, +} import edu.ie3.simona.exceptions.InvalidParameterException import edu.ie3.simona.exceptions.agent.InconsistentStateException -import edu.ie3.simona.model.thermal.ThermalGrid.{ThermalEnergyDemand, ThermalGridState} +import edu.ie3.simona.model.thermal.ThermalGrid.{ + ThermalEnergyDemand, + ThermalGridState, +} import edu.ie3.simona.model.thermal.ThermalHouse.ThermalHouseState import edu.ie3.simona.model.thermal.ThermalStorage.ThermalStorageState import edu.ie3.simona.util.TickUtil.TickLong @@ -495,8 +501,12 @@ object ThermalGrid { required: Energy, possible: Energy, ): ThermalEnergyDemand = { - if (math.abs(possible.toKilowattHours) < math.abs(required.toKilowattHours)) - throw new InvalidParameterException(s"The possible amount of energy {$possible} is smaller than the required amount of energy {$required}. This is not supported.") + if ( + math.abs(possible.toKilowattHours) < math.abs(required.toKilowattHours) + ) + throw new InvalidParameterException( + s"The possible amount of energy {$possible} is smaller than the required amount of energy {$required}. This is not supported." + ) else new ThermalEnergyDemand(required, possible) } diff --git a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala index 9244a28bdd..b59e6000fb 100644 --- a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala +++ b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala @@ -25,7 +25,8 @@ class ThermalGridSpec extends UnitSpec { val possible = MegawattHours(40d) val required = MegawattHours(42d) - intercept[InvalidParameterException] {ThermalEnergyDemand(required, possible) + intercept[InvalidParameterException] { + ThermalEnergyDemand(required, possible) }.getMessage shouldBe s"The possible amount of energy {$possible} is smaller than the required amount of energy {$required}. This is not supported." } @@ -33,11 +34,11 @@ class ThermalGridSpec extends UnitSpec { val possible = MegawattHours(-40d) val required = MegawattHours(-42d) - intercept[InvalidParameterException] {ThermalEnergyDemand(required, possible) + intercept[InvalidParameterException] { + ThermalEnergyDemand(required, possible) }.getMessage shouldBe s"The possible amount of energy {$possible} is smaller than the required amount of energy {$required}. This is not supported." } - "set the correct values, if they are sensible" in { val possible = MegawattHours(45d) val required = MegawattHours(42d) @@ -80,7 +81,8 @@ class ThermalGridSpec extends UnitSpec { "throw exception, if required demand is higher than possible demand" in { val required = MegawattHours(1d) val possible = MegawattHours(0d) - intercept[InvalidParameterException] {ThermalEnergyDemand(required, possible) + intercept[InvalidParameterException] { + ThermalEnergyDemand(required, possible) }.getMessage shouldBe s"The possible amount of energy {$possible} is smaller than the required amount of energy {$required}. This is not supported." } @@ -93,7 +95,7 @@ class ThermalGridSpec extends UnitSpec { energyDemand.hasAdditionalDemand shouldBe true } - //FIXME: Think about "negative demand", maybe add more cases as well + // FIXME: Think about "negative demand", maybe add more cases as well "return proper information, if no required but additional demand is apparent (negative)" in { val required = MegawattHours(-10d) val possible = MegawattHours(-45d) From 69536ea43aefdff99756898eeacb0c03e8049a1f Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Mon, 16 Sep 2024 14:27:09 +0200 Subject: [PATCH 018/102] A tiny bit of cleanup Signed-off-by: Sebastian Peter --- .../simona/model/participant/PvModel.scala | 87 +++++++++---------- 1 file changed, 43 insertions(+), 44 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala index fe2a830d68..a654a2cf3f 100644 --- a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala +++ b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala @@ -460,15 +460,6 @@ final case class PvModel private ( * @return * the beam radiation on the sloped surface */ - - def calculateTimeFrame(omegas: Option[(Angle, Angle)]): Double = { - omegas match { - case Some((omega1, omega2)) => - (omega2 - omega1).toDegrees / 15 - - case None => 0d - } - } private def calcBeamRadiationOnSlopedSurface( eBeamH: Irradiation, omegas: Option[(Angle, Angle)], @@ -517,6 +508,15 @@ final case class PvModel private ( } } + def calculateTimeFrame(omegas: Option[(Angle, Angle)]): Double = { + omegas match { + case Some((omega1, omega2)) => + (omega2 - omega1).toDegrees / 15 + + case None => 0d + } + } + /** Calculates the diffuse radiation on a sloped surface based on the model of * Perez et al. * @@ -542,41 +542,6 @@ final case class PvModel private ( * @return * the diffuse radiation on the sloped surface */ - - private def calcEpsilon( - eDifH: Irradiation, - eBeamH: Irradiation, - thetaZ: Angle, - ): Double = { - val thetaZInRad = thetaZ.toRadians - - ((eDifH + eBeamH / cos(thetaZInRad)) / eDifH + (5.535d * 1.0e-6) * pow( - thetaZ.toDegrees, - 3, - )) / - (1d + (5.535d * 1.0e-6) * pow(thetaZ.toDegrees, 3)) - } - - private def calcEpsilonOld( - eDifH: Irradiation, - eBeamH: Irradiation, - thetaZ: Angle, - ): Double = { - val thetaZInRad = thetaZ.toRadians - - ((eDifH + eBeamH) / eDifH + (5.535d * 1.0e-6) * pow(thetaZ.toRadians, 3)) / - (1d + (5.535d * 1.0e-6) * pow(thetaZ.toRadians, 3)) - } - - private def firstFraction( - eDifH: Irradiation, - eBeamH: Irradiation, - thetaZ: Angle, - ): Double = { - - (eDifH + eBeamH) / eDifH - } - private def calcDiffuseRadiationOnSlopedSurfacePerez( eDifH: Irradiation, eBeamH: Irradiation, @@ -666,6 +631,40 @@ final case class PvModel private ( ) } + private def calcEpsilon( + eDifH: Irradiation, + eBeamH: Irradiation, + thetaZ: Angle, + ): Double = { + val thetaZInRad = thetaZ.toRadians + + ((eDifH + eBeamH / cos(thetaZInRad)) / eDifH + (5.535d * 1.0e-6) * pow( + thetaZ.toDegrees, + 3, + )) / + (1d + (5.535d * 1.0e-6) * pow(thetaZ.toDegrees, 3)) + } + + private def calcEpsilonOld( + eDifH: Irradiation, + eBeamH: Irradiation, + thetaZ: Angle, + ): Double = { + val thetaZInRad = thetaZ.toRadians + + ((eDifH + eBeamH) / eDifH + (5.535d * 1.0e-6) * pow(thetaZ.toRadians, 3)) / + (1d + (5.535d * 1.0e-6) * pow(thetaZ.toRadians, 3)) + } + + private def firstFraction( + eDifH: Irradiation, + eBeamH: Irradiation, + thetaZ: Angle, + ): Double = { + + (eDifH + eBeamH) / eDifH + } + /** Calculates the reflected radiation on a sloped surface * * @param eBeamH From b5c03d143a59c9bc19d6f7b233108db4a66de943 Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Mon, 16 Sep 2024 15:03:33 +0200 Subject: [PATCH 019/102] Reverting different sloped surface workaround Signed-off-by: Sebastian Peter --- .../simona/model/participant/PvModel.scala | 35 +++++++------------ 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala index a654a2cf3f..5ce9651690 100644 --- a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala +++ b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala @@ -115,7 +115,6 @@ final case class PvModel private ( lat, gammaE, alphaE, - duration, ) // === Diffuse Radiation Parameters ===// @@ -410,27 +409,32 @@ final case class PvModel private ( omegaSS: Angle, omegaSR: Angle, ): Option[(Angle, Angle)] = { + val thetaGInRad = thetaG.toRadians val omegaSSInRad = omegaSS.toRadians val omegaSRInRad = omegaSR.toRadians val omegaOneHour = toRadians(15d) + val omegaHalfHour = omegaOneHour / 2d val omega1InRad = omega.toRadians // requested hour val omega2InRad = omega1InRad + omegaOneHour // requested hour plus 1 hour + // (thetaG < 90°): sun is visible + // (thetaG > 90°), otherwise: sun is behind the surface -> no direct radiation if ( - // requested time is between sunrise and sunset (+/- one hour) - omega1InRad > omegaSRInRad - omegaOneHour - && omega1InRad < omegaSSInRad + thetaGInRad < toRadians(90) + // omega1 and omega2: sun has risen and has not set yet + && omega2InRad > omegaSRInRad + omegaHalfHour + && omega1InRad < omegaSSInRad - omegaHalfHour ) { val (finalOmega1, finalOmega2) = if (omega1InRad < omegaSRInRad) { // requested time earlier than sunrise - (omegaSRInRad, omega2InRad) - } else if (omega1InRad > omegaSSInRad - omegaOneHour) { - // requested time is less than one hour before sunset - (omega1InRad, omegaSSInRad) + (omegaSRInRad, omegaSRInRad + omegaOneHour) + } else if (omega2InRad > omegaSSInRad) { + // sunset earlier than requested time + (omegaSSInRad - omegaOneHour, omegaSSInRad) } else { (omega1InRad, omega2InRad) } @@ -467,7 +471,6 @@ final case class PvModel private ( latitude: Angle, gammaE: Angle, alphaE: Angle, - duration: Time, ): Irradiation = { omegas match { @@ -479,9 +482,6 @@ final case class PvModel private ( val omega1InRad = omega1.toRadians val omega2InRad = omega2.toRadians - // variable that accounts for cases when the integration interval is shorter than 15° (1 hour equivalent), when the time is close to sunrise or sunset - val timeFrame = - (omega2 - omega1).toDegrees / 15d / duration.toHours // original term: (omega2 - omega1).toRadians * 180 / Math.PI / 15, since a one hour difference equals 15° val a = ((sin(deltaInRad) * sin(latInRad) * cos(gammaEInRad) - sin(deltaInRad) * cos(latInRad) * sin(gammaEInRad) * cos( @@ -503,20 +503,11 @@ final case class PvModel private ( // in rare cases (close to sunrise) r can become negative (although very small) val r = max(a / b, 0d) - eBeamH * r * timeFrame + eBeamH * r case None => WattHoursPerSquareMeter(0d) } } - def calculateTimeFrame(omegas: Option[(Angle, Angle)]): Double = { - omegas match { - case Some((omega1, omega2)) => - (omega2 - omega1).toDegrees / 15 - - case None => 0d - } - } - /** Calculates the diffuse radiation on a sloped surface based on the model of * Perez et al. * From 4a54db3a0ad9883430989637e7956137254bf7a3 Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Mon, 16 Sep 2024 15:07:56 +0200 Subject: [PATCH 020/102] Reverting changed eccentricity correction factor Signed-off-by: Sebastian Peter --- src/main/scala/edu/ie3/simona/model/participant/PvModel.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala index 5ce9651690..392e060ceb 100644 --- a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala +++ b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala @@ -337,7 +337,7 @@ final case class PvModel private ( val e0 = 1.000110 + 0.034221 * cos(jInRad) + 0.001280 * sin(jInRad) + - 0.00719 * cos(2d * jInRad) + + 0.000719 * cos(2d * jInRad) + 0.000077 * sin(2d * jInRad) // solar constant in W/m2 From 27e382ae6f9970e7c53df954f4021e4f76678b02 Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Mon, 16 Sep 2024 15:12:52 +0200 Subject: [PATCH 021/102] Reverting changes in test Signed-off-by: Sebastian Peter --- .../model/participant/PvModelTest.groovy | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy b/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy index 71f8afb7fb..ea8d6f5016 100644 --- a/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy +++ b/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy @@ -300,9 +300,9 @@ class PvModelTest extends Specification { where: j || I0Sol - 0d || 1423.7592070000003d // Jan 1st - 2.943629280897834d || 1330.655828592125d // Jun 21st - 4.52733626243351d || 1347.6978765254157d // Sep 21st + 0d || 1414.91335d // Jan 1st + 2.943629280897834d || 1322.494291080537598d // Jun 21st + 4.52733626243351d || 1355.944773587800003d // Sep 21st } def "Calculate the angle of incidence thetaG"() { @@ -449,22 +449,19 @@ class PvModelTest extends Specification { expect: "- should calculate the beam contribution," - def calculatedsunsetangle = pvModel.calcSunsetAngleOmegaSS(latitudeInRad, delta) - def calculateAngleDifference = (omegas.get()._1() - omegas.get()._2()) - def timeframe = pvModel.calculateTimeFrame(omegas) - def beamradiation = pvModel.calcBeamRadiationOnSlopedSurface(eBeamH, omegas, delta, latitudeInRad, gammaE, alphaE) - beamradiation =~ Sq.create(eBeamSSol, WattHoursPerSquareMeter$.MODULE$) + + pvModel.calcBeamRadiationOnSlopedSurface(eBeamH, omegas, delta, latitudeInRad, gammaE, alphaE) =~ Sq.create(eBeamSSol, WattHoursPerSquareMeter$.MODULE$) where: "the following parameters are given" latitudeInDeg | slope | azimuth | deltaIn | omegaIn | thetaGIn || eBeamSSol - //40d | 0d | 0d | -11.6d | -37.5d | 37.0d || 67.777778d // flat surface => eBeamS = eBeamH - //40d | 60d | 0d | -11.6d | -37.5d | 37.0d || 112.84217113154841369d // 2011-02-20T09:00:00 - //40d | 60d | 0d | -11.6d | -78.0d | 75.0d || 210.97937494450755d // sunrise - //40d | 60d | 0d | -11.6d | 62.0d | 76.0d || 199.16566536224116d // sunset + 40d | 0d | 0d | -11.6d | -37.5d | 37.0d || 67.777778d // flat surface => eBeamS = eBeamH + 40d | 60d | 0d | -11.6d | -37.5d | 37.0d || 112.84217113154841369d // 2011-02-20T09:00:00 + 40d | 60d | 0d | -11.6d | -78.0d | 75.0d || 210.97937494450755d // sunrise + 40d | 60d | 0d | -11.6d | 62.0d | 76.0d || 199.16566536224116d // sunset 40d | 60d | 0d | -11.6d | 69.0d | 89.9d || 245.77637766673405d // sunset, cut off - //40d | 60d | 0d | -11.6d | 75.0d | 89.9d || 0d // no sun - //40d | 60d | -90.0d | -11.6d | 60.0d | 91.0d || 0d // no direct beam + 40d | 60d | 0d | -11.6d | 75.0d | 89.9d || 0d // no sun + 40d | 60d | -90.0d | -11.6d | 60.0d | 91.0d || 0d // no direct beam } def "Calculate the estimate diffuse radiation eDifS"() { From fcebd6e737d7ff74cd6c3cae5d0a5567183f908a Mon Sep 17 00:00:00 2001 From: pierrepetersmeier Date: Wed, 30 Oct 2024 16:21:43 +0100 Subject: [PATCH 022/102] Daniel Feismann -Meeting --- .../simona/model/participant/PvModelIT.groovy | 223 ------------------ .../simona/model/participant/PvModelIT.scala | 68 ++++++ .../model/participant/PvModelITHelper.scala | 161 +++++++++++++ 3 files changed, 229 insertions(+), 223 deletions(-) delete mode 100644 src/test/groovy/edu/ie3/simona/model/participant/PvModelIT.groovy create mode 100644 src/test/scala/edu/ie3/simona/model/participant/PvModelIT.scala create mode 100644 src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala diff --git a/src/test/groovy/edu/ie3/simona/model/participant/PvModelIT.groovy b/src/test/groovy/edu/ie3/simona/model/participant/PvModelIT.groovy deleted file mode 100644 index 00caef8dee..0000000000 --- a/src/test/groovy/edu/ie3/simona/model/participant/PvModelIT.groovy +++ /dev/null @@ -1,223 +0,0 @@ -/* - * © 2020. TU Dortmund University, - * Institute of Energy Systems, Energy Efficiency and Energy Economics, - * Research group Distribution grid planning and operation - */ - -package edu.ie3.simona.model.participant - -import edu.ie3.datamodel.io.source.csv.CsvJointGridContainerSource -import edu.ie3.datamodel.models.input.system.PvInput -import edu.ie3.simona.ontology.messages.services.WeatherMessage -import edu.ie3.util.TimeUtil -import edu.ie3.util.scala.quantities.Sq -import edu.ie3.util.scala.quantities.WattsPerSquareMeter$ -import org.apache.commons.csv.CSVFormat -import org.apache.commons.csv.CSVRecord -import spock.lang.Shared -import spock.lang.Specification -import squants.Dimensionless -import squants.Each$ -import squants.energy.Megawatts$ -import squants.energy.Power -import squants.motion.MetersPerSecond$ -import squants.thermal.Kelvin$ - -import java.nio.file.Path -import java.time.ZonedDateTime -import java.util.zip.GZIPInputStream - -import static java.util.Locale.US -import static java.util.Locale.setDefault - -/** - * A simple integration test that uses pre-calculated data to check if the pv model works as expected. - * It uses 8 pv models located in GER. - * - */ -class PvModelIT extends Specification implements PvModelITHelper { - - @Shared - Map pvModels - - @Shared - Map> weatherMap - - @Shared - Map> resultsMap - - - def setupSpec() { - // input weather data values are in us format - // if locale is not set hard coded to US, quantity parsing will return invalid values - setDefault(US) - - pvModels = createPvModels() - weatherMap = weatherData - resultsMap = resultsData - } - - def "8 pv panels full year test"() { - - given: "an empty array to collect the results" - ArrayList testRes = new ArrayList<>() - - when: "we calculate the photovoltaic in-feed for each unit for the whole year" - List modelIds = new ArrayList<>(pvModels.keySet()) - // sort models: east, south, west - Collections.sort(modelIds) - final int modelCount = modelIds.size() - - // sort, in case dates & times have not been sorted before - List keyList = new ArrayList<>(weatherMap.keySet()) - Collections.sort(keyList) - - for (ZonedDateTime dateTime : keyList) { - - Map modelToWeatherMap = weatherMap.get(dateTime) - - String[] row = new String[2*modelCount+1] - row[0] = dateTime.toString() - - int modelI = 0 - for (String modelId : modelIds) { - PvModel model = pvModels.get(modelId) - - "build the needed data" - WeatherMessage.WeatherData weather = modelToWeatherMap.get(modelId) - PvModel.PvRelevantData neededData = new PvModel.PvRelevantData( - dateTime, - 3600L, - weather.diffIrr(), - weather.dirIrr() - ) - Dimensionless voltage = Sq.create(1.414213562d, Each$.MODULE$) - - "collect the results and calculate the difference between the provided results and the calculated ones" - double calc = model.calculatePower(0L, voltage, ModelState.ConstantState$.MODULE$, neededData).p().toMegawatts() - double sol = resultsMap.get(dateTime).get(modelId).toMegawatts() - - testRes.add(Math.abs(calc - sol)) - - row[1 + modelI] = calc.toString() - row[1 + modelCount + modelI] = sol.toString() - - modelI++ - } - } - - then: "we expect the calculated result to be quasi equal the provided results data" - testRes.every { - (it < 0.00000000000001) // floating point operation - } - } -} - -trait PvModelITHelper { - private static final CSV_FORMAT = CSVFormat.DEFAULT.builder().setHeader().build() - - Iterable getCsvRecords(String fileName) { - def resultsInputData = new File(this.getClass().getResource(fileName).file) - def fileStream = new FileInputStream(resultsInputData) - def gzipStream = new GZIPInputStream(fileStream) - def decoder = new InputStreamReader(gzipStream, "UTF-8") - def br = new BufferedReader(decoder) - return CSV_FORMAT.parse(br) - } - - Map createPvModels() { - "load the grid input data from the corresponding resources folder" - - def csvGridSource = CsvJointGridContainerSource.read("it_grid", ";", - Path.of(this.getClass().getResource("_pv/it/grid_data").toURI()), false) - - def simulationStartDate = TimeUtil.withDefaults.toZonedDateTime("2011-01-01T00:00:00Z") - def simulationEndDate = TimeUtil.withDefaults.toZonedDateTime("2012-01-01T00:00:00Z") - - Map pvModels = new HashMap<>() - for (PvInput inputModel : csvGridSource.systemParticipants.pvPlants) { - PvModel model = PvModel.apply( - inputModel, - 1d, - simulationStartDate, - simulationEndDate - ) - - pvModels.put(inputModel.getId(), model) - } - - return pvModels - } - - Map> getWeatherData() { - "read the weather data from the provided weather data file" - final String fileName = "_pv/it/weather.tar.gz" - final def csvRecords = getCsvRecords(fileName) - - Map> weatherMap = new HashMap<>() - for (row in csvRecords) { - ZonedDateTime time = TimeUtil.withDefaults.toZonedDateTime(row.get(0)) - Map modelToWeatherMap - if (weatherMap.containsKey(time)) { - modelToWeatherMap = weatherMap.get(time) - } - - if (modelToWeatherMap == null) { - modelToWeatherMap = new HashMap() - weatherMap.put(time, modelToWeatherMap) - } - - String modelId = row.get(1) - - double temp = 0 - double windVel = 0 - - WeatherMessage.WeatherData weather = new WeatherMessage.WeatherData( - Sq.create(row.get(22).replace("Wh/m²", "").toDouble(), WattsPerSquareMeter$.MODULE$), - Sq.create(row.get(21).replace("Wh/m²", "").toDouble(), WattsPerSquareMeter$.MODULE$), - Sq.create(temp, Kelvin$.MODULE$), - Sq.create(windVel, MetersPerSecond$.MODULE$)) - - modelToWeatherMap.put(modelId, weather) - } - - return weatherMap - } - - Map> getResultsData() { - "read the results data from the provided file" - final String fileName = "_pv/it/results2.tar.gz" - def csvRecords = getCsvRecords(fileName) - - // we skip the first line and use hardcoded headers, because the first line is garbled - String[] headers = [ - "Datetime", - "pv_east_1", - "pv_east_2", - "pv_south_1", - "pv_south_2", - "pv_south_3", - "pv_south_4", - "pv_west_1", - "pv_west_2" - ] - - Map> resultsMap = new HashMap<>() - for(row in csvRecords) { - // last line is trash - if (row.get(0).startsWith('\u0000')) - break - - ZonedDateTime time = TimeUtil.withDefaults.toZonedDateTime(row.get(0)) - Map modelToPowerMap = new HashMap<>() - for (int i = 1; i < headers.length; i++) { - String modelId = headers[i] - String rawValue = row[i] - Power power = Sq.create(Double.parseDouble(rawValue), Megawatts$.MODULE$) - modelToPowerMap.put(modelId, power) - } - resultsMap.put(time, modelToPowerMap) - } - return resultsMap - } -} \ No newline at end of file diff --git a/src/test/scala/edu/ie3/simona/model/participant/PvModelIT.scala b/src/test/scala/edu/ie3/simona/model/participant/PvModelIT.scala new file mode 100644 index 0000000000..478ca9e275 --- /dev/null +++ b/src/test/scala/edu/ie3/simona/model/participant/PvModelIT.scala @@ -0,0 +1,68 @@ +/* + * © 2020. TU Dortmund University, + * Institute of Energy Systems, Energy Efficiency and Energy Economics, + * Research group Distribution grid planning and operation + */ + +package edu.ie3.simona.model.participant + +import edu.ie3.simona.ontology.messages.services.WeatherMessage +import edu.ie3.simona.test.common.UnitSpec +import org.scalatest.matchers.should.Matchers +import squants.{Dimensionless, Each} +import squants.energy.Power + +import java.time.ZonedDateTime +import java.util.Locale +import scala.collection.mutable.ArrayBuffer + +/** A simple integration test that uses pre-calculated data to check if the pv + * model works as expected. It uses 8 pv models located in GER. + */ + +class PvModelIT extends UnitSpec with Matchers with PvModelITHelper { + + Locale.setDefault(Locale.US) + val pvModels: Map[String, PvModel] = getCreatePvModels + val weatherMap: Map[ZonedDateTime, Map[String, WeatherMessage.WeatherData]] = + getWeatherData + val resultsMap: Map[ZonedDateTime, Map[String, Power]] = getResultsData + + "8 pv panels full year test" should { + "yield results close to the expected data" in { + val testRes = ArrayBuffer[Double]() + + val modelIds = pvModels.keys.toList.sorted + val keyList = weatherMap.keys.toList.sorted + + keyList.foreach { dateTime => + val modelToWeatherMap = weatherMap(dateTime) + + var modelI = 0 + modelIds.foreach { modelId => + val model = pvModels(modelId) + val weather = modelToWeatherMap(modelId) + + val neededData = PvModel.PvRelevantData( + dateTime, + 3600L, + weather.diffIrr, + weather.dirIrr, + ) + val voltage: Dimensionless = Each(1.414213562d) + + val calc = model + .calculatePower(0L, voltage, ModelState.ConstantState, neededData) + .p + .toMegawatts + val sol = resultsMap(dateTime)(modelId).toMegawatts + + testRes += Math.abs(calc - sol) + + modelI += 1 + } + } + testRes.forall(_ < 1e-14) shouldBe true + } + } +} diff --git a/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala b/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala new file mode 100644 index 0000000000..b1372d9445 --- /dev/null +++ b/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala @@ -0,0 +1,161 @@ +/* + * © 2020. TU Dortmund University, + * Institute of Energy Systems, Energy Efficiency and Energy Economics, + * Research group Distribution grid planning and operation + */ + +package edu.ie3.simona.model.participant + +import edu.ie3.datamodel.models.input.OperatorInput +import edu.ie3.datamodel.models.input.system.PvInput +import edu.ie3.datamodel.models.input.system.characteristic.CosPhiFixed +import edu.ie3.datamodel.models.{OperationTime, StandardUnits} +import edu.ie3.simona.ontology.messages.services.WeatherMessage +import edu.ie3.util.TimeUtil +import edu.ie3.util.scala.quantities.WattsPerSquareMeter +import org.apache.commons.csv.{CSVFormat, CSVRecord} +import org.apache.kafka.common.serialization.Serdes.UUID +import squants.energy.Megawatts +import squants.motion.MetersPerSecond +import squants.space.Degrees +import squants.{Angle, Kelvin, Power} +import tech.units.indriya.quantity.Quantities + +import java.io.{BufferedReader, File, FileInputStream, InputStreamReader} +import java.nio.file.{Files, Path} +import java.time.ZonedDateTime +import java.util.zip.GZIPInputStream +import scala.collection.convert.ImplicitConversions.`iterator asScala` +import scala.collection.mutable +import scala.jdk.CollectionConverters.CollectionHasAsScala +import scala.reflect.runtime.universe.Try +import java.util.UUID +import edu.ie3.datamodel.models.input.NodeInput +import edu.ie3.datamodel.models.voltagelevels.GermanVoltageLevelUtils +import edu.ie3.simona.agent.participant.data.Data.PrimaryData.ZERO_POWER.p +import edu.ie3.util.quantities.PowerSystemUnits.PU +import tech.units.indriya.quantity.Quantities.getQuantity + +trait PvModelITHelper { + + private val CSV_FORMAT = CSVFormat.DEFAULT.builder().setHeader().build() + implicit val angleTolerance: Angle = Degrees(1e-5) + + def getCsvRecords(fileName: String): java.util.Iterator[CSVRecord] = { + val resultsInputData = new File(this.getClass.getResource(fileName).getFile) + val fileStream = new FileInputStream(resultsInputData) + val gzipStream = new GZIPInputStream(fileStream) + val decoder = new InputStreamReader(gzipStream, "UTF-8") + val br = new BufferedReader(decoder) + CSVFormat.DEFAULT.parse(br).iterator() + } + + def parsePvInputCSV(line: String): Option[PvInput] = { + val nodeInput = new NodeInput( + UUID.fromString("85f8b517-8a2d-4c20-86c6-3ff3c5823e6d"), + "NodeInputModel for PvModel Test", + OperatorInput.NO_OPERATOR_ASSIGNED, + OperationTime.notLimited(), + getQuantity(1, PU), + false, + p, + GermanVoltageLevelUtils.MV_20KV, + 11, + ) + + val fields = line.split(";") + if (fields.length >= 15) { + Try { + new PvInput( + UUID.fromString(fields(0)), + fields(6), + new OperatorInput(UUID.randomUUID(), "NO_OPERATOR"), + OperationTime.notLimited(), + nodeInput, + CosPhiFixed.CONSTANT_CHARACTERISTIC, + null, + fields(8).toInt, + Quantities.getQuantity(fields(2).toDouble, StandardUnits.AZIMUTH), + Quantities.getQuantity(fields(4).toDouble, StandardUnits.EFFICIENCY), + Quantities.getQuantity( + fields(5).toDouble, + StandardUnits.SOLAR_ELEVATION_ANGLE, + ), + fields(12).toDouble, + fields(7).toDouble, + fields(9).toBoolean, + Quantities.getQuantity(fields(12).toDouble, StandardUnits.S_RATED), + fields(3).toDouble, + ) + }.toOption + } else { + None + } + } + + def getCreatePvModels: Map[String, PvModel] = { + + val csvPath = Path.of(getClass.getResource("_pv/it/grid_data.csv").toURI) + val lines = Files.readAllLines(csvPath).asScala + val pvPlants: Set[PvInput] = lines.drop(1).flatMap(parsePvInputCSV).toSet + val simulationStartDate = + TimeUtil.withDefaults.toZonedDateTime("2011-01-01T00:00:00Z") + val simulationEndDate = + TimeUtil.withDefaults.toZonedDateTime("2012-01-01T00:00:00Z") + + val pvModels = mutable.Map[String, PvModel]() + + pvPlants.foreach { inputModel => + val model = PvModel( + inputModel, + 1d, + simulationStartDate, + simulationEndDate, + ) + pvModels.put(inputModel.id, model) + } + pvModels.toMap + } + + def getWeatherData + : Map[ZonedDateTime, Map[String, WeatherMessage.WeatherData]] = { + val filePath = Path.of("resources/_pv/it/weather.tar.gz") + val csvRecords = getCsvRecords(filePath.toString) + + csvRecords.foldLeft( + Map.empty[ZonedDateTime, Map[String, WeatherMessage.WeatherData]] + ) { (weatherMap, row) => + val time = TimeUtil.withDefaults.toZonedDateTime(row.get(0)) + val modelId = row.get(1) + val weather = WeatherMessage.WeatherData( + WattsPerSquareMeter(row.get(22).replace("Wh/m²", "").toDouble), + WattsPerSquareMeter(row.get(21).replace("Wh/m²", "").toDouble), + Kelvin(0), + MetersPerSecond(0), + ) + val modelToWeatherMap = weatherMap.getOrElse( + time, + Map.empty[String, WeatherMessage.WeatherData], + ) + weatherMap + (time -> (modelToWeatherMap + (modelId -> weather))) + } + } + + def getResultsData: Map[ZonedDateTime, Map[String, Power]] = { + val filePath = Path.of("resources/_pv/it/results2.tar.gz") + val csvRecords = getCsvRecords(filePath.toString) + + csvRecords.foldLeft(Map.empty[ZonedDateTime, Map[String, Power]]) { + (resultsMap, row) => + val time = TimeUtil.withDefaults.toZonedDateTime(row.get(0)) + + val powerData = (1 until row.size()).map { i => + val modelId = s"pv_${i}" + val power = Megawatts(row.get(i).toDouble) + modelId -> power + }.toMap + + resultsMap + (time -> powerData) + } + } +} From 17fdd6de669f706e501f24236552aa0e82e5f843 Mon Sep 17 00:00:00 2001 From: pierrepetersmeier Date: Wed, 30 Oct 2024 17:50:04 +0100 Subject: [PATCH 023/102] Daniel Feismann -Meeting --- .../model/participant/PvModelITHelper.scala | 82 +++++++++---------- 1 file changed, 37 insertions(+), 45 deletions(-) diff --git a/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala b/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala index b1372d9445..5673cb4ad6 100644 --- a/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala +++ b/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala @@ -6,35 +6,31 @@ package edu.ie3.simona.model.participant -import edu.ie3.datamodel.models.input.OperatorInput +import edu.ie3.datamodel.models.input.{NodeInput, OperatorInput} import edu.ie3.datamodel.models.input.system.PvInput import edu.ie3.datamodel.models.input.system.characteristic.CosPhiFixed +import edu.ie3.datamodel.models.voltagelevels.GermanVoltageLevelUtils import edu.ie3.datamodel.models.{OperationTime, StandardUnits} import edu.ie3.simona.ontology.messages.services.WeatherMessage import edu.ie3.util.TimeUtil +import edu.ie3.util.quantities.PowerSystemUnits.PU import edu.ie3.util.scala.quantities.WattsPerSquareMeter import org.apache.commons.csv.{CSVFormat, CSVRecord} -import org.apache.kafka.common.serialization.Serdes.UUID import squants.energy.Megawatts import squants.motion.MetersPerSecond import squants.space.Degrees import squants.{Angle, Kelvin, Power} import tech.units.indriya.quantity.Quantities +import tech.units.indriya.quantity.Quantities.getQuantity -import java.io.{BufferedReader, File, FileInputStream, InputStreamReader} +import java.io.{BufferedReader, File, FileInputStream, InputStreamReader, Reader} import java.nio.file.{Files, Path} import java.time.ZonedDateTime +import java.util.UUID import java.util.zip.GZIPInputStream -import scala.collection.convert.ImplicitConversions.`iterator asScala` -import scala.collection.mutable +import scala.collection.convert.ImplicitConversions.{`iterator asScala`, `map AsJavaMap`} +import scala.collection.immutable.HashMap import scala.jdk.CollectionConverters.CollectionHasAsScala -import scala.reflect.runtime.universe.Try -import java.util.UUID -import edu.ie3.datamodel.models.input.NodeInput -import edu.ie3.datamodel.models.voltagelevels.GermanVoltageLevelUtils -import edu.ie3.simona.agent.participant.data.Data.PrimaryData.ZERO_POWER.p -import edu.ie3.util.quantities.PowerSystemUnits.PU -import tech.units.indriya.quantity.Quantities.getQuantity trait PvModelITHelper { @@ -58,44 +54,40 @@ trait PvModelITHelper { OperationTime.notLimited(), getQuantity(1, PU), false, - p, + NodeInput.DEFAULT_GEO_POSITION, GermanVoltageLevelUtils.MV_20KV, 11, ) val fields = line.split(";") if (fields.length >= 15) { - Try { - new PvInput( - UUID.fromString(fields(0)), - fields(6), - new OperatorInput(UUID.randomUUID(), "NO_OPERATOR"), - OperationTime.notLimited(), - nodeInput, - CosPhiFixed.CONSTANT_CHARACTERISTIC, - null, - fields(8).toInt, - Quantities.getQuantity(fields(2).toDouble, StandardUnits.AZIMUTH), - Quantities.getQuantity(fields(4).toDouble, StandardUnits.EFFICIENCY), - Quantities.getQuantity( - fields(5).toDouble, - StandardUnits.SOLAR_ELEVATION_ANGLE, - ), - fields(12).toDouble, - fields(7).toDouble, - fields(9).toBoolean, - Quantities.getQuantity(fields(12).toDouble, StandardUnits.S_RATED), - fields(3).toDouble, - ) - }.toOption - } else { - None - } + Some(new PvInput( + UUID.fromString(fields(0)), + fields(6), + new OperatorInput(UUID.randomUUID(), "NO_OPERATOR"), + OperationTime.notLimited(), + nodeInput, + CosPhiFixed.CONSTANT_CHARACTERISTIC, + null, + fields(8).toInt, + Quantities.getQuantity(fields(2).toDouble, StandardUnits.AZIMUTH), + Quantities.getQuantity(fields(4).toDouble, StandardUnits.EFFICIENCY), + Quantities.getQuantity( + fields(5).toDouble, + StandardUnits.SOLAR_ELEVATION_ANGLE, + ), + fields(12).toDouble, + fields(7).toDouble, + fields(9).toBoolean, + Quantities.getQuantity(fields(12).toDouble, StandardUnits.S_RATED), + fields(3).toDouble, + )) + } else throw new RuntimeException("This should...") } def getCreatePvModels: Map[String, PvModel] = { - val csvPath = Path.of(getClass.getResource("_pv/it/grid_data.csv").toURI) + val csvPath = Path.of(getClass.getResource("_pv.it/grid_data").toURI) val lines = Files.readAllLines(csvPath).asScala val pvPlants: Set[PvInput] = lines.drop(1).flatMap(parsePvInputCSV).toSet val simulationStartDate = @@ -103,7 +95,7 @@ trait PvModelITHelper { val simulationEndDate = TimeUtil.withDefaults.toZonedDateTime("2012-01-01T00:00:00Z") - val pvModels = mutable.Map[String, PvModel]() + val pvModels : HashMap[String, PvModel] = HashMap.empty pvPlants.foreach { inputModel => val model = PvModel( @@ -112,13 +104,13 @@ trait PvModelITHelper { simulationStartDate, simulationEndDate, ) - pvModels.put(inputModel.id, model) + pvModels.put(inputModel.getId, model) } - pvModels.toMap + pvModels } - def getWeatherData - : Map[ZonedDateTime, Map[String, WeatherMessage.WeatherData]] = { + + def getWeatherData : Map[ZonedDateTime, Map[String, WeatherMessage.WeatherData]] = { val filePath = Path.of("resources/_pv/it/weather.tar.gz") val csvRecords = getCsvRecords(filePath.toString) From 3dc7523f0d975e90488a375ca06ec0a539955d3b Mon Sep 17 00:00:00 2001 From: marvinheintze Date: Wed, 27 Nov 2024 17:06:26 +0100 Subject: [PATCH 024/102] adapted tests to new hasAdditionalDemand and put negative cases in brackets --- .../simona/model/thermal/ThermalGrid.scala | 9 +++- .../model/thermal/ThermalGridSpec.scala | 44 ++++++++++++++++++- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala b/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala index 4f8f3e0631..dda5eb149a 100644 --- a/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala +++ b/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala @@ -485,6 +485,13 @@ object ThermalGrid { def hasRequiredDemand: Boolean = required > zeroMWH def hasAdditionalDemand: Boolean = possible > zeroMWH + + /* for possible negative energies + def hasRequiredNegativeDemand: Boolean = required < zeroMWH + + def hasAdditionalNegativeDemand: Boolean = possible < zeroMWH + + */ } object ThermalEnergyDemand { @@ -502,7 +509,7 @@ object ThermalGrid { possible: Energy, ): ThermalEnergyDemand = { if ( - math.abs(possible.toKilowattHours) < math.abs(required.toKilowattHours) + math.abs(possible.toKilowattHours) < math.abs(required.toKilowattHours) && math.signum(possible.toKilowattHours) <= math.signum(required.toKilowattHours) ) throw new InvalidParameterException( s"The possible amount of energy {$possible} is smaller than the required amount of energy {$required}. This is not supported." diff --git a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala index b59e6000fb..0171817efe 100644 --- a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala +++ b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala @@ -30,6 +30,8 @@ class ThermalGridSpec extends UnitSpec { }.getMessage shouldBe s"The possible amount of energy {$possible} is smaller than the required amount of energy {$required}. This is not supported." } + /* negative values test: + "throw exception for non-sensible input (negative)" in { val possible = MegawattHours(-40d) val required = MegawattHours(-42d) @@ -39,6 +41,8 @@ class ThermalGridSpec extends UnitSpec { }.getMessage shouldBe s"The possible amount of energy {$possible} is smaller than the required amount of energy {$required}. This is not supported." } + */ + "set the correct values, if they are sensible" in { val possible = MegawattHours(45d) val required = MegawattHours(42d) @@ -67,6 +71,11 @@ class ThermalGridSpec extends UnitSpec { val energyDemand = ThermalEnergyDemand(required, possible) energyDemand.hasRequiredDemand shouldBe false energyDemand.hasAdditionalDemand shouldBe false + /* negative values test: + + energyDemand.hasRequiredNegativeDemand shouldBe false + energyDemand.hasAdditionalNegativeDemand shouldBe false + */ } "return proper information, if no required but additional demand is apparent" in { @@ -76,6 +85,11 @@ class ThermalGridSpec extends UnitSpec { val energyDemand = ThermalEnergyDemand(required, possible) energyDemand.hasRequiredDemand shouldBe false energyDemand.hasAdditionalDemand shouldBe true + /* negative values test: + + energyDemand.hasRequiredNegativeDemand shouldBe false + energyDemand.hasAdditionalNegativeDemand shouldBe false + */ } "throw exception, if required demand is higher than possible demand" in { @@ -93,6 +107,11 @@ class ThermalGridSpec extends UnitSpec { val energyDemand = ThermalEnergyDemand(required, possible) energyDemand.hasRequiredDemand shouldBe true energyDemand.hasAdditionalDemand shouldBe true + /* negative values test: + + energyDemand.hasRequiredNegativeDemand shouldBe false + energyDemand.hasAdditionalNegativeDemand shouldBe false + */ } // FIXME: Think about "negative demand", maybe add more cases as well @@ -102,7 +121,12 @@ class ThermalGridSpec extends UnitSpec { val energyDemand = ThermalEnergyDemand(required, possible) energyDemand.hasRequiredDemand shouldBe false - energyDemand.hasAdditionalDemand shouldBe true + energyDemand.hasAdditionalDemand shouldBe false + /*negative values test: + + energyDemand.hasRequiredNegativeDemand shouldBe true + energyDemand.hasAdditionalNegativeDemand shouldBe true + */ } } @@ -122,6 +146,24 @@ class ThermalGridSpec extends UnitSpec { totalDemand.required should approximate(MegawattHours(68d)) totalDemand.possible should approximate(MegawattHours(75d)) } + /*negative values test: + + "deliver proper negative results" in { + val energyDemand1 = ThermalEnergyDemand( + MegawattHours(-45d), + MegawattHours(-47d), + ) + val energyDemand2 = ThermalEnergyDemand( + MegawattHours(-23d), + MegawattHours(-28d), + ) + + val totalDemand = energyDemand1 + energyDemand2 + + totalDemand.required should approximate(MegawattHours(-68d)) + totalDemand.possible should approximate(MegawattHours(-75d)) + } + */ } } } From b00f5f837c6442f11d2e4cf254fe495337230bd6 Mon Sep 17 00:00:00 2001 From: marvinheintze Date: Wed, 27 Nov 2024 17:21:39 +0100 Subject: [PATCH 025/102] spotless --- .../scala/edu/ie3/simona/model/thermal/ThermalGrid.scala | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala b/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala index c84d1a6e78..e37fcfb679 100644 --- a/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala +++ b/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala @@ -602,7 +602,11 @@ object ThermalGrid { possible: Energy, ): ThermalEnergyDemand = { if ( - math.abs(possible.toKilowattHours) < math.abs(required.toKilowattHours) && math.signum(possible.toKilowattHours) <= math.signum(required.toKilowattHours) + math.abs(possible.toKilowattHours) < math.abs( + required.toKilowattHours + ) && math.signum(possible.toKilowattHours) <= math.signum( + required.toKilowattHours + ) ) throw new InvalidParameterException( s"The possible amount of energy {$possible} is smaller than the required amount of energy {$required}. This is not supported." From 22cc86b08587bac9eec8609a2ffbc2f750a2bacc Mon Sep 17 00:00:00 2001 From: marvinheintze Date: Tue, 3 Dec 2024 00:06:02 +0100 Subject: [PATCH 026/102] added exception for negative values + removed negative cases --- .../simona/model/thermal/ThermalGrid.scala | 24 +++--- .../model/thermal/ThermalGridSpec.scala | 84 ++++++------------- 2 files changed, 35 insertions(+), 73 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala b/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala index e37fcfb679..6e59c48f4f 100644 --- a/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala +++ b/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala @@ -31,6 +31,7 @@ import squants.{Energy, Power, Temperature} import java.time.ZonedDateTime import scala.jdk.CollectionConverters.SetHasAsScala +import scala.language.postfixOps /** Calculation model for a thermal grid. It is assumed, that all elements are * connected directly with exactly one thermal bus @@ -579,12 +580,6 @@ object ThermalGrid { def hasAdditionalDemand: Boolean = possible > zeroMWh - /* for possible negative energies - def hasRequiredNegativeDemand: Boolean = required < zeroMWH - - def hasAdditionalNegativeDemand: Boolean = possible < zeroMWH - - */ } object ThermalEnergyDemand { @@ -602,17 +597,20 @@ object ThermalGrid { possible: Energy, ): ThermalEnergyDemand = { if ( - math.abs(possible.toKilowattHours) < math.abs( - required.toKilowattHours - ) && math.signum(possible.toKilowattHours) <= math.signum( - required.toKilowattHours - ) + math.abs(possible.toKilowattHours) < math.abs(required.toKilowattHours) ) throw new InvalidParameterException( s"The possible amount of energy {$possible} is smaller than the required amount of energy {$required}. This is not supported." ) - else - new ThermalEnergyDemand(required, possible) + else { + if (possible.toKilowattHours < 0 || required.toKilowattHours < 0) + throw new InvalidParameterException( + s"The possible {$possible} or required {$required} amount of energy is smaller than zero. This is not supported." + ) + else { + new ThermalEnergyDemand(required, possible) + } + } } def noDemand: ThermalEnergyDemand = ThermalEnergyDemand( diff --git a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala index fe43d4d43a..aa7c0868f3 100644 --- a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala +++ b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala @@ -36,19 +36,6 @@ class ThermalGridSpec }.getMessage shouldBe s"The possible amount of energy {$possible} is smaller than the required amount of energy {$required}. This is not supported." } - /* negative values test: - - "throw exception for non-sensible input (negative)" in { - val possible = MegawattHours(-40d) - val required = MegawattHours(-42d) - - intercept[InvalidParameterException] { - ThermalEnergyDemand(required, possible) - }.getMessage shouldBe s"The possible amount of energy {$possible} is smaller than the required amount of energy {$required}. This is not supported." - } - - */ - "set the correct values, if they are sensible" in { val possible = MegawattHours(45d) val required = MegawattHours(42d) @@ -77,11 +64,6 @@ class ThermalGridSpec val energyDemand = ThermalEnergyDemand(required, possible) energyDemand.hasRequiredDemand shouldBe false energyDemand.hasAdditionalDemand shouldBe false - /* negative values test: - - energyDemand.hasRequiredNegativeDemand shouldBe false - energyDemand.hasAdditionalNegativeDemand shouldBe false - */ } "return proper information, if no required but additional demand is apparent" in { @@ -91,11 +73,6 @@ class ThermalGridSpec val energyDemand = ThermalEnergyDemand(required, possible) energyDemand.hasRequiredDemand shouldBe false energyDemand.hasAdditionalDemand shouldBe true - /* negative values test: - - energyDemand.hasRequiredNegativeDemand shouldBe false - energyDemand.hasAdditionalNegativeDemand shouldBe false - */ } "throw exception, if required demand is higher than possible demand" in { @@ -106,6 +83,30 @@ class ThermalGridSpec }.getMessage shouldBe s"The possible amount of energy {$possible} is smaller than the required amount of energy {$required}. This is not supported." } + "throw exception, if required demand is smaller than zero" in { + val required = MegawattHours(-2d) + val possible = MegawattHours(5d) + intercept[InvalidParameterException] { + ThermalEnergyDemand(required, possible) + }.getMessage shouldBe s"The possible {$possible} or required {$required} amount of energy is smaller than zero. This is not supported." + } + + "throw exception, if possible demand is smaller than zero" in { + val required = MegawattHours(2d) + val possible = MegawattHours(-5d) + intercept[InvalidParameterException] { + ThermalEnergyDemand(required, possible) + }.getMessage shouldBe s"The possible {$possible} or required {$required} amount of energy is smaller than zero. This is not supported." + } + + "throw exception, if possible and required demand are smaller than zero" in { + val required = MegawattHours(-2d) + val possible = MegawattHours(-5d) + intercept[InvalidParameterException] { + ThermalEnergyDemand(required, possible) + }.getMessage shouldBe s"The possible {$possible} or required {$required} amount of energy is smaller than zero. This is not supported." + } + "return proper information, if required and additional demand is apparent" in { val required = MegawattHours(45d) val possible = MegawattHours(47d) @@ -113,27 +114,8 @@ class ThermalGridSpec val energyDemand = ThermalEnergyDemand(required, possible) energyDemand.hasRequiredDemand shouldBe true energyDemand.hasAdditionalDemand shouldBe true - /* negative values test: - - energyDemand.hasRequiredNegativeDemand shouldBe false - energyDemand.hasAdditionalNegativeDemand shouldBe false - */ } - // FIXME: Think about "negative demand", maybe add more cases as well - "return proper information, if no required but additional demand is apparent (negative)" in { - val required = MegawattHours(-10d) - val possible = MegawattHours(-45d) - - val energyDemand = ThermalEnergyDemand(required, possible) - energyDemand.hasRequiredDemand shouldBe false - energyDemand.hasAdditionalDemand shouldBe false - /*negative values test: - - energyDemand.hasRequiredNegativeDemand shouldBe true - energyDemand.hasAdditionalNegativeDemand shouldBe true - */ - } } "adding two demands" should { @@ -152,24 +134,6 @@ class ThermalGridSpec totalDemand.required should approximate(MegawattHours(68d)) totalDemand.possible should approximate(MegawattHours(75d)) } - /*negative values test: - - "deliver proper negative results" in { - val energyDemand1 = ThermalEnergyDemand( - MegawattHours(-45d), - MegawattHours(-47d), - ) - val energyDemand2 = ThermalEnergyDemand( - MegawattHours(-23d), - MegawattHours(-28d), - ) - - val totalDemand = energyDemand1 + energyDemand2 - - totalDemand.required should approximate(MegawattHours(-68d)) - totalDemand.possible should approximate(MegawattHours(-75d)) - } - */ } } "ThermalGridState" should { From 7cc086788ad6ff1125c4133a8a21267bcacf2cdd Mon Sep 17 00:00:00 2001 From: pierrepetersmeier Date: Wed, 11 Dec 2024 16:08:04 +0100 Subject: [PATCH 027/102] meeting --- .../test/common/input/PvPlantsTestData.scala | 190 ++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 src/test/scala/edu/ie3/simona/test/common/input/PvPlantsTestData.scala diff --git a/src/test/scala/edu/ie3/simona/test/common/input/PvPlantsTestData.scala b/src/test/scala/edu/ie3/simona/test/common/input/PvPlantsTestData.scala new file mode 100644 index 0000000000..758c11c9b7 --- /dev/null +++ b/src/test/scala/edu/ie3/simona/test/common/input/PvPlantsTestData.scala @@ -0,0 +1,190 @@ +/* + * © 2024. TU Dortmund University, + * Institute of Energy Systems, Energy Efficiency and Energy Economics, + * Research group Distribution grid planning and operation + */ + +package edu.ie3.simona.test.common.input + +import edu.ie3.datamodel.models.input.{NodeInput, OperatorInput} +import edu.ie3.datamodel.models.{OperationTime, StandardUnits} +import edu.ie3.datamodel.models.input.system.PvInput +import edu.ie3.datamodel.models.input.system.characteristic.CosPhiFixed +import edu.ie3.datamodel.models.voltagelevels.GermanVoltageLevelUtils +import edu.ie3.simona.test.common.DefaultTestData +import edu.ie3.util.quantities.PowerSystemUnits +import edu.ie3.util.quantities.PowerSystemUnits.{ + DEGREE_GEOM, + KILOVOLTAMPERE, + PU, +} +import org.locationtech.jts.geom.{Coordinate, GeometryFactory, Point} +import tech.units.indriya.quantity.Quantities +import tech.units.indriya.quantity.Quantities.getQuantity +import tech.units.indriya.unit.Units.PERCENT + +import java.util.UUID + +trait PvPlantsTestData extends NodeInputTestData { + + /*protected val pvPlantInputSouth1 = new PvInput( + UUID.fromString("7ac5bb15-36ee-42b0-902b-9cd520e241b3"), + "pv_south_1", + 0.2, // albedo + 16.09490984119475, // azimuth + 0.95, // cosphi_rated + Quantities.getQuantity(91.23978812713176, PowerSystemUnits.WATT_PER_SQUAREMETRE), // eta_conv + 51.75144341774285, // elevation_angle + 0.9, // k_g + 1, // k_t + false, // market_reaction + nodeInputNoSlackNs04KvA// node + ) + + protected val pvPlantInputSouth2 = new PvInput( + UUID.fromString("939d254a-98b9-43d9-939d-dac9d91e7d73"), + "pv_south_2", + 0.2, + -11.883286549709737, + 0.95, + Quantities.getQuantity(93.55452200165019, PowerSystemUnits.WATT_PER_SQUAREMETRE), + 50.710754711180925, + 0.9, + 1, + false, + UUID.fromString("9a2524f1-3639-4e90-a547-81a259712f8c") + ) + + protected val pvPlantInputSouth3 = new PvInput( + UUID.fromString("e3b34366-9a4b-4e8f-b46d-fccdd3c318b3"), + "pv_south_3", + 0.2, + -3.6445723846554756, + 0.95, + Quantities.getQuantity(90.07983175106347, PowerSystemUnits.WATT_PER_SQUAREMETRE), + 50.727743320167065, + 0.9, + 1, + false, + UUID.fromString("9354b02c-a4a9-4e9d-905a-e48110b04d88") + ) + + protected val pvPlantInputSouth4 = new PvInput( + UUID.fromString("403a3d17-0b71-4631-bcc4-71416c6376ed"), + "pv_south_4", + 0.2, + -16.249216510914266, + 0.95, + Quantities.getQuantity(90.57719040894882, PowerSystemUnits.WATT_PER_SQUAREMETRE), + 53.588559702038765, + 0.9, + 1, + false, + UUID.fromString("7607ca0b-959f-48b2-9c5c-1cf7c4ce0dc0") + ) + + protected val pvPlantInputEast1 = new PvInput( + UUID.fromString("82925101-834d-4a43-b0b1-02d2156e8cd9"), + "pv_east_1", + 0.2, + -32.24606798030436, + 0.95, + Quantities.getQuantity(90.48722543753683, PowerSystemUnits.WATT_PER_SQUAREMETRE), + 48.813238479197025, + 0.9, + 1, + false, + UUID.fromString("393eb0e3-7873-4d51-a830-2f1d98ff5a60") + ) + + protected val pvPlantInputEast2 = new PvInput( + UUID.fromString("f9122147-bad0-48ed-9e14-2404fcf07d3c"), + "pv_east_2", + 0.2, + -54.537164978682995, + 0.95, + Quantities.getQuantity(94.0201214211993, PowerSystemUnits.WATT_PER_SQUAREMETRE), + 43.081511203199625, + 0.9, + 1, + false, + UUID.fromString("19a4861e-cbf5-4dcc-bc1d-98611fda6eb5") + ) + + protected val pvPlantInputWest1 = new PvInput( + UUID.fromString("da7bd11d-84d5-4db0-9f3f-2e5f1e7c77de"), + "pv_west_1", + 0.2, + 64.42003592383116, + 0.95, + Quantities.getQuantity(90.72157185757533, PowerSystemUnits.WATT_PER_SQUAREMETRE), + 54.5845761615783, + 0.9, + 1, + false, + UUID.fromString("9a2524f1-3639-4e90-a547-81a259712f8c") + ) + + protected val pvPlantInputWest2 = new PvInput( + UUID.fromString("6d7542a3-4921-437d-94cb-37c1a7e79f9f"), + "pv_west_2", + 0.2, + 41.11365003045648, + 0.95, + Quantities.getQuantity(90.21663937252015, PowerSystemUnits.WATT_PER_SQUAREMETRE), + 52.37527455203235, + 0.9, + 1, + false, + UUID.fromString("9354b02c-a4a9-4e9d-905a-e48110b04d88") + ) + + protected val setOfPvs: Set[PvInput] = Set ( + pvPlantInputSouth1, + pvPlantInputSouth2, + pvPlantInputSouth3, + pvPlantInputSouth4, + pvPlantInputEast1, + pvPlantInputEast2, + pvPlantInputWest1, + pvPlantInputWest2, + )*/ + + val geometryFactory = new GeometryFactory() + val p: Point = geometryFactory.createPoint(new Coordinate(13.2491, 53.457909)) + val nodeInput = new NodeInput( + UUID.fromString("85f8b517-8a2d-4c20-86c6-3ff3c5823e6d"), + "NodeInputModel for PvModel Test", + OperatorInput.NO_OPERATOR_ASSIGNED, + OperationTime.notLimited(), + getQuantity(1, PU), + false, + p, + GermanVoltageLevelUtils.MV_20KV, + 11, + ) + + protected val pvInput = new PvInput( + UUID.fromString("adb4eb23-1dd6-4406-a5e7-02e1e4c9dead"), + "Pv Model Test", + OperatorInput.NO_OPERATOR_ASSIGNED, + OperationTime.notLimited, + nodeInput, + new CosPhiFixed("cosPhiFixed:{(0.0,0.9)}"), + null, + 0.20000000298023224, + getQuantity(-8.926613807678223, DEGREE_GEOM), + getQuantity(97, PERCENT), + getQuantity(41.01871871948242, DEGREE_GEOM), + 0.8999999761581421, + 1, + false, + getQuantity(10, KILOVOLTAMPERE), + 0.8999999761581421, + ) + + protected val setOfPvsTest: Set[PvInput] = Set( + pvInput + ) + +} From feb710d6af89ada2a356292a3790dbf9eec239fe Mon Sep 17 00:00:00 2001 From: pierrepetersmeier Date: Wed, 11 Dec 2024 16:13:21 +0100 Subject: [PATCH 028/102] NodeInputtestdata --- .../test/common/input/NodeInputTestData.scala | 71 ++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala b/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala index 27ace499de..62f01a1a9d 100644 --- a/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala +++ b/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala @@ -7,11 +7,12 @@ package edu.ie3.simona.test.common.input import java.util.UUID - import edu.ie3.datamodel.models.input.{NodeInput, OperatorInput} import edu.ie3.datamodel.models.voltagelevels.GermanVoltageLevelUtils import edu.ie3.simona.test.common.DefaultTestData import edu.ie3.util.quantities.PowerSystemUnits.PU +import org.locationtech.jts.geom.{Coordinate, Point} +import spire.math.Point import tech.units.indriya.quantity.Quantities /** //ToDo: Class Description @@ -96,4 +97,72 @@ trait NodeInputTestData extends DefaultTestData { GermanVoltageLevelUtils.HV, 1, ) + /*protected val nodeInputPvModel1 = + new NodeInput( + UUID.fromString("19a4861e-cbf5-4dcc-bc1d-98611fda6eb5"), + "pvmodelnode1", + OperatorInput.NO_OPERATOR_ASSIGNED, + defaultOperationTime, + Quantities.getQuantity(1.0, PU), + false, + (53.9209, 10.3837), + GermanVoltageLevelUtils.MV_10KV, + -1, + ) + protected val nodeInputPvModel2 = new NodeInput( + UUID.fromString("9a2524f1-3639-4e90-a547-81a259712f8c"), + "pvmodel node 2", + OperatorInput.NO_OPERATOR_ASSIGNED, + defaultOperationTime, + Quantities.getQuantity(1d, PU), + false, + new Coordinate(52.3393, 9.7342), + GermanVoltageLevelUtils.MV_10KV, + -1, + ) + protected val nodeInputPvModel3 = new NodeInput( + UUID.fromString("022a94c6-2d60-4400-875c-ab9db1ae2736"), + "pvmodel node 3", + OperatorInput.NO_OPERATOR_ASSIGNED, + defaultOperationTime, + Quantities.getQuantity(1d, PU), + false, + new Coordinate(52.1861, 10.1991), + GermanVoltageLevelUtils.MV_10KV, + -1, + ) + + protected val nodeInputPvModel4 = new NodeInput( + UUID.fromString("9354b02c-a4a9-4e9d-905a-e48110b04d88"), + "pvmodel node 4", + OperatorInput.NO_OPERATOR_ASSIGNED, + defaultOperationTime, + Quantities.getQuantity(1d, PU), + false, + new Coordinate(53.6567, 10.8245), + GermanVoltageLevelUtils.MV_10KV, + -1, + ) + protected val nodeInputPvModel5 = new NodeInput( + UUID.fromString("393eb0e3-7873-4d51-a830-2f1d98ff5a60"), + "pvmodel node 5", + OperatorInput.NO_OPERATOR_ASSIGNED, + defaultOperationTime, + Quantities.getQuantity(1d, PU), + false, + new Coordinate(51.9644, 10.0134), + GermanVoltageLevelUtils.MV_10KV, + -1, + ) + protected val nodeInputPvModel6 = new NodeInput( + UUID.fromString("7607ca0b-959f-48b2-9c5c-1cf7c4ce0dc0"), + "pvmodel node 6", + OperatorInput.NO_OPERATOR_ASSIGNED, + defaultOperationTime, + Quantities.getQuantity(1d, PU), + false, + new Coordinate(53.6454, 10.4729), + GermanVoltageLevelUtils.MV_10KV, + -1, + )*/ } From af90d242c6de18ae6919d45c801834430a6e0c9c Mon Sep 17 00:00:00 2001 From: pierrepetersmeier Date: Sun, 15 Dec 2024 22:12:36 +0100 Subject: [PATCH 029/102] NodeInputTestData is extended by PvModel node inputs, and a class description is created. --- .../test/common/input/NodeInputTestData.scala | 68 ++++++++++++------- 1 file changed, 42 insertions(+), 26 deletions(-) diff --git a/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala b/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala index 62f01a1a9d..18fc43b7ee 100644 --- a/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala +++ b/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala @@ -6,16 +6,18 @@ package edu.ie3.simona.test.common.input -import java.util.UUID import edu.ie3.datamodel.models.input.{NodeInput, OperatorInput} import edu.ie3.datamodel.models.voltagelevels.GermanVoltageLevelUtils import edu.ie3.simona.test.common.DefaultTestData import edu.ie3.util.quantities.PowerSystemUnits.PU -import org.locationtech.jts.geom.{Coordinate, Point} +import org.locationtech.jts.geom.{Coordinate, GeometryFactory, Point} import spire.math.Point import tech.units.indriya.quantity.Quantities -/** //ToDo: Class Description +import java.util.UUID + +/** Default values for NodeInput's to be used in tests. Should be extended as + * needed. * * @version 0.1 * @since 23.06.20 @@ -97,72 +99,86 @@ trait NodeInputTestData extends DefaultTestData { GermanVoltageLevelUtils.HV, 1, ) - /*protected val nodeInputPvModel1 = + + // PvModelITSpec node input models + val geometryFactory = new GeometryFactory() + + val p1: Point = geometryFactory.createPoint(new Coordinate(53.9209, 10.3837)) + protected val nodeInputPvModel1 = new NodeInput( - UUID.fromString("19a4861e-cbf5-4dcc-bc1d-98611fda6eb5"), - "pvmodelnode1", - OperatorInput.NO_OPERATOR_ASSIGNED, - defaultOperationTime, - Quantities.getQuantity(1.0, PU), - false, - (53.9209, 10.3837), - GermanVoltageLevelUtils.MV_10KV, - -1, - ) + UUID.fromString("19a4861e-cbf5-4dcc-bc1d-98611fda6eb5"), + "pvModelNode1", + OperatorInput.NO_OPERATOR_ASSIGNED, + defaultOperationTime, + Quantities.getQuantity(1.0, PU), + false, + p1, + GermanVoltageLevelUtils.MV_10KV, + -1, + ) + + val p2: Point = geometryFactory.createPoint(new Coordinate(52.3393, 9.7342)) protected val nodeInputPvModel2 = new NodeInput( UUID.fromString("9a2524f1-3639-4e90-a547-81a259712f8c"), - "pvmodel node 2", + "pvModelNode2", OperatorInput.NO_OPERATOR_ASSIGNED, defaultOperationTime, Quantities.getQuantity(1d, PU), false, - new Coordinate(52.3393, 9.7342), + p2, GermanVoltageLevelUtils.MV_10KV, -1, ) + + val p3: Point = geometryFactory.createPoint(new Coordinate(52.1861, 10.1991)) protected val nodeInputPvModel3 = new NodeInput( UUID.fromString("022a94c6-2d60-4400-875c-ab9db1ae2736"), - "pvmodel node 3", + "pvModelNode3", OperatorInput.NO_OPERATOR_ASSIGNED, defaultOperationTime, Quantities.getQuantity(1d, PU), false, - new Coordinate(52.1861, 10.1991), + p3, GermanVoltageLevelUtils.MV_10KV, -1, ) + val p4: Point = geometryFactory.createPoint(new Coordinate(53.6567, 10.8245)) protected val nodeInputPvModel4 = new NodeInput( UUID.fromString("9354b02c-a4a9-4e9d-905a-e48110b04d88"), - "pvmodel node 4", + "pvModelNode4", OperatorInput.NO_OPERATOR_ASSIGNED, defaultOperationTime, Quantities.getQuantity(1d, PU), false, - new Coordinate(53.6567, 10.8245), + p4, GermanVoltageLevelUtils.MV_10KV, -1, ) - protected val nodeInputPvModel5 = new NodeInput( + + val p5: Point = geometryFactory.createPoint(new Coordinate(51.9644, 10.0134)) + protected val nodeInputPvModel5: NodeInput = new NodeInput( UUID.fromString("393eb0e3-7873-4d51-a830-2f1d98ff5a60"), - "pvmodel node 5", + "pvModelNode5", OperatorInput.NO_OPERATOR_ASSIGNED, defaultOperationTime, Quantities.getQuantity(1d, PU), false, - new Coordinate(51.9644, 10.0134), + p5, GermanVoltageLevelUtils.MV_10KV, -1, ) + + val p6: Point = geometryFactory.createPoint(new Coordinate(53.6454, 10.4729)) protected val nodeInputPvModel6 = new NodeInput( UUID.fromString("7607ca0b-959f-48b2-9c5c-1cf7c4ce0dc0"), - "pvmodel node 6", + "pvModelNode6", OperatorInput.NO_OPERATOR_ASSIGNED, defaultOperationTime, Quantities.getQuantity(1d, PU), false, - new Coordinate(53.6454, 10.4729), + p6, GermanVoltageLevelUtils.MV_10KV, -1, - )*/ + ) } From a895b3eae95dd131edc57e77f72640c383446c11 Mon Sep 17 00:00:00 2001 From: pierrepetersmeier <155652256+pierrepetersmeier@users.noreply.github.com> Date: Mon, 6 Jan 2025 18:41:18 +0100 Subject: [PATCH 030/102] Refactor Groovy PvModelIT test to Scala. --- CHANGELOG.md | 1 + .../simona/model/participant/PvModelIT.scala | 42 ++-- .../model/participant/PvModelITHelper.scala | 168 ++++++---------- .../test/common/input/NodeInputTestData.scala | 1 - .../test/common/input/PvInputTestData.scala | 171 ++++++++++++++++ .../test/common/input/PvPlantsTestData.scala | 190 ------------------ 6 files changed, 253 insertions(+), 320 deletions(-) delete mode 100644 src/test/scala/edu/ie3/simona/test/common/input/PvPlantsTestData.scala diff --git a/CHANGELOG.md b/CHANGELOG.md index 33098b858f..9be536547e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -93,6 +93,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Rewrote CylindricalThermalStorageTest Test from groovy to scala [#646](https://github.com/ie3-institute/simona/issues/646) - Replace mutable var in ChpModelSpec [#1002](https://github.com/ie3-institute/simona/issues/1002) - Move compression of output files into `ResultEventListener`[#965](https://github.com/ie3-institute/simona/issues/965) +- Rewrote PvModelIT from groovy to scala [#646](https://github.com/ie3-institute/simona/issues/646) ### Fixed - Removed a repeated line in the documentation of vn_simona config [#658](https://github.com/ie3-institute/simona/issues/658) diff --git a/src/test/scala/edu/ie3/simona/model/participant/PvModelIT.scala b/src/test/scala/edu/ie3/simona/model/participant/PvModelIT.scala index 478ca9e275..0ec489636a 100644 --- a/src/test/scala/edu/ie3/simona/model/participant/PvModelIT.scala +++ b/src/test/scala/edu/ie3/simona/model/participant/PvModelIT.scala @@ -6,63 +6,53 @@ package edu.ie3.simona.model.participant -import edu.ie3.simona.ontology.messages.services.WeatherMessage import edu.ie3.simona.test.common.UnitSpec import org.scalatest.matchers.should.Matchers -import squants.{Dimensionless, Each} -import squants.energy.Power - -import java.time.ZonedDateTime -import java.util.Locale -import scala.collection.mutable.ArrayBuffer +import squants.Each /** A simple integration test that uses pre-calculated data to check if the pv * model works as expected. It uses 8 pv models located in GER. */ -class PvModelIT extends UnitSpec with Matchers with PvModelITHelper { - - Locale.setDefault(Locale.US) - val pvModels: Map[String, PvModel] = getCreatePvModels - val weatherMap: Map[ZonedDateTime, Map[String, WeatherMessage.WeatherData]] = - getWeatherData - val resultsMap: Map[ZonedDateTime, Map[String, Power]] = getResultsData +class PvModelIT extends Matchers with UnitSpec with PvModelITHelper { - "8 pv panels full year test" should { - "yield results close to the expected data" in { - val testRes = ArrayBuffer[Double]() + "The photovoltaic model" should { + "match the expected results for all 8 PV panels over the whole year" in { + val pvModels = createPvModels() + val weatherMap = getWeatherData + val resultsMap = getResultsData val modelIds = pvModels.keys.toList.sorted val keyList = weatherMap.keys.toList.sorted - keyList.foreach { dateTime => + val testRes = keyList.flatMap { dateTime => val modelToWeatherMap = weatherMap(dateTime) - var modelI = 0 - modelIds.foreach { modelId => + modelIds.map { modelId => val model = pvModels(modelId) val weather = modelToWeatherMap(modelId) - val neededData = PvModel.PvRelevantData( dateTime, 3600L, weather.diffIrr, weather.dirIrr, ) - val voltage: Dimensionless = Each(1.414213562d) + val voltage = Each(1.414213562d) val calc = model .calculatePower(0L, voltage, ModelState.ConstantState, neededData) .p .toMegawatts - val sol = resultsMap(dateTime)(modelId).toMegawatts - testRes += Math.abs(calc - sol) + val sol = resultsMap(dateTime)(modelId).toMegawatts - modelI += 1 + math.abs(calc - sol) } } - testRes.forall(_ < 1e-14) shouldBe true + + testRes.forall { diff => + diff < 1e-14 + } shouldBe true } } } diff --git a/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala b/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala index 5673cb4ad6..4122f7b690 100644 --- a/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala +++ b/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala @@ -6,148 +6,110 @@ package edu.ie3.simona.model.participant -import edu.ie3.datamodel.models.input.{NodeInput, OperatorInput} -import edu.ie3.datamodel.models.input.system.PvInput -import edu.ie3.datamodel.models.input.system.characteristic.CosPhiFixed -import edu.ie3.datamodel.models.voltagelevels.GermanVoltageLevelUtils -import edu.ie3.datamodel.models.{OperationTime, StandardUnits} import edu.ie3.simona.ontology.messages.services.WeatherMessage +import edu.ie3.simona.test.common.input.PvInputTestData import edu.ie3.util.TimeUtil -import edu.ie3.util.quantities.PowerSystemUnits.PU import edu.ie3.util.scala.quantities.WattsPerSquareMeter import org.apache.commons.csv.{CSVFormat, CSVRecord} import squants.energy.Megawatts import squants.motion.MetersPerSecond -import squants.space.Degrees -import squants.{Angle, Kelvin, Power} -import tech.units.indriya.quantity.Quantities -import tech.units.indriya.quantity.Quantities.getQuantity +import squants.{Kelvin, Power} -import java.io.{BufferedReader, File, FileInputStream, InputStreamReader, Reader} -import java.nio.file.{Files, Path} +import java.io.{BufferedReader, File, FileInputStream, InputStreamReader} +import java.nio.charset.StandardCharsets import java.time.ZonedDateTime -import java.util.UUID import java.util.zip.GZIPInputStream -import scala.collection.convert.ImplicitConversions.{`iterator asScala`, `map AsJavaMap`} -import scala.collection.immutable.HashMap -import scala.jdk.CollectionConverters.CollectionHasAsScala +import scala.collection.mutable +import scala.jdk.CollectionConverters.IterableHasAsScala -trait PvModelITHelper { +trait PvModelITHelper extends PvInputTestData { - private val CSV_FORMAT = CSVFormat.DEFAULT.builder().setHeader().build() - implicit val angleTolerance: Angle = Degrees(1e-5) + private val CSV_FORMAT: CSVFormat = + CSVFormat.DEFAULT.builder().setHeader().build() - def getCsvRecords(fileName: String): java.util.Iterator[CSVRecord] = { - val resultsInputData = new File(this.getClass.getResource(fileName).getFile) + def getCsvRecords(fileName: String): Iterable[CSVRecord] = { + val resourcePath = getClass.getResource(fileName).getPath + val resultsInputData = new File(resourcePath) val fileStream = new FileInputStream(resultsInputData) val gzipStream = new GZIPInputStream(fileStream) - val decoder = new InputStreamReader(gzipStream, "UTF-8") + val decoder = new InputStreamReader(gzipStream, StandardCharsets.UTF_8) val br = new BufferedReader(decoder) - CSVFormat.DEFAULT.parse(br).iterator() - } - - def parsePvInputCSV(line: String): Option[PvInput] = { - val nodeInput = new NodeInput( - UUID.fromString("85f8b517-8a2d-4c20-86c6-3ff3c5823e6d"), - "NodeInputModel for PvModel Test", - OperatorInput.NO_OPERATOR_ASSIGNED, - OperationTime.notLimited(), - getQuantity(1, PU), - false, - NodeInput.DEFAULT_GEO_POSITION, - GermanVoltageLevelUtils.MV_20KV, - 11, - ) - val fields = line.split(";") - if (fields.length >= 15) { - Some(new PvInput( - UUID.fromString(fields(0)), - fields(6), - new OperatorInput(UUID.randomUUID(), "NO_OPERATOR"), - OperationTime.notLimited(), - nodeInput, - CosPhiFixed.CONSTANT_CHARACTERISTIC, - null, - fields(8).toInt, - Quantities.getQuantity(fields(2).toDouble, StandardUnits.AZIMUTH), - Quantities.getQuantity(fields(4).toDouble, StandardUnits.EFFICIENCY), - Quantities.getQuantity( - fields(5).toDouble, - StandardUnits.SOLAR_ELEVATION_ANGLE, - ), - fields(12).toDouble, - fields(7).toDouble, - fields(9).toBoolean, - Quantities.getQuantity(fields(12).toDouble, StandardUnits.S_RATED), - fields(3).toDouble, - )) - } else throw new RuntimeException("This should...") + CSV_FORMAT.parse(br).asScala } - def getCreatePvModels: Map[String, PvModel] = { - - val csvPath = Path.of(getClass.getResource("_pv.it/grid_data").toURI) - val lines = Files.readAllLines(csvPath).asScala - val pvPlants: Set[PvInput] = lines.drop(1).flatMap(parsePvInputCSV).toSet - val simulationStartDate = - TimeUtil.withDefaults.toZonedDateTime("2011-01-01T00:00:00Z") - val simulationEndDate = - TimeUtil.withDefaults.toZonedDateTime("2012-01-01T00:00:00Z") - - val pvModels : HashMap[String, PvModel] = HashMap.empty - - pvPlants.foreach { inputModel => - val model = PvModel( + def createPvModels(): Map[String, PvModel] = { + pvInputsTest.map { inputModel => + inputModel.getId -> PvModel( inputModel, - 1d, - simulationStartDate, - simulationEndDate, + 1.0, + defaultSimulationStart, + defaultSimulationEnd, ) - pvModels.put(inputModel.getId, model) - } - pvModels + }.toMap } + def getWeatherData + : Map[ZonedDateTime, Map[String, WeatherMessage.WeatherData]] = { + val fileName = "_pv/it/weather.tar.gz" + val csvRecords: Iterable[CSVRecord] = getCsvRecords(fileName) - def getWeatherData : Map[ZonedDateTime, Map[String, WeatherMessage.WeatherData]] = { - val filePath = Path.of("resources/_pv/it/weather.tar.gz") - val csvRecords = getCsvRecords(filePath.toString) + val weatherMap = mutable + .Map[ZonedDateTime, mutable.Map[String, WeatherMessage.WeatherData]]() - csvRecords.foldLeft( - Map.empty[ZonedDateTime, Map[String, WeatherMessage.WeatherData]] - ) { (weatherMap, row) => + for (row <- csvRecords) { val time = TimeUtil.withDefaults.toZonedDateTime(row.get(0)) val modelId = row.get(1) + + val temp = 0.0 + val windVel = 0.0 + val weather = WeatherMessage.WeatherData( WattsPerSquareMeter(row.get(22).replace("Wh/m²", "").toDouble), WattsPerSquareMeter(row.get(21).replace("Wh/m²", "").toDouble), - Kelvin(0), - MetersPerSecond(0), + Kelvin(temp), + MetersPerSecond(windVel), ) - val modelToWeatherMap = weatherMap.getOrElse( + + val modelToWeatherMap = weatherMap.getOrElseUpdate( time, - Map.empty[String, WeatherMessage.WeatherData], + mutable.Map[String, WeatherMessage.WeatherData](), ) - weatherMap + (time -> (modelToWeatherMap + (modelId -> weather))) + modelToWeatherMap(modelId) = weather } + + weatherMap.view.mapValues(_.toMap).toMap } def getResultsData: Map[ZonedDateTime, Map[String, Power]] = { - val filePath = Path.of("resources/_pv/it/results2.tar.gz") - val csvRecords = getCsvRecords(filePath.toString) + val fileName = "_pv/it/results2.tar.gz" + val csvRecords: Iterable[CSVRecord] = getCsvRecords(fileName) + + val headers = Array( + "Datetime", + "pv_east_1", + "pv_east_2", + "pv_south_1", + "pv_south_2", + "pv_south_3", + "pv_south_4", + "pv_west_1", + "pv_west_2", + ) - csvRecords.foldLeft(Map.empty[ZonedDateTime, Map[String, Power]]) { - (resultsMap, row) => + val resultsMap = csvRecords + .filterNot(row => row.get(0).startsWith("\u0000")) + .map { row => val time = TimeUtil.withDefaults.toZonedDateTime(row.get(0)) - - val powerData = (1 until row.size()).map { i => - val modelId = s"pv_${i}" - val power = Megawatts(row.get(i).toDouble) - modelId -> power + val modelToPowerMap = headers.tail.zipWithIndex.collect { + case (modelId, i) => + val rawValue = row.get(i + 1) + modelId -> Megawatts(rawValue.toDouble) }.toMap + time -> modelToPowerMap + } + .toMap - resultsMap + (time -> powerData) - } + resultsMap } } diff --git a/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala b/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala index 18fc43b7ee..787a3ba055 100644 --- a/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala +++ b/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala @@ -11,7 +11,6 @@ import edu.ie3.datamodel.models.voltagelevels.GermanVoltageLevelUtils import edu.ie3.simona.test.common.DefaultTestData import edu.ie3.util.quantities.PowerSystemUnits.PU import org.locationtech.jts.geom.{Coordinate, GeometryFactory, Point} -import spire.math.Point import tech.units.indriya.quantity.Quantities import java.util.UUID diff --git a/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala b/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala index f9b6a05c17..0c164671d8 100644 --- a/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala +++ b/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala @@ -54,4 +54,175 @@ trait PvInputTestData Quantities.getQuantity(10, StandardUnits.S_RATED), 0.95, ) + + protected val pvSouth1 = new PvInput( + UUID.fromString("7ac5bb15-36ee-42b0-902b-9cd520e241b3"), + "pv_south_1", + new OperatorInput(UUID.randomUUID(), "NO_OPERATOR"), + OperationTime.notLimited, + nodeInputPvModel3, + CosPhiFixed.CONSTANT_CHARACTERISTIC, + null, + 0.9, + Quantities.getQuantity(16.09490984119475, StandardUnits.AZIMUTH), + Quantities.getQuantity(91.23978812713176, StandardUnits.EFFICIENCY), + Quantities + .getQuantity(51.75144341774285, StandardUnits.SOLAR_ELEVATION_ANGLE), + 100, + 0.95, + false, + Quantities.getQuantity(100, StandardUnits.S_RATED), + 0.95, + ) + + protected val pvSouth2 = new PvInput( + UUID.fromString("939d254a-98b9-43d9-939d-dac9d91e7d73"), + "pv_south_2", + new OperatorInput(UUID.randomUUID(), "NO_OPERATOR"), + OperationTime.notLimited(), + nodeInputPvModel2, + CosPhiFixed.CONSTANT_CHARACTERISTIC, + null, + 0.9, + Quantities.getQuantity(-11.883286549709737, StandardUnits.AZIMUTH), + Quantities.getQuantity(93.55452200165019, StandardUnits.EFFICIENCY), + Quantities + .getQuantity(50.710754711180925, StandardUnits.SOLAR_ELEVATION_ANGLE), + 100, + 0.95, + false, + Quantities.getQuantity(100, StandardUnits.S_RATED), + 0.95, + ) + + protected val pvSouth3 = new PvInput( + UUID.fromString("e3b34366-9a4b-4e8f-b46d-fccdd3c318b3"), + "pv_south_3", + new OperatorInput(UUID.randomUUID(), "NO_OPERATOR"), + OperationTime.notLimited(), + nodeInputPvModel4, + CosPhiFixed.CONSTANT_CHARACTERISTIC, + null, + 0.9, + Quantities.getQuantity(-3.6445723846554756, StandardUnits.AZIMUTH), + Quantities.getQuantity(90.07983175106347, StandardUnits.EFFICIENCY), + Quantities + .getQuantity(50.727743320167065, StandardUnits.SOLAR_ELEVATION_ANGLE), + 100, + 0.95, + false, + Quantities.getQuantity(100, StandardUnits.S_RATED), + 0.95, + ) + + protected val pvSouth4 = new PvInput( + UUID.fromString("403a3d17-0b71-4631-bcc4-71416c6376ed"), + "pv_south_4", + new OperatorInput(UUID.randomUUID(), "NO_OPERATOR"), + OperationTime.notLimited(), + nodeInputPvModel6, + CosPhiFixed.CONSTANT_CHARACTERISTIC, + null, + 0.9, + Quantities.getQuantity(-16.249216510914266, StandardUnits.AZIMUTH), + Quantities.getQuantity(90.57719040894882, StandardUnits.EFFICIENCY), + Quantities + .getQuantity(53.588559702038765, StandardUnits.SOLAR_ELEVATION_ANGLE), + 100, + 0.95, + false, + Quantities.getQuantity(100, StandardUnits.S_RATED), + 0.95, + ) + + protected val pvEast1 = new PvInput( + UUID.fromString("82925101-834d-4a43-b0b1-02d2156e8cd9"), + "pv_east_1", + new OperatorInput(UUID.randomUUID(), "NO_OPERATOR"), + OperationTime.notLimited(), + nodeInputPvModel5, + CosPhiFixed.CONSTANT_CHARACTERISTIC, + null, + 0.9, + Quantities.getQuantity(-32.24606798030436, StandardUnits.AZIMUTH), + Quantities.getQuantity(90.48722543753683, StandardUnits.EFFICIENCY), + Quantities + .getQuantity(48.813238479197025, StandardUnits.SOLAR_ELEVATION_ANGLE), + 100, + 0.95, + false, + Quantities.getQuantity(100, StandardUnits.S_RATED), + 0.95, + ) + + protected val pvEast2 = new PvInput( + UUID.fromString("f9122147-bad0-48ed-9e14-2404fcf07d3c"), + "pv_east_2", + new OperatorInput(UUID.randomUUID(), "NO_OPERATOR"), + OperationTime.notLimited(), + nodeInputPvModel1, + CosPhiFixed.CONSTANT_CHARACTERISTIC, + null, + 0.9, + Quantities.getQuantity(-54.537164978682995, StandardUnits.AZIMUTH), + Quantities.getQuantity(94.0201214211993, StandardUnits.EFFICIENCY), + Quantities + .getQuantity(43.081511203199625, StandardUnits.SOLAR_ELEVATION_ANGLE), + 100, + 0.95, + false, + Quantities.getQuantity(100, StandardUnits.S_RATED), + 0.95, + ) + + protected val pvWest1 = new PvInput( + UUID.fromString("da7bd11d-84d5-4db0-9f3f-2e5f1e7c77de"), + "pv_west_1", + new OperatorInput(UUID.randomUUID(), "NO_OPERATOR"), + OperationTime.notLimited(), + nodeInputPvModel2, + CosPhiFixed.CONSTANT_CHARACTERISTIC, + null, + 0.9, + Quantities.getQuantity(64.42003592383116, StandardUnits.AZIMUTH), + Quantities.getQuantity(90.72157185757533, StandardUnits.EFFICIENCY), + Quantities + .getQuantity(54.5845761615783, StandardUnits.SOLAR_ELEVATION_ANGLE), + 100, + 0.95, + false, + Quantities.getQuantity(100, StandardUnits.S_RATED), + 0.95, + ) + + protected val pvWest2 = new PvInput( + UUID.fromString("6d7542a3-4921-437d-94cb-37c1a7e79f9f"), + "pv_west_2", + new OperatorInput(UUID.randomUUID(), "NO_OPERATOR"), + OperationTime.notLimited(), + nodeInputPvModel4, + CosPhiFixed.CONSTANT_CHARACTERISTIC, + null, + 0.9, + Quantities.getQuantity(41.11365003045648, StandardUnits.AZIMUTH), + Quantities.getQuantity(90.21663937252015, StandardUnits.EFFICIENCY), + Quantities + .getQuantity(52.37527455203235, StandardUnits.SOLAR_ELEVATION_ANGLE), + 100, + 0.95, + false, + Quantities.getQuantity(100, StandardUnits.S_RATED), + 0.95, + ) + + protected val pvInputsTest: Set[PvInput] = Set( + pvSouth1, + pvSouth2, + pvSouth3, + pvSouth4, + pvEast1, + pvEast2, + pvWest1, + pvWest2, + ) } diff --git a/src/test/scala/edu/ie3/simona/test/common/input/PvPlantsTestData.scala b/src/test/scala/edu/ie3/simona/test/common/input/PvPlantsTestData.scala deleted file mode 100644 index 758c11c9b7..0000000000 --- a/src/test/scala/edu/ie3/simona/test/common/input/PvPlantsTestData.scala +++ /dev/null @@ -1,190 +0,0 @@ -/* - * © 2024. TU Dortmund University, - * Institute of Energy Systems, Energy Efficiency and Energy Economics, - * Research group Distribution grid planning and operation - */ - -package edu.ie3.simona.test.common.input - -import edu.ie3.datamodel.models.input.{NodeInput, OperatorInput} -import edu.ie3.datamodel.models.{OperationTime, StandardUnits} -import edu.ie3.datamodel.models.input.system.PvInput -import edu.ie3.datamodel.models.input.system.characteristic.CosPhiFixed -import edu.ie3.datamodel.models.voltagelevels.GermanVoltageLevelUtils -import edu.ie3.simona.test.common.DefaultTestData -import edu.ie3.util.quantities.PowerSystemUnits -import edu.ie3.util.quantities.PowerSystemUnits.{ - DEGREE_GEOM, - KILOVOLTAMPERE, - PU, -} -import org.locationtech.jts.geom.{Coordinate, GeometryFactory, Point} -import tech.units.indriya.quantity.Quantities -import tech.units.indriya.quantity.Quantities.getQuantity -import tech.units.indriya.unit.Units.PERCENT - -import java.util.UUID - -trait PvPlantsTestData extends NodeInputTestData { - - /*protected val pvPlantInputSouth1 = new PvInput( - UUID.fromString("7ac5bb15-36ee-42b0-902b-9cd520e241b3"), - "pv_south_1", - 0.2, // albedo - 16.09490984119475, // azimuth - 0.95, // cosphi_rated - Quantities.getQuantity(91.23978812713176, PowerSystemUnits.WATT_PER_SQUAREMETRE), // eta_conv - 51.75144341774285, // elevation_angle - 0.9, // k_g - 1, // k_t - false, // market_reaction - nodeInputNoSlackNs04KvA// node - ) - - protected val pvPlantInputSouth2 = new PvInput( - UUID.fromString("939d254a-98b9-43d9-939d-dac9d91e7d73"), - "pv_south_2", - 0.2, - -11.883286549709737, - 0.95, - Quantities.getQuantity(93.55452200165019, PowerSystemUnits.WATT_PER_SQUAREMETRE), - 50.710754711180925, - 0.9, - 1, - false, - UUID.fromString("9a2524f1-3639-4e90-a547-81a259712f8c") - ) - - protected val pvPlantInputSouth3 = new PvInput( - UUID.fromString("e3b34366-9a4b-4e8f-b46d-fccdd3c318b3"), - "pv_south_3", - 0.2, - -3.6445723846554756, - 0.95, - Quantities.getQuantity(90.07983175106347, PowerSystemUnits.WATT_PER_SQUAREMETRE), - 50.727743320167065, - 0.9, - 1, - false, - UUID.fromString("9354b02c-a4a9-4e9d-905a-e48110b04d88") - ) - - protected val pvPlantInputSouth4 = new PvInput( - UUID.fromString("403a3d17-0b71-4631-bcc4-71416c6376ed"), - "pv_south_4", - 0.2, - -16.249216510914266, - 0.95, - Quantities.getQuantity(90.57719040894882, PowerSystemUnits.WATT_PER_SQUAREMETRE), - 53.588559702038765, - 0.9, - 1, - false, - UUID.fromString("7607ca0b-959f-48b2-9c5c-1cf7c4ce0dc0") - ) - - protected val pvPlantInputEast1 = new PvInput( - UUID.fromString("82925101-834d-4a43-b0b1-02d2156e8cd9"), - "pv_east_1", - 0.2, - -32.24606798030436, - 0.95, - Quantities.getQuantity(90.48722543753683, PowerSystemUnits.WATT_PER_SQUAREMETRE), - 48.813238479197025, - 0.9, - 1, - false, - UUID.fromString("393eb0e3-7873-4d51-a830-2f1d98ff5a60") - ) - - protected val pvPlantInputEast2 = new PvInput( - UUID.fromString("f9122147-bad0-48ed-9e14-2404fcf07d3c"), - "pv_east_2", - 0.2, - -54.537164978682995, - 0.95, - Quantities.getQuantity(94.0201214211993, PowerSystemUnits.WATT_PER_SQUAREMETRE), - 43.081511203199625, - 0.9, - 1, - false, - UUID.fromString("19a4861e-cbf5-4dcc-bc1d-98611fda6eb5") - ) - - protected val pvPlantInputWest1 = new PvInput( - UUID.fromString("da7bd11d-84d5-4db0-9f3f-2e5f1e7c77de"), - "pv_west_1", - 0.2, - 64.42003592383116, - 0.95, - Quantities.getQuantity(90.72157185757533, PowerSystemUnits.WATT_PER_SQUAREMETRE), - 54.5845761615783, - 0.9, - 1, - false, - UUID.fromString("9a2524f1-3639-4e90-a547-81a259712f8c") - ) - - protected val pvPlantInputWest2 = new PvInput( - UUID.fromString("6d7542a3-4921-437d-94cb-37c1a7e79f9f"), - "pv_west_2", - 0.2, - 41.11365003045648, - 0.95, - Quantities.getQuantity(90.21663937252015, PowerSystemUnits.WATT_PER_SQUAREMETRE), - 52.37527455203235, - 0.9, - 1, - false, - UUID.fromString("9354b02c-a4a9-4e9d-905a-e48110b04d88") - ) - - protected val setOfPvs: Set[PvInput] = Set ( - pvPlantInputSouth1, - pvPlantInputSouth2, - pvPlantInputSouth3, - pvPlantInputSouth4, - pvPlantInputEast1, - pvPlantInputEast2, - pvPlantInputWest1, - pvPlantInputWest2, - )*/ - - val geometryFactory = new GeometryFactory() - val p: Point = geometryFactory.createPoint(new Coordinate(13.2491, 53.457909)) - val nodeInput = new NodeInput( - UUID.fromString("85f8b517-8a2d-4c20-86c6-3ff3c5823e6d"), - "NodeInputModel for PvModel Test", - OperatorInput.NO_OPERATOR_ASSIGNED, - OperationTime.notLimited(), - getQuantity(1, PU), - false, - p, - GermanVoltageLevelUtils.MV_20KV, - 11, - ) - - protected val pvInput = new PvInput( - UUID.fromString("adb4eb23-1dd6-4406-a5e7-02e1e4c9dead"), - "Pv Model Test", - OperatorInput.NO_OPERATOR_ASSIGNED, - OperationTime.notLimited, - nodeInput, - new CosPhiFixed("cosPhiFixed:{(0.0,0.9)}"), - null, - 0.20000000298023224, - getQuantity(-8.926613807678223, DEGREE_GEOM), - getQuantity(97, PERCENT), - getQuantity(41.01871871948242, DEGREE_GEOM), - 0.8999999761581421, - 1, - false, - getQuantity(10, KILOVOLTAMPERE), - 0.8999999761581421, - ) - - protected val setOfPvsTest: Set[PvInput] = Set( - pvInput - ) - -} From ce1309fb9949380cd75245a3cf8d3f0a55dff688 Mon Sep 17 00:00:00 2001 From: staudtMarius Date: Mon, 13 Jan 2025 15:39:09 +0100 Subject: [PATCH 031/102] Added support for topologies without transformers and slack grids with multiple nodes --- CHANGELOG.md | 1 + .../ie3/simona/agent/grid/DBFSAlgorithm.scala | 51 +----- .../edu/ie3/simona/agent/grid/GridAgent.scala | 14 +- .../simona/agent/grid/GridAgentMessages.scala | 1 + .../simona/agent/grid/PowerFlowSupport.scala | 68 +++++++ .../sim/setup/SimonaStandaloneSetup.scala | 12 +- .../agent/grid/DBFSMockGridAgents.scala | 2 +- .../agent/grid/PowerFlowSupportSpec.scala | 168 +++++++++++++++++- 8 files changed, 261 insertions(+), 56 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 416c701666..73b83b1448 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -43,6 +43,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Create `CITATION.cff` [#1035](https://github.com/ie3-institute/simona/issues/1035) - Introduce ThermalDemandWrapper [#1049](https://github.com/ie3-institute/simona/issues/1049) - Added Marius Staudt to list of reviewers [#1057](https://github.com/ie3-institute/simona/issues/1057) +- Added support for topologies without transformers and slack grids with multiple nodes [#1099](https://github.com/ie3-institute/simona/issues/1099) ### Changed - Adapted to changed data source in PSDM [#435](https://github.com/ie3-institute/simona/issues/435) diff --git a/src/main/scala/edu/ie3/simona/agent/grid/DBFSAlgorithm.scala b/src/main/scala/edu/ie3/simona/agent/grid/DBFSAlgorithm.scala index d0a23ea6da..ae5140899d 100644 --- a/src/main/scala/edu/ie3/simona/agent/grid/DBFSAlgorithm.scala +++ b/src/main/scala/edu/ie3/simona/agent/grid/DBFSAlgorithm.scala @@ -6,7 +6,7 @@ package edu.ie3.simona.agent.grid -import breeze.linalg.{DenseMatrix, DenseVector} +import breeze.linalg.DenseVector import breeze.math.Complex import edu.ie3.datamodel.graph.SubGridGate import edu.ie3.powerflow.model.FailureCause.CalculationFailed @@ -806,7 +806,7 @@ trait DBFSAlgorithm extends PowerFlowSupport with GridResultsSupport { * @return * a [[Behavior]] */ - private def checkPowerDifferences( + private[grid] def checkPowerDifferences( gridAgentBaseData: GridAgentBaseData )(implicit constantData: GridAgentConstantData, @@ -817,50 +817,11 @@ trait DBFSAlgorithm extends PowerFlowSupport with GridResultsSupport { ctx.log.debug("Starting the power differences check ...") val currentSweepNo = gridAgentBaseData.currentSweepNo - val gridModel = gridAgentBaseData.gridEnv.gridModel - - /* This is the highest grid agent, therefore no data is received for the slack node. Suppress, that it is looked - * up in the empty store. */ - val (operationPoint, slackNodeVoltages) = composeOperatingPoint( - gridModel.gridComponents.nodes, - gridModel.gridComponents.transformers, - gridModel.gridComponents.transformers3w, - gridModel.nodeUuidToIndexMap, + slackGridPF( + gridAgentBaseData.gridEnv.gridModel, gridAgentBaseData.receivedValueStore, - gridModel.mainRefSystem, - targetVoltageFromReceivedData = false, - ) - - /* Regarding the power flow result of this grid, there are two cases. If this is the "highest" grid in a - * simulation without a three winding transformer, the grid consists of only one node, and we can mock the power - * flow results. If there is a three winding transformer apparent, we actually have to perform power flow - * calculations, as the high voltage branch of the transformer is modeled here. */ - (if (gridModel.gridComponents.transformers3w.isEmpty) { - val nodeData = operationPoint.map(StateData(_)) - ValidNewtonRaphsonPFResult(-1, nodeData, DenseMatrix(0d, 0d)) - } else { - ctx.log.debug( - "This grid contains a three winding transformer. Perform power flow calculations before assessing the power deviations." - ) - newtonRaphsonPF( - gridModel, - gridAgentBaseData.powerFlowParams.maxIterations, - operationPoint, - slackNodeVoltages, - )(gridAgentBaseData.powerFlowParams.epsilon)(ctx.log) match { - case validPowerFlowResult: ValidNewtonRaphsonPFResult => - ctx.log.debug( - "{}", - composeValidNewtonRaphsonPFResultVoltagesDebugString( - validPowerFlowResult, - gridModel, - ), - ) - validPowerFlowResult - case result: PowerFlowResult.FailedPowerFlowResult => - result - } - }) match { + gridAgentBaseData.powerFlowParams, + )(ctx.log) match { case validResult: ValidNewtonRaphsonPFResult => val updatedGridAgentBaseData: GridAgentBaseData = gridAgentBaseData diff --git a/src/main/scala/edu/ie3/simona/agent/grid/GridAgent.scala b/src/main/scala/edu/ie3/simona/agent/grid/GridAgent.scala index c9bca30ce1..f7e82f854c 100644 --- a/src/main/scala/edu/ie3/simona/agent/grid/GridAgent.scala +++ b/src/main/scala/edu/ie3/simona/agent/grid/GridAgent.scala @@ -81,25 +81,30 @@ object GridAgent extends DBFSAlgorithm { simonaConfig: SimonaConfig, ): Behavior[Request] = Behaviors.receiveMessagePartial { - case CreateGridAgent(gridAgentInitData, unlockKey) => + case CreateGridAgent(gridAgentInitData, unlockKey, onlyOneSubGrid) => constantData.environmentRefs.scheduler ! ScheduleActivation( constantData.activationAdapter, INIT_SIM_TICK, Some(unlockKey), ) - initializing(gridAgentInitData, simonaConfig) + initializing(gridAgentInitData, simonaConfig, onlyOneSubGrid) } private def initializing( gridAgentInitData: GridAgentInitData, simonaConfig: SimonaConfig, + onlyOneSubGrid: Boolean, )(implicit constantData: GridAgentConstantData, buffer: StashBuffer[Request], ): Behavior[Request] = Behaviors.receivePartial { case (ctx, WrappedActivation(Activation(INIT_SIM_TICK))) => // fail fast sanity checks - failFast(gridAgentInitData, SimonaActorNaming.actorName(ctx.self)) + failFast( + gridAgentInitData, + SimonaActorNaming.actorName(ctx.self), + onlyOneSubGrid, + ) ctx.log.debug( s"Inferior Subnets: {}; Inferior Subnet Nodes: {}", @@ -227,9 +232,10 @@ object GridAgent extends DBFSAlgorithm { private def failFast( gridAgentInitData: GridAgentInitData, actorName: String, + onlyOneSubGrid: Boolean, ): Unit = { if ( - gridAgentInitData.superiorGridGates.isEmpty && gridAgentInitData.inferiorGridGates.isEmpty + gridAgentInitData.superiorGridGates.isEmpty && gridAgentInitData.inferiorGridGates.isEmpty && !onlyOneSubGrid ) throw new GridAgentInitializationException( s"$actorName has neither superior nor inferior grids! This can either " + diff --git a/src/main/scala/edu/ie3/simona/agent/grid/GridAgentMessages.scala b/src/main/scala/edu/ie3/simona/agent/grid/GridAgentMessages.scala index 288add1bd9..e024cfe3f6 100644 --- a/src/main/scala/edu/ie3/simona/agent/grid/GridAgentMessages.scala +++ b/src/main/scala/edu/ie3/simona/agent/grid/GridAgentMessages.scala @@ -34,6 +34,7 @@ object GridAgentMessages { final case class CreateGridAgent( gridAgentInitData: GridAgentInitData, unlockKey: ScheduleKey, + onlyOneSubGrid: Boolean = false, ) extends GridAgent.InternalRequest /** Trigger used inside of [[edu.ie3.simona.agent.grid.DBFSAlgorithm]] to diff --git a/src/main/scala/edu/ie3/simona/agent/grid/PowerFlowSupport.scala b/src/main/scala/edu/ie3/simona/agent/grid/PowerFlowSupport.scala index c43700466c..8f3da56cf7 100644 --- a/src/main/scala/edu/ie3/simona/agent/grid/PowerFlowSupport.scala +++ b/src/main/scala/edu/ie3/simona/agent/grid/PowerFlowSupport.scala @@ -6,6 +6,7 @@ package edu.ie3.simona.agent.grid +import breeze.linalg.DenseMatrix import breeze.math.Complex import edu.ie3.powerflow.NewtonRaphsonPF import edu.ie3.powerflow.model.NodeData.{PresetData, StateData} @@ -611,4 +612,71 @@ trait PowerFlowSupport { ) } } + + /** Calculates the power flow for the grid that contains the slack node. + * @param gridModel model of the slack grid + * @param receivedValueStore received values + * @param powerFlowParams parameters for the power flow calculation + * @param log for logging + * @return power flow results + */ + protected final def slackGridPF( + gridModel: GridModel, + receivedValueStore: ReceivedValuesStore, + powerFlowParams: PowerFlowParams, + )(implicit log: Logger): PowerFlowResult = { + /* This is the highest grid agent, therefore no data is received for the slack node. Suppress, that it is looked + * up in the empty store. */ + val (operationPoint, slackNodeVoltages) = composeOperatingPoint( + gridModel.gridComponents.nodes, + gridModel.gridComponents.transformers, + gridModel.gridComponents.transformers3w, + gridModel.nodeUuidToIndexMap, + receivedValueStore, + gridModel.mainRefSystem, + targetVoltageFromReceivedData = false, + ) + + def superiorPowerFlow: PowerFlowResult = + newtonRaphsonPF( + gridModel, + powerFlowParams.maxIterations, + operationPoint, + slackNodeVoltages, + )(powerFlowParams.epsilon) match { + case validPowerFlowResult: ValidNewtonRaphsonPFResult => + log.debug( + "{}", + composeValidNewtonRaphsonPFResultVoltagesDebugString( + validPowerFlowResult, + gridModel, + ), + ) + validPowerFlowResult + case result: PowerFlowResult.FailedPowerFlowResult => + result + } + + /* Regarding the power flow result of this grid, there are two cases. If this is the "highest" grid in a + * simulation without a three winding transformer, the grid consists of only one node, and we can mock the power + * flow results. If there is a three winding transformer apparent, we actually have to perform power flow + * calculations, as the high voltage branch of the transformer is modeled here. */ + gridModel.gridComponents.transformers3w.isEmpty match { + case true if gridModel.gridComponents.nodes.size == 1 => + val nodeData = operationPoint.map(StateData(_)) + ValidNewtonRaphsonPFResult(-1, nodeData, DenseMatrix(0d, 0d)) + + case true => + log.warn( + "This grid contains a more than just a slack node. Perform power flow calculations before assessing the power deviations." + ) + superiorPowerFlow + + case false => + log.debug( + "This grid contains a three winding transformer. Perform power flow calculations before assessing the power deviations." + ) + superiorPowerFlow + } + } } diff --git a/src/main/scala/edu/ie3/simona/sim/setup/SimonaStandaloneSetup.scala b/src/main/scala/edu/ie3/simona/sim/setup/SimonaStandaloneSetup.scala index 3e62408033..0894ad3978 100644 --- a/src/main/scala/edu/ie3/simona/sim/setup/SimonaStandaloneSetup.scala +++ b/src/main/scala/edu/ie3/simona/sim/setup/SimonaStandaloneSetup.scala @@ -108,9 +108,13 @@ class SimonaStandaloneSetup( ) /* build the initialization data */ - subGridTopologyGraph + val subGrids = subGridTopologyGraph .vertexSet() .asScala + + val onlyOneSubGrid = subGrids.size == 1 + + subGrids .zip(keys) .map { case (subGridContainer, key) => /* Get all connections to superior and inferior sub grids */ @@ -140,7 +144,11 @@ class SimonaStandaloneSetup( thermalGrids, ) - currentActorRef ! CreateGridAgent(gridAgentInitData, key) + currentActorRef ! CreateGridAgent( + gridAgentInitData, + key, + onlyOneSubGrid, + ) currentActorRef } diff --git a/src/test/scala/edu/ie3/simona/agent/grid/DBFSMockGridAgents.scala b/src/test/scala/edu/ie3/simona/agent/grid/DBFSMockGridAgents.scala index c1f5a1e885..0a914ab763 100644 --- a/src/test/scala/edu/ie3/simona/agent/grid/DBFSMockGridAgents.scala +++ b/src/test/scala/edu/ie3/simona/agent/grid/DBFSMockGridAgents.scala @@ -103,7 +103,7 @@ trait DBFSMockGridAgents extends UnitSpec { def expectSlackVoltageRequest( expectedSweepNo: Int ): ActorRef[GridAgent.Request] = - gaProbe.expectMessageType[GridAgent.Request] match { + gaProbe.expectMessageType[GridAgent.Request](10.seconds) match { case requestSlackVoltageMessage: SlackVoltageRequest => requestSlackVoltageMessage.currentSweepNo shouldBe expectedSweepNo requestSlackVoltageMessage.nodeUuids should have size nodeUuids.size diff --git a/src/test/scala/edu/ie3/simona/agent/grid/PowerFlowSupportSpec.scala b/src/test/scala/edu/ie3/simona/agent/grid/PowerFlowSupportSpec.scala index 2ba7d1da07..3aa1441c36 100644 --- a/src/test/scala/edu/ie3/simona/agent/grid/PowerFlowSupportSpec.scala +++ b/src/test/scala/edu/ie3/simona/agent/grid/PowerFlowSupportSpec.scala @@ -6,14 +6,31 @@ package edu.ie3.simona.agent.grid +import edu.ie3.datamodel.models.input.MeasurementUnitInput +import edu.ie3.datamodel.models.input.connector.{ + SwitchInput, + Transformer2WInput, + Transformer3WInput, +} +import edu.ie3.datamodel.models.input.container.{ + RawGridElements, + SubGridContainer, +} +import edu.ie3.powerflow.model.PowerFlowResult import edu.ie3.powerflow.model.PowerFlowResult.SuccessFullPowerFlowResult.ValidNewtonRaphsonPFResult import edu.ie3.simona.agent.grid.GridAgentMessages.Responses.{ ExchangePower, ExchangeVoltage, } -import edu.ie3.simona.model.grid.GridModel -import edu.ie3.simona.test.common.UnitSpec -import edu.ie3.simona.test.common.model.grid.BasicGridWithSwitches +import edu.ie3.simona.config.SimonaConfig.Simona +import edu.ie3.simona.model.grid.{GridModel, RefSystem} +import edu.ie3.simona.test.common.model.grid.{ + BasicGridWithSwitches, + DbfsTestGrid, +} +import edu.ie3.simona.test.common.{ConfigTestData, UnitSpec} +import edu.ie3.simona.util.TestGridFactory +import edu.ie3.util.TimeUtil import edu.ie3.util.quantities.QuantityUtils.RichQuantityDouble import edu.ie3.util.scala.quantities.Megavars import org.apache.pekko.actor.testkit.typed.scaladsl.{ @@ -24,10 +41,14 @@ import org.apache.pekko.actor.typed.ActorRef import org.slf4j.{Logger, LoggerFactory} import squants.electro.Kilovolts import squants.energy.Megawatts +import squants.{Dimensionless, Each} import tech.units.indriya.ComparableQuantity -import java.time.ZonedDateTime +import java.time.{Duration, ZonedDateTime} +import java.util.UUID import javax.measure.quantity.Angle +import scala.jdk.CollectionConverters.SetHasAsJava +import scala.language.implicitConversions /** Tests power flow on a grid with switches on two branches, where depending on * whether switches are opened or closed, current flows through one or both of @@ -366,4 +387,143 @@ class PowerFlowSupportSpec } } + "PowerFlowSupport" should { + implicit val tolerance: Dimensionless = Each(1e-12) + + val powerFlowParams = PowerFlowParams( + 1e-5, + Vector(1e-12), + 50, + Duration.ofMinutes(30), + stopOnFailure = true, + ) + + "perform the power flow for the slack grid correctly" in { + val withMvPowerFlowResults: Map[UUID, Dimensionless] = { + val (gridModel, receivedValueStore) = TestData.withMv + + val (operationPoint, slackNodeVoltages) = composeOperatingPoint( + gridModel.gridComponents.nodes, + gridModel.gridComponents.transformers, + gridModel.gridComponents.transformers3w, + gridModel.nodeUuidToIndexMap, + receivedValueStore, + gridModel.mainRefSystem, + targetVoltageFromReceivedData = false, + ) + + val pf = newtonRaphsonPF( + gridModel, + 50, + operationPoint, + slackNodeVoltages, + )(Vector(1e-12)) match { + case result: PowerFlowResult.SuccessFullPowerFlowResult => + result + case _: PowerFlowResult.FailedPowerFlowResult => + fail() + } + + val indexMap = gridModel.nodeUuidToIndexMap.map { case (uuid, i) => + (i, uuid) + } + pf.nodeData.map(n => indexMap(n.index) -> Each(n.voltage.abs)).toMap + } + + val onlyLvPowerFlowResults: Map[UUID, Dimensionless] = { + val (gridModel, receivedValueStore) = TestData.onlyLv + + val pf = slackGridPF( + gridModel, + receivedValueStore, + powerFlowParams, + ) match { + case result: PowerFlowResult.SuccessFullPowerFlowResult => + result + case _: PowerFlowResult.FailedPowerFlowResult => + fail() + } + + val indexMap = gridModel.nodeUuidToIndexMap.map { case (uuid, i) => + (i, uuid) + } + pf.nodeData.map(n => indexMap(n.index) -> Each(n.voltage.abs)).toMap + + } + + onlyLvPowerFlowResults.foreach { case (uuid, result) => + withMvPowerFlowResults(uuid) should approximate(result)(tolerance) + } + } + } + + object TestData extends DbfsTestGrid with ConfigTestData { + val time: Simona.Time = simonaConfig.simona.time + + implicit def toZoneDateTime(time: String): ZonedDateTime = + TimeUtil.withDefaults.toZonedDateTime(time) + + implicit def toGridModel( + subGridContainer: SubGridContainer + ): GridModel = + GridModel( + subGridContainer, + RefSystem("2000 MVA", "110 kV"), + time.startDateTime, + time.endDateTime, + simonaConfig, + ) + + val withMv: (GridModel, ReceivedValuesStore) = { + val gridModel = TestGridFactory.createSubGrid( + gridName = "centerGrid", + subgrid = 1, + rawGridElements = new RawGridElements( + Set(supNodeA, node1, node2, node3, node4).asJava, + Set(line1To2, line2To3, line1To4).asJava, + Set(transformer1).asJava, + Set.empty[Transformer3WInput].asJava, + Set.empty[SwitchInput].asJava, + Set.empty[MeasurementUnitInput].asJava, + ), + ) + + val receivedValueStore = ReceivedValuesStore.empty( + Map.empty, + Map.empty, + Vector(supNodeA.getUuid), + ) + + (gridModel, receivedValueStore) + } + + val onlyLv: (GridModel, ReceivedValuesStore) = { + val updatedNode1 = + node1.copy().slack(true).vTarget(0.9999984268502677.asPu).build() + val gridModel = TestGridFactory.createSubGrid( + gridName = "centerGrid", + subgrid = 1, + rawGridElements = new RawGridElements( + Set(updatedNode1, node2, node3, node4).asJava, + Set( + line1To2.copy().nodeA(updatedNode1).build(), + line2To3, + line1To4.copy().nodeB(updatedNode1).build(), + ).asJava, + Set.empty[Transformer2WInput].asJava, + Set.empty[Transformer3WInput].asJava, + Set.empty[SwitchInput].asJava, + Set.empty[MeasurementUnitInput].asJava, + ), + ) + + val receivedValueStore = ReceivedValuesStore.empty( + Map.empty, + Map.empty, + Vector.empty, + ) + + (gridModel, receivedValueStore) + } + } } From 1d76883f19dcf00f837c2718feb7438549678288 Mon Sep 17 00:00:00 2001 From: staudtMarius Date: Tue, 14 Jan 2025 08:30:16 +0100 Subject: [PATCH 032/102] fmt --- .../simona/agent/grid/PowerFlowSupport.scala | 15 ++++++++----- .../edu/ie3/simona/io/grid/GridProvider.scala | 21 ------------------- 2 files changed, 10 insertions(+), 26 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/agent/grid/PowerFlowSupport.scala b/src/main/scala/edu/ie3/simona/agent/grid/PowerFlowSupport.scala index 8f3da56cf7..64500945d3 100644 --- a/src/main/scala/edu/ie3/simona/agent/grid/PowerFlowSupport.scala +++ b/src/main/scala/edu/ie3/simona/agent/grid/PowerFlowSupport.scala @@ -614,11 +614,16 @@ trait PowerFlowSupport { } /** Calculates the power flow for the grid that contains the slack node. - * @param gridModel model of the slack grid - * @param receivedValueStore received values - * @param powerFlowParams parameters for the power flow calculation - * @param log for logging - * @return power flow results + * @param gridModel + * model of the slack grid + * @param receivedValueStore + * received values + * @param powerFlowParams + * parameters for the power flow calculation + * @param log + * for logging + * @return + * power flow results */ protected final def slackGridPF( gridModel: GridModel, diff --git a/src/main/scala/edu/ie3/simona/io/grid/GridProvider.scala b/src/main/scala/edu/ie3/simona/io/grid/GridProvider.scala index 0b11d732ca..81075c2ae8 100644 --- a/src/main/scala/edu/ie3/simona/io/grid/GridProvider.scala +++ b/src/main/scala/edu/ie3/simona/io/grid/GridProvider.scala @@ -52,27 +52,6 @@ object GridProvider extends LazyLogging { // checks the grid container and throws exception if there is an error ValidationUtils.check(jointGridContainer) - // check slack node location - val slackSubGrid = jointGridContainer.getSubGridTopologyGraph - .vertexSet() - .asScala - .filter(_.getRawGrid.getNodes.asScala.exists(_.isSlack)) - .maxByOption( - _.getPredominantVoltageLevel.getNominalVoltage.getValue - .doubleValue() - ) - .getOrElse( - throw new InvalidGridException( - "There is no slack node present in the grid." - ) - ) - - if (slackSubGrid.getRawGrid.getNodes.size() > 1) { - throw new SourceException( - "There are too many nodes in the slack grid. This is currently not support." - ) - } - jointGridContainer case None => throw new RuntimeException( From 03faed0b972902d89cd5544667227d02293b1996 Mon Sep 17 00:00:00 2001 From: staudtMarius Date: Tue, 14 Jan 2025 08:31:31 +0100 Subject: [PATCH 033/102] fmt --- src/main/scala/edu/ie3/simona/io/grid/GridProvider.scala | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/io/grid/GridProvider.scala b/src/main/scala/edu/ie3/simona/io/grid/GridProvider.scala index 81075c2ae8..b4998c78a1 100644 --- a/src/main/scala/edu/ie3/simona/io/grid/GridProvider.scala +++ b/src/main/scala/edu/ie3/simona/io/grid/GridProvider.scala @@ -7,7 +7,6 @@ package edu.ie3.simona.io.grid import com.typesafe.scalalogging.LazyLogging -import edu.ie3.datamodel.exceptions.{InvalidGridException, SourceException} import edu.ie3.datamodel.io.naming.FileNamingStrategy import edu.ie3.datamodel.io.source.csv.{ CsvJointGridContainerSource, @@ -23,7 +22,6 @@ import edu.ie3.simona.config.SimonaConfig import java.nio.file.Path import scala.jdk.CollectionConverters._ -import scala.util.{Failure, Success, Try} /** Takes [[edu.ie3.simona.config.SimonaConfig.Simona.Input.Grid.Datasource]] as * input and provides a [[JointGridContainer]] based on the configuration incl. From ad554ac5351308236e68887a1074537bc04c2f91 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Jan 2025 09:18:12 +0000 Subject: [PATCH 034/102] Bump com.sksamuel.scapegoat:scalac-scapegoat-plugin_2.13.15 (#1109) --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index d87f4ddc0a..216fd1b095 100644 --- a/build.gradle +++ b/build.gradle @@ -29,7 +29,7 @@ ext { jtsVersion = '1.20.0' confluentKafkaVersion = '7.4.0' tscfgVersion = '1.2.1' - scapegoatVersion = '3.1.2' + scapegoatVersion = '3.1.3' testContainerVersion = '0.41.5' From deec5b85e529d8c427da00bd2f82ccf9cee65f98 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Jan 2025 10:37:39 +0000 Subject: [PATCH 035/102] Bump org.scala-lang:scala-library from 2.13.15 to 2.13.16 (#1103) --- build.gradle | 2 +- gradle/scripts/scoverage.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 216fd1b095..b27f03c278 100644 --- a/build.gradle +++ b/build.gradle @@ -24,7 +24,7 @@ ext { javaVersion = JavaVersion.VERSION_17 scalaVersion = '2.13' - scalaBinaryVersion = '2.13.15' + scalaBinaryVersion = '2.13.16' pekkoVersion = '1.1.3' jtsVersion = '1.20.0' confluentKafkaVersion = '7.4.0' diff --git a/gradle/scripts/scoverage.gradle b/gradle/scripts/scoverage.gradle index a998819c42..dd00c6aa30 100644 --- a/gradle/scripts/scoverage.gradle +++ b/gradle/scripts/scoverage.gradle @@ -3,7 +3,7 @@ // https://github.com/scoverage/gradle-scoverage/issues/109 for details scoverage { - scoverageVersion = "2.2.1" + scoverageVersion = "2.3.0" scoverageScalaVersion = scalaBinaryVersion coverageOutputHTML = false coverageOutputXML = true From ff4a0bc41ecb465e61f7ee678934a3342eed7226 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Thu, 16 Jan 2025 12:39:25 +0100 Subject: [PATCH 036/102] refactor nested if-clause --- .../ie3/simona/model/thermal/ThermalGrid.scala | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala b/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala index 6e59c48f4f..f9d9e5a2a6 100644 --- a/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala +++ b/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala @@ -600,17 +600,15 @@ object ThermalGrid { math.abs(possible.toKilowattHours) < math.abs(required.toKilowattHours) ) throw new InvalidParameterException( - s"The possible amount of energy {$possible} is smaller than the required amount of energy {$required}. This is not supported." + s"The possible amount of energy $possible is smaller than the required amount of energy $required. This is not supported." ) - else { - if (possible.toKilowattHours < 0 || required.toKilowattHours < 0) - throw new InvalidParameterException( - s"The possible {$possible} or required {$required} amount of energy is smaller than zero. This is not supported." - ) - else { - new ThermalEnergyDemand(required, possible) - } - } + + if (possible.toKilowattHours < 0 || required.toKilowattHours < 0) + throw new InvalidParameterException( + s"The possible $possible or required $required amount of energy cannot be negative. This is not supported." + ) + + new ThermalEnergyDemand(required, possible) } def noDemand: ThermalEnergyDemand = ThermalEnergyDemand( From f86f22107ba591e4b05f40376d442c4117386ee9 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Thu, 16 Jan 2025 12:40:42 +0100 Subject: [PATCH 037/102] fmt --- .../scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala index aa7c0868f3..b259529471 100644 --- a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala +++ b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala @@ -115,7 +115,6 @@ class ThermalGridSpec energyDemand.hasRequiredDemand shouldBe true energyDemand.hasAdditionalDemand shouldBe true } - } "adding two demands" should { From 4a5d0d61b1d0787554755b9527d4894e9522774c Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Thu, 16 Jan 2025 12:44:05 +0100 Subject: [PATCH 038/102] adapt def of hasAdditionalDemand --- src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala b/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala index f9d9e5a2a6..56de254c2a 100644 --- a/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala +++ b/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala @@ -578,8 +578,7 @@ object ThermalGrid { def hasRequiredDemand: Boolean = required > zeroMWh - def hasAdditionalDemand: Boolean = possible > zeroMWh - + def hasAdditionalDemand: Boolean = possible > required } object ThermalEnergyDemand { From a067faa5f80d749751f16d91dd6c69fccd710658 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Thu, 16 Jan 2025 13:00:04 +0100 Subject: [PATCH 039/102] fix ThermalGridSpec --- .../ie3/simona/model/thermal/ThermalGridSpec.scala | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala index b259529471..375a0c09e9 100644 --- a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala +++ b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala @@ -6,7 +6,6 @@ package edu.ie3.simona.model.thermal -import edu.ie3.simona.exceptions.InvalidParameterException import edu.ie3.datamodel.models.input.thermal.ThermalStorageInput import edu.ie3.simona.model.thermal.ThermalGrid.ThermalEnergyDemand import edu.ie3.simona.test.common.UnitSpec @@ -33,7 +32,7 @@ class ThermalGridSpec intercept[InvalidParameterException] { ThermalEnergyDemand(required, possible) - }.getMessage shouldBe s"The possible amount of energy {$possible} is smaller than the required amount of energy {$required}. This is not supported." + }.getMessage shouldBe s"The possible amount of energy $possible is smaller than the required amount of energy $required. This is not supported." } "set the correct values, if they are sensible" in { @@ -80,7 +79,7 @@ class ThermalGridSpec val possible = MegawattHours(0d) intercept[InvalidParameterException] { ThermalEnergyDemand(required, possible) - }.getMessage shouldBe s"The possible amount of energy {$possible} is smaller than the required amount of energy {$required}. This is not supported." + }.getMessage shouldBe s"The possible amount of energy $possible is smaller than the required amount of energy $required. This is not supported." } "throw exception, if required demand is smaller than zero" in { @@ -88,7 +87,7 @@ class ThermalGridSpec val possible = MegawattHours(5d) intercept[InvalidParameterException] { ThermalEnergyDemand(required, possible) - }.getMessage shouldBe s"The possible {$possible} or required {$required} amount of energy is smaller than zero. This is not supported." + }.getMessage shouldBe s"The possible $possible or required $required amount of energy cannot be negative. This is not supported." } "throw exception, if possible demand is smaller than zero" in { @@ -96,7 +95,7 @@ class ThermalGridSpec val possible = MegawattHours(-5d) intercept[InvalidParameterException] { ThermalEnergyDemand(required, possible) - }.getMessage shouldBe s"The possible {$possible} or required {$required} amount of energy is smaller than zero. This is not supported." + }.getMessage shouldBe s"The possible $possible or required $required amount of energy cannot be negative. This is not supported." } "throw exception, if possible and required demand are smaller than zero" in { @@ -104,7 +103,7 @@ class ThermalGridSpec val possible = MegawattHours(-5d) intercept[InvalidParameterException] { ThermalEnergyDemand(required, possible) - }.getMessage shouldBe s"The possible {$possible} or required {$required} amount of energy is smaller than zero. This is not supported." + }.getMessage shouldBe s"The possible $possible or required $required amount of energy cannot be negative. This is not supported." } "return proper information, if required and additional demand is apparent" in { From 933141857f9794be3042000258083208c6bff9de Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Thu, 16 Jan 2025 13:03:31 +0100 Subject: [PATCH 040/102] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a39a785c0..1419c46729 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -116,6 +116,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed SonarQube quality gate using the correct parameter '-Dsonar.qualitygate.wait=true' [#1072](https://github.com/ie3-institute/simona/issues/1072) - Updated `simonaAPI` to version `0.6.0` [#1080](https://github.com/ie3-institute/simona/issues/1080) - Enhanced title in `CITATION.cff` [#1088](https://github.com/ie3-institute/simona/issues/1088) +- Refactor ThermalEnergyDemand definitions [#917](https://github.com/ie3-institute/simona/issues/917) ### Fixed - Fix rendering of references in documentation [#505](https://github.com/ie3-institute/simona/issues/505) From 216a932e3b00993aedea43e3843c61effb07f649 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Thu, 16 Jan 2025 13:14:32 +0100 Subject: [PATCH 041/102] fix imports of ThermalGridSpec --- .../scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala index 375a0c09e9..2ce96727f8 100644 --- a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala +++ b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridSpec.scala @@ -7,6 +7,7 @@ package edu.ie3.simona.model.thermal import edu.ie3.datamodel.models.input.thermal.ThermalStorageInput +import edu.ie3.simona.exceptions.InvalidParameterException import edu.ie3.simona.model.thermal.ThermalGrid.ThermalEnergyDemand import edu.ie3.simona.test.common.UnitSpec import squants.energy.{KilowattHours, MegawattHours, WattHours, Watts} From 613a84a7eb10741f0650dfe7db8735b81909dd73 Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Mon, 20 Jan 2025 17:36:34 +0100 Subject: [PATCH 042/102] Sending flex options even if not em-controlled Signed-off-by: Sebastian Peter --- CHANGELOG.md | 1 + .../edu/ie3/simona/agent/em/EmAgent.scala | 46 ++-- .../edu/ie3/simona/agent/em/EmAgentIT.scala | 6 +- .../edu/ie3/simona/agent/em/EmAgentSpec.scala | 204 +++++++++++------- 4 files changed, 156 insertions(+), 101 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a39a785c0..28d479d1d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -159,6 +159,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed Deployment of `simona` to `Maven Central` in new GHA Pipeline [#1029](https://github.com/ie3-institute/simona/issues/1029) - Fixed SonarQube quality gate using the right link for PRs or Branches [#1061](https://github.com/ie3-institute/simona/issues/1061) - Fixed ignored EM strategy [#1091](https://github.com/ie3-institute/simona/issues/1091) +- EM should output flex option results even if it has no parent [#1112](https://github.com/ie3-institute/simona/issues/1112) ## [3.0.0] - 2023-08-07 diff --git a/src/main/scala/edu/ie3/simona/agent/em/EmAgent.scala b/src/main/scala/edu/ie3/simona/agent/em/EmAgent.scala index 4168da3955..dae0db52b6 100644 --- a/src/main/scala/edu/ie3/simona/agent/em/EmAgent.scala +++ b/src/main/scala/edu/ie3/simona/agent/em/EmAgent.scala @@ -231,33 +231,33 @@ object EmAgent { val allFlexOptions = updatedCore.getFlexOptions - emData.parentData match { - case Right(flexStateData) => - // aggregate flex options and provide to parent - val (ref, min, max) = - modelShell.aggregateFlexOptions(allFlexOptions) - - if (emData.outputConfig.flexResult) { - val flexResult = new FlexOptionsResult( - flexOptionsCore.activeTick.toDateTime( - emData.simulationStartDate - ), - modelShell.uuid, - ref.toMegawatts.asMegaWatt, - min.toMegawatts.asMegaWatt, - max.toMegawatts.asMegaWatt, - ) + val (emRef, emMin, emMax) = + modelShell.aggregateFlexOptions(allFlexOptions) - emData.listener.foreach { - _ ! FlexOptionsResultEvent(flexResult) - } - } + if (emData.outputConfig.flexResult) { + val flexResult = new FlexOptionsResult( + flexOptionsCore.activeTick.toDateTime( + emData.simulationStartDate + ), + modelShell.uuid, + emRef.toMegawatts.asMegaWatt, + emMin.toMegawatts.asMegaWatt, + emMax.toMegawatts.asMegaWatt, + ) + + emData.listener.foreach { + _ ! FlexOptionsResultEvent(flexResult) + } + } + emData.parentData match { + case Right(flexStateData) => + // provide aggregate flex options to parent val flexMessage = ProvideMinMaxFlexOptions( modelShell.uuid, - ref, - min, - max, + emRef, + emMin, + emMax, ) flexStateData.emAgent ! flexMessage diff --git a/src/test/scala/edu/ie3/simona/agent/em/EmAgentIT.scala b/src/test/scala/edu/ie3/simona/agent/em/EmAgentIT.scala index 09f6acb019..8667aaa84e 100644 --- a/src/test/scala/edu/ie3/simona/agent/em/EmAgentIT.scala +++ b/src/test/scala/edu/ie3/simona/agent/em/EmAgentIT.scala @@ -285,7 +285,7 @@ class EmAgentIT emResult.getInputModel shouldBe emInput.getUuid emResult.getTime shouldBe 0L.toDateTime emResult.getP should equalWithTolerance( - (-0.000416087825).asMegaWatt + -0.000416087825.asMegaWatt ) emResult.getQ should equalWithTolerance(0.0000882855367.asMegaVar) } @@ -339,7 +339,7 @@ class EmAgentIT emResult.getInputModel shouldBe emInput.getUuid emResult.getTime shouldBe 13107L.toDateTime emResult.getP should equalWithTolerance( - (-0.0035281545552).asMegaWatt + -0.0035281545552.asMegaWatt ) emResult.getQ should equalWithTolerance(0.0000882855367.asMegaVar) } @@ -586,7 +586,7 @@ class EmAgentIT emResult.getInputModel shouldBe emInput.getUuid emResult.getTime shouldBe 0.toDateTime emResult.getP should equalWithTolerance( - (-0.000566087824).asMegaWatt + -0.000566087824.asMegaWatt ) emResult.getQ should equalWithTolerance(0.001073120041.asMegaVar) } diff --git a/src/test/scala/edu/ie3/simona/agent/em/EmAgentSpec.scala b/src/test/scala/edu/ie3/simona/agent/em/EmAgentSpec.scala index c0b8f93489..a770817277 100644 --- a/src/test/scala/edu/ie3/simona/agent/em/EmAgentSpec.scala +++ b/src/test/scala/edu/ie3/simona/agent/em/EmAgentSpec.scala @@ -61,7 +61,7 @@ class EmAgentSpec override protected val modelConfig: EmRuntimeConfig = EmRuntimeConfig( calculateMissingReactivePowerWithModel = false, - scaling = 1d, + scaling = 1, uuids = List("default"), aggregateFlex = "SELF_OPT_EXCL_REG", curtailRegenerative = false, @@ -140,9 +140,9 @@ class EmAgentSpec // send flex options emAgent ! ProvideMinMaxFlexOptions( pvInput.getUuid, - Kilowatts(-5d), - Kilowatts(-5d), - Kilowatts(0d), + Kilowatts(-5), + Kilowatts(-5), + Kilowatts(0), ) pvAgent.expectNoMessage() @@ -150,16 +150,16 @@ class EmAgentSpec emAgent ! ProvideMinMaxFlexOptions( evcsInput.getUuid, - Kilowatts(2d), - Kilowatts(-11d), - Kilowatts(11d), + Kilowatts(2), + Kilowatts(-11), + Kilowatts(11), ) // receive flex control messages pvAgent.expectMessage(IssueNoControl(0)) emAgent ! FlexResult( modelUuid = pvInput.getUuid, - result = ComplexPower(Kilowatts(-5d), Kilovars(-0.5d)), + result = ComplexPower(Kilowatts(-5), Kilovars(-.5)), ) emAgent ! FlexCompletion( modelUuid = pvInput.getUuid, @@ -174,7 +174,7 @@ class EmAgentSpec } emAgent ! FlexResult( modelUuid = evcsInput.getUuid, - result = ComplexPower(Kilowatts(5d), Kilovars(0.1d)), + result = ComplexPower(Kilowatts(5), Kilovars(.1)), ) emAgent ! FlexCompletion( modelUuid = evcsInput.getUuid, @@ -182,12 +182,21 @@ class EmAgentSpec ) // expect correct results + resultListener.expectMessageType[FlexOptionsResultEvent] match { + case FlexOptionsResultEvent(flexResult) => + flexResult.getInputModel shouldBe emInput.getUuid + flexResult.getTime shouldBe 0.toDateTime(simulationStartDate) + flexResult.getpRef() should equalWithTolerance(0.asMegaWatt) + flexResult.getpMin() should equalWithTolerance(-.016.asMegaWatt) + flexResult.getpMax() should equalWithTolerance(.006.asMegaWatt) + } + resultListener.expectMessageType[ParticipantResultEvent] match { case ParticipantResultEvent(emResult: EmResult) => emResult.getInputModel shouldBe emInput.getUuid emResult.getTime shouldBe simulationStartDate - emResult.getP should equalWithTolerance(0d.asMegaWatt) - emResult.getQ should equalWithTolerance((-.0004d).asMegaVar) + emResult.getP should equalWithTolerance(0.asMegaWatt) + emResult.getQ should equalWithTolerance(-.0004.asMegaVar) } // expect completion from EmAgent @@ -208,9 +217,9 @@ class EmAgentSpec // send flex options again, ev is fully charged emAgent ! ProvideMinMaxFlexOptions( evcsInput.getUuid, - Kilowatts(0d), - Kilowatts(-11d), - Kilowatts(0d), + Kilowatts(0), + Kilowatts(-11), + Kilowatts(0), ) // receive flex control messages @@ -220,17 +229,26 @@ class EmAgentSpec emAgent ! FlexResult( modelUuid = evcsInput.getUuid, - result = ComplexPower(Kilowatts(0d), Kilovars(0d)), + result = ComplexPower(Kilowatts(0), Kilovars(0)), ) emAgent ! FlexCompletion(modelUuid = evcsInput.getUuid) // expect correct results + resultListener.expectMessageType[FlexOptionsResultEvent] match { + case FlexOptionsResultEvent(flexResult) => + flexResult.getInputModel shouldBe emInput.getUuid + flexResult.getTime shouldBe 300.toDateTime(simulationStartDate) + flexResult.getpRef() should equalWithTolerance(-.005.asMegaWatt) + flexResult.getpMin() should equalWithTolerance(-.016.asMegaWatt) + flexResult.getpMax() should equalWithTolerance(-.005.asMegaWatt) + } + resultListener.expectMessageType[ParticipantResultEvent] match { case ParticipantResultEvent(emResult: EmResult) => emResult.getInputModel shouldBe emInput.getUuid emResult.getTime shouldBe 300.toDateTime(simulationStartDate) - emResult.getP should equalWithTolerance((-0.005d).asMegaWatt) - emResult.getQ should equalWithTolerance((-0.0005d).asMegaVar) + emResult.getP should equalWithTolerance(-.005.asMegaWatt) + emResult.getQ should equalWithTolerance(-.0005.asMegaVar) } // expect completion from EmAgent @@ -282,9 +300,9 @@ class EmAgentSpec // send flex options emAgent ! ProvideMinMaxFlexOptions( pvInput.getUuid, - Kilowatts(-5d), - Kilowatts(-5d), - Kilowatts(0d), + Kilowatts(-5), + Kilowatts(-5), + Kilowatts(0), ) pvAgent.expectNoMessage() @@ -292,9 +310,9 @@ class EmAgentSpec emAgent ! ProvideMinMaxFlexOptions( evcsInput.getUuid, - Kilowatts(2d), - Kilowatts(-11d), - Kilowatts(11d), + Kilowatts(2), + Kilowatts(-11), + Kilowatts(11), ) // receive flex control messages @@ -307,7 +325,7 @@ class EmAgentSpec // send completions emAgent ! FlexResult( modelUuid = pvInput.getUuid, - result = ComplexPower(Kilowatts(-5d), Kilovars(-0.5d)), + result = ComplexPower(Kilowatts(-5), Kilovars(-.5)), ) emAgent ! FlexCompletion( modelUuid = pvInput.getUuid, @@ -316,7 +334,7 @@ class EmAgentSpec emAgent ! FlexResult( modelUuid = evcsInput.getUuid, - result = ComplexPower(Kilowatts(5d), Kilovars(0.1d)), + result = ComplexPower(Kilowatts(5), Kilovars(.1)), ) scheduler.expectNoMessage() @@ -327,12 +345,21 @@ class EmAgentSpec ) // expect correct results + resultListener.expectMessageType[FlexOptionsResultEvent] match { + case FlexOptionsResultEvent(flexResult) => + flexResult.getInputModel shouldBe emInput.getUuid + flexResult.getTime shouldBe 0.toDateTime(simulationStartDate) + flexResult.getpRef() should equalWithTolerance(0.asMegaWatt) + flexResult.getpMin() should equalWithTolerance(-.016.asMegaWatt) + flexResult.getpMax() should equalWithTolerance(.006.asMegaWatt) + } + resultListener.expectMessageType[ParticipantResultEvent] match { case ParticipantResultEvent(emResult: EmResult) => emResult.getInputModel shouldBe emInput.getUuid emResult.getTime shouldBe simulationStartDate - emResult.getP should equalWithTolerance(0d.asMegaWatt) - emResult.getQ should equalWithTolerance((-.0004d).asMegaVar) + emResult.getP should equalWithTolerance(0.asMegaWatt) + emResult.getQ should equalWithTolerance(-.0004.asMegaVar) } // expect completion from EmAgent @@ -351,9 +378,9 @@ class EmAgentSpec // send flex options again, now there's a cloud and thus less feed-in emAgent ! ProvideMinMaxFlexOptions( pvInput.getUuid, - Kilowatts(-3d), - Kilowatts(-3d), - Kilowatts(0d), + Kilowatts(-3), + Kilowatts(-3), + Kilowatts(0), ) // receive flex control messages @@ -361,7 +388,7 @@ class EmAgentSpec emAgent ! FlexResult( modelUuid = pvInput.getUuid, - result = ComplexPower(Kilowatts(-3d), Kilovars(-0.06d)), + result = ComplexPower(Kilowatts(-3), Kilovars(-.06)), ) emAgent ! FlexCompletion( @@ -378,7 +405,7 @@ class EmAgentSpec emAgent ! FlexResult( modelUuid = evcsInput.getUuid, - result = ComplexPower(Kilowatts(3d), Kilovars(0.06d)), + result = ComplexPower(Kilowatts(3), Kilovars(.06)), ) emAgent ! FlexCompletion( modelUuid = evcsInput.getUuid, @@ -386,12 +413,21 @@ class EmAgentSpec ) // expect correct results + resultListener.expectMessageType[FlexOptionsResultEvent] match { + case FlexOptionsResultEvent(flexResult) => + flexResult.getInputModel shouldBe emInput.getUuid + flexResult.getTime shouldBe 300.toDateTime(simulationStartDate) + flexResult.getpRef() should equalWithTolerance(0.asMegaWatt) + flexResult.getpMin() should equalWithTolerance(-.014.asMegaWatt) + flexResult.getpMax() should equalWithTolerance(.008.asMegaWatt) + } + resultListener.expectMessageType[ParticipantResultEvent] match { case ParticipantResultEvent(emResult: EmResult) => emResult.getInputModel shouldBe emInput.getUuid emResult.getTime shouldBe 300.toDateTime(simulationStartDate) - emResult.getP should equalWithTolerance(0d.asMegaWatt) - emResult.getQ should equalWithTolerance(0d.asMegaVar) + emResult.getP should equalWithTolerance(0.asMegaWatt) + emResult.getQ should equalWithTolerance(0.asMegaVar) } // expect completion from EmAgent with new tick (800) instead of revoked tick (600) @@ -444,9 +480,9 @@ class EmAgentSpec // send flex options emAgent ! ProvideMinMaxFlexOptions( pvInput.getUuid, - Kilowatts(-5d), - Kilowatts(-5d), - Kilowatts(0d), + Kilowatts(-5), + Kilowatts(-5), + Kilowatts(0), ) pvAgent.expectNoMessage() @@ -454,9 +490,9 @@ class EmAgentSpec emAgent ! ProvideMinMaxFlexOptions( evcsInput.getUuid, - Kilowatts(2d), - Kilowatts(-11d), - Kilowatts(11d), + Kilowatts(2), + Kilowatts(-11), + Kilowatts(11), ) // receive flex control messages @@ -470,7 +506,7 @@ class EmAgentSpec // send completions emAgent ! FlexResult( modelUuid = pvInput.getUuid, - result = ComplexPower(Kilowatts(-5d), Kilovars(-0.5d)), + result = ComplexPower(Kilowatts(-5), Kilovars(-.5)), ) emAgent ! FlexCompletion( modelUuid = pvInput.getUuid, @@ -479,7 +515,7 @@ class EmAgentSpec emAgent ! FlexResult( modelUuid = evcsInput.getUuid, - result = ComplexPower(Kilowatts(5d), Kilovars(0.1d)), + result = ComplexPower(Kilowatts(5), Kilovars(.1)), ) scheduler.expectNoMessage() @@ -490,12 +526,21 @@ class EmAgentSpec requestAtTick = Some(600), ) + resultListener.expectMessageType[FlexOptionsResultEvent] match { + case FlexOptionsResultEvent(flexResult) => + flexResult.getInputModel shouldBe emInput.getUuid + flexResult.getTime shouldBe 0.toDateTime(simulationStartDate) + flexResult.getpRef() should equalWithTolerance(0.asMegaWatt) + flexResult.getpMin() should equalWithTolerance(-.016.asMegaWatt) + flexResult.getpMax() should equalWithTolerance(.006.asMegaWatt) + } + resultListener.expectMessageType[ParticipantResultEvent] match { case ParticipantResultEvent(emResult: EmResult) => emResult.getInputModel shouldBe emInput.getUuid - emResult.getTime shouldBe simulationStartDate - emResult.getP should equalWithTolerance(0d.asMegaWatt) - emResult.getQ should equalWithTolerance((-.0004d).asMegaVar) + emResult.getTime shouldBe 0.toDateTime(simulationStartDate) + emResult.getP should equalWithTolerance(0.asMegaWatt) + emResult.getQ should equalWithTolerance(-.0004.asMegaVar) } // expect completion from EmAgent @@ -514,9 +559,9 @@ class EmAgentSpec // send flex options again, now there's a cloud and thus less feed-in emAgent ! ProvideMinMaxFlexOptions( pvInput.getUuid, - Kilowatts(-3d), - Kilowatts(-3d), - Kilowatts(0d), + Kilowatts(-3), + Kilowatts(-3), + Kilowatts(0), ) // expecting flex options request, since we asked for it last time @@ -524,9 +569,9 @@ class EmAgentSpec emAgent ! ProvideMinMaxFlexOptions( evcsInput.getUuid, - Kilowatts(2d), - Kilowatts(-11d), - Kilowatts(11d), + Kilowatts(2), + Kilowatts(-11), + Kilowatts(11), ) // FLEX CONTROL @@ -534,7 +579,7 @@ class EmAgentSpec emAgent ! FlexResult( modelUuid = pvInput.getUuid, - result = ComplexPower(Kilowatts(-3d), Kilovars(-0.06d)), + result = ComplexPower(Kilowatts(-3), Kilovars(-.06)), ) emAgent ! FlexCompletion( modelUuid = pvInput.getUuid @@ -549,19 +594,28 @@ class EmAgentSpec emAgent ! FlexResult( modelUuid = evcsInput.getUuid, - result = ComplexPower(Kilowatts(3d), Kilovars(0.06d)), + result = ComplexPower(Kilowatts(3), Kilovars(.06)), ) emAgent ! FlexCompletion( modelUuid = evcsInput.getUuid // revoking tick 600 ) // expect correct results + resultListener.expectMessageType[FlexOptionsResultEvent] match { + case FlexOptionsResultEvent(flexResult) => + flexResult.getInputModel shouldBe emInput.getUuid + flexResult.getTime shouldBe 300.toDateTime(simulationStartDate) + flexResult.getpRef() should equalWithTolerance(0.asMegaWatt) + flexResult.getpMin() should equalWithTolerance(-.014.asMegaWatt) + flexResult.getpMax() should equalWithTolerance(.008.asMegaWatt) + } + resultListener.expectMessageType[ParticipantResultEvent] match { case ParticipantResultEvent(emResult: EmResult) => emResult.getInputModel shouldBe emInput.getUuid emResult.getTime shouldBe 300.toDateTime(simulationStartDate) - emResult.getP should equalWithTolerance(0d.asMegaWatt) - emResult.getQ should equalWithTolerance(0d.asMegaVar) + emResult.getP should equalWithTolerance(0.asMegaWatt) + emResult.getQ should equalWithTolerance(0.asMegaVar) } // no more activation, since evcs activation got revoked @@ -650,9 +704,9 @@ class EmAgentSpec // send flex options emAgent ! ProvideMinMaxFlexOptions( pvInput.getUuid, - Kilowatts(-5d), - Kilowatts(-5d), - Kilowatts(0d), + Kilowatts(-5), + Kilowatts(-5), + Kilowatts(0), ) pvAgent.expectNoMessage() @@ -660,18 +714,18 @@ class EmAgentSpec emAgent ! ProvideMinMaxFlexOptions( evcsInput.getUuid, - Kilowatts(2d), - Kilowatts(-11d), - Kilowatts(11d), + Kilowatts(2), + Kilowatts(-11), + Kilowatts(11), ) resultListener.expectMessageType[FlexOptionsResultEvent] match { case FlexOptionsResultEvent(flexResult) => flexResult.getInputModel shouldBe emInput.getUuid flexResult.getTime shouldBe 0.toDateTime(simulationStartDate) - flexResult.getpRef() should equalWithTolerance(0d.asMegaWatt) - flexResult.getpMin() should equalWithTolerance((-0.016d).asMegaWatt) - flexResult.getpMax() should equalWithTolerance(0.006d.asMegaWatt) + flexResult.getpRef() should equalWithTolerance(0.asMegaWatt) + flexResult.getpMin() should equalWithTolerance(-.016.asMegaWatt) + flexResult.getpMax() should equalWithTolerance(.006.asMegaWatt) } parentEmAgent.expectMessageType[ProvideFlexOptions] match { @@ -682,21 +736,21 @@ class EmAgentSpec maxPower, ) => modelUuid shouldBe emInput.getUuid - referencePower shouldBe Kilowatts(0d) - minPower shouldBe Kilowatts(-16d) - maxPower shouldBe Kilowatts(6d) // hint: PV is not flexible + referencePower shouldBe Kilowatts(0) + minPower shouldBe Kilowatts(-16) + maxPower shouldBe Kilowatts(6) // hint: PV is not flexible } // issue power control and expect EmAgent to distribute it // we want max power = 6 kW - emAgentFlex ! IssuePowerControl(0, Kilowatts(6d)) + emAgentFlex ! IssuePowerControl(0, Kilowatts(6)) // expect issue power control pvAgent.expectMessage(IssueNoControl(0)) emAgent ! FlexResult( modelUuid = pvInput.getUuid, - result = ComplexPower(Kilowatts(-5), Kilovars(-0.5)), + result = ComplexPower(Kilowatts(-5), Kilovars(-.5)), ) emAgent ! FlexCompletion( modelUuid = pvInput.getUuid, @@ -724,15 +778,15 @@ class EmAgentSpec case ParticipantResultEvent(emResult: EmResult) => emResult.getInputModel shouldBe emInput.getUuid emResult.getTime shouldBe 0.toDateTime(simulationStartDate) - emResult.getP should equalWithTolerance(0.006d.asMegaWatt) - emResult.getQ should equalWithTolerance(0.0006d.asMegaVar) + emResult.getP should equalWithTolerance(.006.asMegaWatt) + emResult.getQ should equalWithTolerance(.0006.asMegaVar) } parentEmAgent.expectMessageType[FlexResult] match { case FlexResult(modelUuid, result) => modelUuid shouldBe emInput.getUuid result.p should approximate(Kilowatts(6)) - result.q should approximate(Kilovars(0.6)) + result.q should approximate(Kilovars(.6)) } parentEmAgent.expectMessage( @@ -762,7 +816,7 @@ class EmAgentSpec emAgent ! FlexResult( modelUuid = evcsInput.getUuid, - result = ComplexPower(Kilowatts(5.0), Kilovars(0.5)), + result = ComplexPower(Kilowatts(5.0), Kilovars(.5)), ) emAgent ! FlexCompletion( modelUuid = evcsInput.getUuid, @@ -774,8 +828,8 @@ class EmAgentSpec case ParticipantResultEvent(emResult: EmResult) => emResult.getInputModel shouldBe emInput.getUuid emResult.getTime shouldBe 150.toDateTime(simulationStartDate) - emResult.getP should equalWithTolerance(0d.asMegaWatt) - emResult.getQ should equalWithTolerance(0d.asMegaVar) + emResult.getP should equalWithTolerance(0.asMegaWatt) + emResult.getQ should equalWithTolerance(0.asMegaVar) } parentEmAgent.expectMessageType[FlexResult] match { From 4cb32fbbaf1cedcbae82cc6b23fbb5c0983136aa Mon Sep 17 00:00:00 2001 From: staudtMarius Date: Tue, 21 Jan 2025 12:49:35 +0100 Subject: [PATCH 043/102] Addressing reviewer's comments. --- .../ie3/simona/agent/grid/PowerFlowSupportSpec.scala | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/test/scala/edu/ie3/simona/agent/grid/PowerFlowSupportSpec.scala b/src/test/scala/edu/ie3/simona/agent/grid/PowerFlowSupportSpec.scala index 3aa1441c36..272a1b9d67 100644 --- a/src/test/scala/edu/ie3/simona/agent/grid/PowerFlowSupportSpec.scala +++ b/src/test/scala/edu/ie3/simona/agent/grid/PowerFlowSupportSpec.scala @@ -400,7 +400,7 @@ class PowerFlowSupportSpec "perform the power flow for the slack grid correctly" in { val withMvPowerFlowResults: Map[UUID, Dimensionless] = { - val (gridModel, receivedValueStore) = TestData.withMv + val (gridModel, receivedValueStore) = TestData.withEHV val (operationPoint, slackNodeVoltages) = composeOperatingPoint( gridModel.gridComponents.nodes, @@ -430,8 +430,8 @@ class PowerFlowSupportSpec pf.nodeData.map(n => indexMap(n.index) -> Each(n.voltage.abs)).toMap } - val onlyLvPowerFlowResults: Map[UUID, Dimensionless] = { - val (gridModel, receivedValueStore) = TestData.onlyLv + val onlyHvPowerFlowResults: Map[UUID, Dimensionless] = { + val (gridModel, receivedValueStore) = TestData.onlyHV val pf = slackGridPF( gridModel, @@ -451,7 +451,7 @@ class PowerFlowSupportSpec } - onlyLvPowerFlowResults.foreach { case (uuid, result) => + onlyHvPowerFlowResults.foreach { case (uuid, result) => withMvPowerFlowResults(uuid) should approximate(result)(tolerance) } } @@ -474,7 +474,7 @@ class PowerFlowSupportSpec simonaConfig, ) - val withMv: (GridModel, ReceivedValuesStore) = { + val withEHV: (GridModel, ReceivedValuesStore) = { val gridModel = TestGridFactory.createSubGrid( gridName = "centerGrid", subgrid = 1, @@ -497,7 +497,7 @@ class PowerFlowSupportSpec (gridModel, receivedValueStore) } - val onlyLv: (GridModel, ReceivedValuesStore) = { + val onlyHV: (GridModel, ReceivedValuesStore) = { val updatedNode1 = node1.copy().slack(true).vTarget(0.9999984268502677.asPu).build() val gridModel = TestGridFactory.createSubGrid( From f9247215e1b583959bbe0d92d9c7edd0b795e3cf Mon Sep 17 00:00:00 2001 From: staudtMarius Date: Fri, 24 Jan 2025 14:47:43 +0100 Subject: [PATCH 044/102] Checking the number of slack nodes. --- CHANGELOG.md | 1 + .../edu/ie3/simona/io/grid/GridProvider.scala | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a39a785c0..706db94bfb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Introduce ThermalDemandWrapper [#1049](https://github.com/ie3-institute/simona/issues/1049) - Added Marius Staudt to list of reviewers [#1057](https://github.com/ie3-institute/simona/issues/1057) - Throw exception if the slack node is not directly conected to a transformer. [#525](https://github.com/ie3-institute/simona/issues/525) +- Checking the number of slack nodes [#1122](https://github.com/ie3-institute/simona/issues/1122) ### Changed - Adapted to changed data source in PSDM [#435](https://github.com/ie3-institute/simona/issues/435) diff --git a/src/main/scala/edu/ie3/simona/io/grid/GridProvider.scala b/src/main/scala/edu/ie3/simona/io/grid/GridProvider.scala index 0b11d732ca..f7105b9ff7 100644 --- a/src/main/scala/edu/ie3/simona/io/grid/GridProvider.scala +++ b/src/main/scala/edu/ie3/simona/io/grid/GridProvider.scala @@ -52,6 +52,23 @@ object GridProvider extends LazyLogging { // checks the grid container and throws exception if there is an error ValidationUtils.check(jointGridContainer) + // check number of slack nodes + val numberOfSlack = + jointGridContainer.getRawGrid.getNodes.asScala.filter(_.isSlack) + + numberOfSlack.size match { + case 0 => + throw new InvalidGridException( + "The grid does not contain any slack node!" + ) + case n if n > 1 => + throw new InvalidGridException( + s"The grid has $n slack nodes. This is currently not supported!" + ) + case 1 => + + } + // check slack node location val slackSubGrid = jointGridContainer.getSubGridTopologyGraph .vertexSet() From 1b78b8840a1f250b62dcf6964f2b3630d7fda5ce Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Mon, 27 Jan 2025 13:04:25 +0100 Subject: [PATCH 045/102] Applying corrections to PvModelSpec Signed-off-by: Sebastian Peter --- .../model/participant/PvModelSpec.scala | 26 +++++++------------ 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/src/test/scala/edu/ie3/simona/model/participant/PvModelSpec.scala b/src/test/scala/edu/ie3/simona/model/participant/PvModelSpec.scala index 157ff0a041..7526eae894 100644 --- a/src/test/scala/edu/ie3/simona/model/participant/PvModelSpec.scala +++ b/src/test/scala/edu/ie3/simona/model/participant/PvModelSpec.scala @@ -13,18 +13,11 @@ import edu.ie3.datamodel.models.input.{NodeInput, OperatorInput} import edu.ie3.datamodel.models.voltagelevels.GermanVoltageLevelUtils import edu.ie3.simona.test.common.{DefaultTestData, UnitSpec} import edu.ie3.util.quantities.PowerSystemUnits._ -import edu.ie3.util.scala.quantities.{ - ApparentPower, - Irradiation, - Kilovoltamperes, - Megavars, - ReactivePower, - WattHoursPerSquareMeter, -} +import edu.ie3.util.scala.quantities._ import org.locationtech.jts.geom.{Coordinate, GeometryFactory, Point} import org.scalatest.GivenWhenThen import squants.Each -import squants.energy.{Kilowatts, Power} +import squants.energy.Kilowatts import squants.space.{Angle, Degrees, Radians} import tech.units.indriya.quantity.Quantities.getQuantity import tech.units.indriya.unit.Units._ @@ -97,7 +90,6 @@ class PvModelSpec extends UnitSpec with GivenWhenThen with DefaultTestData { private implicit val apparentPowerTolerance: ApparentPower = Kilovoltamperes( 1e-10 ) - private implicit val powerTolerance: Power = Kilowatts(1e-10) private implicit val reactivePowerTolerance: ReactivePower = Megavars(1e-10) "A PV Model" should { @@ -766,20 +758,22 @@ class PvModelSpec extends UnitSpec with GivenWhenThen with DefaultTestData { "calculate the estimate diffuse radiation eDifS correctly" in { val testCases = Table( ("thetaGDeg", "thetaZDeg", "gammaEDeg", "airMass", "I0", "eDifSSol"), - (37.0d, 62.2d, 60d, 2.13873080095658d, 1399.0077631849722d, - 216.46615469650982d), + // Reference Duffie 4th ed., p.95 + // I_0 = 5.025 MJ * 277.778 Wh/MJ = 1395.83445 Wh + // eDifSSol is 0.79607 MJ = 221.131 Wh if one only calculates the relevant terms + // from I_T on p. 96, but Duffie uses fixed f values, so the inaccuracy is fine + (37.0d, 62.2d, 60d, 2.144d, 1395.83445d, 225.5949007753d), ) forAll(testCases) { (thetaGDeg, thetaZDeg, gammaEDeg, airMass, I0, eDifSSol) => - // Reference p.95 - // https://www.sku.ac.ir/Datafiles/BookLibrary/45/John%20A.%20Duffie,%20William%20A.%20Beckman(auth.)-Solar%20Engineering%20of%20Thermal%20Processes,%20Fourth%20Edition%20(2013).pdf + // Reference Duffie 4th ed., p.95 Given("using the input data") // Beam Radiation on horizontal surface val eBeamH = - 67.777778d // 1 MJ/m^2 = 277,778 Wh/m^2 -> 0.244 MJ/m^2 = 67.777778 Wh/m^2 + 67.777778d // 1 MJ/m^2 = 277.778 Wh/m^2 -> 0.244 MJ/m^2 = 67.777778 Wh/m^2 // Diffuse Radiation on a horizontal surface - val eDifH = 213.61111d // 0.769 MJ/m^2 = 213,61111 Wh/m^2 + val eDifH = 221.111288d // 0.796 MJ/m^2 = 221.111288 Wh/m^2 When("the diffuse radiation is calculated") val eDifSCalc = pvModel.calcDiffuseRadiationOnSlopedSurfacePerez( From 0e850abdcaefea17d36971a85f6e948bba446796 Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Mon, 27 Jan 2025 16:22:17 +0100 Subject: [PATCH 046/102] Removing testing methods, fixing formatting Signed-off-by: Sebastian Peter --- .../simona/model/participant/PvModel.scala | 51 +++---------------- 1 file changed, 7 insertions(+), 44 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala index 9aa6e7d280..833894b34f 100644 --- a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala +++ b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala @@ -582,11 +582,10 @@ final case class PvModel private ( x = IntStream .range(0, discreteSkyClearnessCategories.length) .filter((i: Int) => - (finalEpsilon - discreteSkyClearnessCategories(i)( - 0 - ) >= 0) && (finalEpsilon - discreteSkyClearnessCategories( - i - )(1) < 0) + (finalEpsilon - + discreteSkyClearnessCategories(i)(0) >= 0) && + (finalEpsilon - + discreteSkyClearnessCategories(i)(1) < 0) ) .findFirst .getAsInt + 1 @@ -612,48 +611,12 @@ final case class PvModel private ( // finally calculate the diffuse radiation on an inclined surface eDifH * ( - ((1 + cos( - gammaEInRad - )) / 2) * (1 - f1) + (f1 * (aPerez / bPerez)) + (f2 * sin( - gammaEInRad - )) + ((1 + cos(gammaEInRad)) / 2) * (1 - f1) + + (f1 * (aPerez / bPerez)) + + (f2 * sin(gammaEInRad)) ) } - private def calcEpsilon( - eDifH: Irradiation, - eBeamH: Irradiation, - thetaZ: Angle, - ): Double = { - val thetaZInRad = thetaZ.toRadians - - ((eDifH + eBeamH / cos(thetaZInRad)) / eDifH + (5.535d * 1.0e-6) * pow( - thetaZ.toDegrees, - 3, - )) / - (1d + (5.535d * 1.0e-6) * pow(thetaZ.toDegrees, 3)) - } - - private def calcEpsilonOld( - eDifH: Irradiation, - eBeamH: Irradiation, - thetaZ: Angle, - ): Double = { - val thetaZInRad = thetaZ.toRadians - - ((eDifH + eBeamH) / eDifH + (5.535d * 1.0e-6) * pow(thetaZ.toRadians, 3)) / - (1d + (5.535d * 1.0e-6) * pow(thetaZ.toRadians, 3)) - } - - private def firstFraction( - eDifH: Irradiation, - eBeamH: Irradiation, - thetaZ: Angle, - ): Double = { - - (eDifH + eBeamH) / eDifH - } - /** Calculates the reflected radiation on a sloped surface * * @param eBeamH From 6607121b11e7a1add0d70469fe0e8db3789f411e Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Mon, 27 Jan 2025 16:23:41 +0100 Subject: [PATCH 047/102] Removing old test Signed-off-by: Sebastian Peter --- .../model/participant/PvModelTest.groovy | 527 ------------------ 1 file changed, 527 deletions(-) delete mode 100644 src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy diff --git a/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy b/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy deleted file mode 100644 index ea8d6f5016..0000000000 --- a/src/test/groovy/edu/ie3/simona/model/participant/PvModelTest.groovy +++ /dev/null @@ -1,527 +0,0 @@ -/* - * © 2020. TU Dortmund University, - * Institute of Energy Systems, Energy Efficiency and Energy Economics, - * Research group Distribution grid planning and operation - */ - -package edu.ie3.simona.model.participant - -import static edu.ie3.util.quantities.PowerSystemUnits.* -import static tech.units.indriya.quantity.Quantities.getQuantity -import squants.Dimensionless -import squants.Each$ -import squants.energy.Kilowatts$ -import squants.space.Degrees$ -import squants.space.Radians$ -import squants.space.SquareMeters$ -import edu.ie3.datamodel.models.OperationTime -import edu.ie3.datamodel.models.input.NodeInput -import edu.ie3.datamodel.models.input.OperatorInput -import edu.ie3.datamodel.models.input.system.PvInput -import edu.ie3.datamodel.models.input.system.characteristic.CosPhiFixed -import edu.ie3.datamodel.models.voltagelevels.GermanVoltageLevelUtils -import edu.ie3.simona.model.participant.control.QControl -import edu.ie3.util.scala.quantities.Irradiation -import edu.ie3.util.scala.OperationInterval -import edu.ie3.util.scala.quantities.Megavars$ -import edu.ie3.util.scala.quantities.Sq -import edu.ie3.util.scala.quantities.WattHoursPerSquareMeter$ -import org.locationtech.jts.geom.Coordinate -import org.locationtech.jts.geom.GeometryFactory -import org.locationtech.jts.geom.Point -import scala.Option -import spock.lang.Shared -import spock.lang.Specification -import squants.space.Angle -import java.time.ZonedDateTime - -/** - * Test class that tries to cover all special cases of the current implementation of the PvModel - * - * Some of these test cases are taken from the examples of - * Duffie, J. A., & Beckman, W. A. (2013). Solar engineering of thermal processes (4th ed.). Hoboken, N.J.: John Wiley & Sons. - * - * The page examples can be found using the page number provided in each test. Results may differ slightly from the - * book as we sometimes use different formulas. Furthermore, sometimes the example might be slightly adapted to fit our needs. - * - */ - -class PvModelTest extends Specification { - - @Shared - PvModel pvModel - - @Shared - GeometryFactory geometryFactory - - def setupSpec() { - - // build the NodeInputModel (which defines the location of the pv input model) - /// the NodeInputModel needs a GeoReference for the Pv to work - geometryFactory = new GeometryFactory() - Point p = geometryFactory.createPoint( - new Coordinate(13.2491, 53.457909)) - NodeInput nodeInput = new NodeInput( - UUID.fromString("85f8b517-8a2d-4c20-86c6-3ff3c5823e6d"), - "NodeInputModel for PvModel Test", - OperatorInput.NO_OPERATOR_ASSIGNED, - OperationTime.notLimited(), - getQuantity(1, PU), - false, - p, - GermanVoltageLevelUtils.MV_20KV, - 11 - ) - - - // build the PvInputModel - PvInput pvInput = new PvInput( - UUID.fromString("adb4eb23-1dd6-4406-a5e7-02e1e4c9dead"), - "Pv Model Test", - OperatorInput.NO_OPERATOR_ASSIGNED, - OperationTime.notLimited(), - nodeInput, - new CosPhiFixed("cosPhiFixed:{(0.0,0.9)}"), - 0.20000000298023224, - getQuantity(-8.926613807678223, DEGREE_GEOM), - getQuantity(97, PERCENT), - getQuantity(41.01871871948242, DEGREE_GEOM), - 0.8999999761581421, - 1, - false, - getQuantity(10, KILOVOLTAMPERE), - 0.8999999761581421 - ) - - // build the PvModel - double scalingFactor = 1.0d - pvModel = PvModel.apply( - pvInput.uuid, - pvInput.id, - OperationInterval.apply(0L, 86400L), - scalingFactor, - QControl.apply(pvInput.qCharacteristics), - Sq.create(pvInput.sRated.to(KILOWATT).value.doubleValue(), Kilowatts$.MODULE$), - pvInput.cosPhiRated, - Sq.create(pvInput.node.geoPosition.y, Degrees$.MODULE$), - Sq.create(pvInput.node.geoPosition.x, Degrees$.MODULE$), - pvInput.albedo, - Sq.create(pvInput.etaConv.to(PU).value.doubleValue(), Each$.MODULE$), - Sq.create(pvInput.azimuth.to(RADIAN).value.doubleValue(), Radians$.MODULE$), - Sq.create(pvInput.elevationAngle.value.doubleValue(), Radians$.MODULE$), - Sq.create(1d, SquareMeters$.MODULE$) - ) - } - - def "A PvModel should have sMax set to be 10% higher than its sRated"() { - expect: - pvModel.sMax().toKilowatts() == ((pvModel.sRated().toKilowatts() * 1.1)) - } - - def "A PvModel should provide reactive power up to 110% of it's rated apparent power"() { - given: "default adjusted voltage" - Dimensionless adjustedVoltage = Sq.create(1, Each$.MODULE$) // needed for method call but not applicable for cosphi_p - - when: "the reactive power is calculated" - def qCalc = pvModel.calculateReactivePower(Sq.create(pVal, Kilowatts$.MODULE$), adjustedVoltage) - - then: - qCalc =~ Sq.create(qSoll, Megavars$.MODULE$) - - where: - pVal || qSoll - 9.5d || 0.004601059995959599d // above sRated (no q limitation) - 11d || 0d // above sMax (limit q becomes active) - } - - def "Calculate day angle J"() { - when: - Angle jCalc = pvModel.calcAngleJ(ZonedDateTime.parse(time)) - - then: - jCalc =~ Sq.create(jSol, Radians$.MODULE$) - - where: - time || jSol - '2019-01-05T05:15:00+01:00[Europe/Berlin]' || 0.06885682528415985d - '2016-10-31T12:15:00+01:00[Europe/Berlin]' || 5.23311872159614873d // leap year => day = 305 - '2017-10-31T12:15:00+01:00[Europe/Berlin]' || 5.21590451527510877d // regular year => day = 304 - '2011-06-21T13:00:00+02:00[Europe/Berlin]' || 2.9436292808978335d // regular year => day = 172 - '2011-04-05T16:00:00+02:00[Europe/Berlin]' || 1.6181353941777565d // regular year => day = 95 - '2011-09-21T00:00:00+02:00[Europe/Berlin]' || 4.5273362624335105d // regular year => day = 264 - '2011-03-21T00:00:00+01:00[Europe/Berlin]' || 1.359922299362157d // regular year => day = 80 - } - - def "Calculate declination angle delta"() { - when: - Angle dayAngleQuantity = Sq.create(j, Radians$.MODULE$) - Angle deltaCalc = pvModel.calcSunDeclinationDelta(dayAngleQuantity) - - then: - deltaCalc =~ Sq.create(deltaSol, Radians$.MODULE$) - - where: - j || deltaSol - 0d || -0.402449d // Jan 1st - 2.943629280897834d || 0.40931542032971796d // Jun 21 (maximum: 23.45°) - 6.024972212363987d || -0.4069636112528855d // Dec 21 (minimum: -23.45°) - 4.52733626243351d || 0.01790836361732633d // Sep 21 (0°) - 1.359922299362157d || -0.0011505915019577827d // Mar 21 (0°) - } - - def "Calculate hour angle omega"() { - when: - ZonedDateTime dateTime = ZonedDateTime.parse(time) - Angle dayAngleQuantity = Sq.create(j, Radians$.MODULE$) - Angle longitudeQuantity = Sq.create(longitude, Radians$.MODULE$) - - Angle omegaCalc = pvModel.calcHourAngleOmega(dateTime, dayAngleQuantity, longitudeQuantity) - - then: - omegaCalc =~ Sq.create(omegaSol, Radians$.MODULE$) - - where: - time | j | longitude || omegaSol - '2019-01-01T05:00:00+01:00[Europe/Berlin]' | 0d | 0.16d || -1.9465030168609223d // long: ~9.17°E - '2019-01-01T10:05:00+01:00[Europe/Berlin]' | 0d | 0.16d || -0.6156894622152458d // different time: 10:05 - '2019-01-01T12:00:00+01:00[Europe/Berlin]' | 0d | 0.16d || -0.11390730226687622d // 12:00 - '2019-01-01T14:00:00+01:00[Europe/Berlin]' | 0d | 0.16d || 0.40969147333142264d // 14:00 - '2019-01-01T17:30:00+01:00[Europe/Berlin]' | 0d | 0.16d || 1.3259893306284447d // 17:30 - '2019-03-21T05:00:00+01:00[Europe/Berlin]' | 1.359922299362157d | 0.16d || -1.9677750757840207d // different j (different date) - '2019-01-01T05:00:00+01:00[Europe/Berlin]' | 0d | 0.175d || -1.9315030168609224d // different long, ~10°E - '2011-06-21T11:00:00+02:00[Europe/Berlin]' | 2.9436292808978d | 0.2337d || -0.2960273936975511d // long of Berlin (13.39E), - '2011-06-21T12:00:00+02:00[Europe/Berlin]' | 2.9436292808978d | 0.2337d || -0.034228005898401644d // long of Berlin (13.39E), - '2011-06-21T13:00:00+02:00[Europe/Berlin]' | 2.9436292808978d | 0.2337d || 0.2275713819007478d // long of Berlin (13.39E), - '2011-06-21T14:00:00+02:00[Europe/Berlin]' | 2.9436292808978d | 0.2337d || 0.4893707696998972d // long of Berlin (13.39E), - '2011-06-21T15:00:00+02:00[Europe/Berlin]' | 2.9436292808978d | 0.2337d || 0.7511701574990467d // long of Berlin (13.39E), - '2011-04-05T16:00:00+02:00[Europe/Berlin]' | 1.6181353941777565d | 0.2337d || 1.0062695999127786d // long of Berlin (13.39E), - '2011-06-21T12:00:00+02:00[Europe/Berlin]' | 2.9436292808978d | 0.5449d || 0.2769719941015987d // long of Cairo (31.22E), - } - - def "Calculate sunset angle omegaSS"() { - when: - Angle latitudeQuantity = Sq.create(latitude, Radians$.MODULE$) - Angle deltaQuantity = Sq.create(delta, Radians$.MODULE$) - - Angle omegaSSCalc = pvModel.calcSunsetAngleOmegaSS(latitudeQuantity, deltaQuantity) - - then: - omegaSSCalc =~ Sq.create(omegaSSSol, Radians$.MODULE$) - - where: - latitude | delta || omegaSSSol - 0.9d | -0.402449d || 1.0045975406286176d // lat: ~51.57°N - 0.935d | -0.402449d || 0.956011693657339d // different lat: ~53.57°N - 0.9d | 0.017908d || 1.5933675693198284d // different delta - 0.157952297d | 0.384670567d || 1.635323424114512d // //Example 2.2 Goswami Priciples of Solar Engineering - } - - def "Calculate solar altitude angle alphaS"() { - when: - Angle omegaQuantity = Sq.create(omega, Radians$.MODULE$) - Angle deltaQuantity = Sq.create(delta, Radians$.MODULE$) - Angle latitudeQuantity = Sq.create(latitude, Radians$.MODULE$) - - Angle alphaSCalc = pvModel.calcSolarAltitudeAngleAlphaS(omegaQuantity, deltaQuantity, latitudeQuantity) - - then: - alphaSCalc =~ Sq.create(alphaSSol, Radians$.MODULE$) - - where: - omega | delta | latitude || alphaSSol - 1.946503016860923d | -0.402449d | 0.9d || -0.5429594681352444d // delta: Jan 1st, lat: ~51.57°N - 1.967775075784021d | -0.001150591501958d | 0.9d || -0.24363984335678648d // delta: March 21st - 1.946503016860923d | -0.402449d | 0.935d || -0.5417322854819461d // delta: Jan 1st, lat: ~53.57°N - 1.256637061d | -0.402449d | 0.698d || -0.033897520990303694d // omega: 82°, delta: Jan 1st, lat: ~39.99°N - 0.409691473331422d | -0.402449d | 0.9d || 0.21956610107293822d // omega: 14:00, delta: Jan 1st - -0.85019406d | -0.00720875d | 0.9128072d || 0.40911138927659646d // omega: -48.71° = 09:00, delta: March 21st, lat: Berlin - +0.22425484d | +0.40899596d | 0.9128072d || 1.0386092658376944d // omega: +12.84° = 14:00 MESZ = 13:00 MEZ, delta: June 21st, lat: Berlin - -0.81703281d | -0.00720875d | 0.54628806d || 0.619982384489836d // omega: -36.9809° = 09:00, delta: March 21st, lat: Cairo - -0.00438329d | +0.40899596d | 0.54628806d || 1.4334492081530734d // omega: -0.25° = 12:00, delta: June 21st, lat: Cairo - +0.0126074d | -0.40842934d | 0.54628806d || 0.6160025701438165d // omega: +0.7223° = 12:00, delta: Dez 21st, lat: Cairo - -0.78639785d | +0.1549651d | 0.54628806d || 0.7430566034615067d // omega: -45.05° = 09:00, delta: Sep 1st, lat: Cairo - +1.04619786d | 0.1549651d | 0.54628806d || 0.5270965151470974d // omega: +59.943° = 16:00, delta: Sep 1st, lat: Cairo - 0d | -0.305432619d | 0.518013722d || 0.7473499857948969d // omega: 0 = Solar Noon, delta: February 01st, lat/lon: Gainsville (29.68 N, 82.27 W) //Example 2.1a Goswami Priciples of Solar Engineering - -1.374970385d | +0.380755678d | 0.157952297d || 0.2391202791125743d // omega: -78.78° = 7:00 a.m., delta: June 01st, lat/lon: Tocumen Panama (9.05 N, 79.37 W) //Example 2.2a Goswami Priciples of Solar Engineering - 0d | -0.268780705d | -0.616101226d || 1.2234758057948967d // omega: 0° = Solar noon., delta: November 01st, lat/lon: Canberra Australia (35.3 S, 149.1 E) //Example 2.3b Goswami Priciples of Solar Engineering - Math.toRadians(-37.5d) | Math.toRadians(-14d) | Math.toRadians(43d) || Math.toRadians(23.4529893659531784299686037109330117049955654837550d) // '2011-02-13T09:30:00' from Duffie - Math.toRadians(97.5d) | Math.toRadians(23.1d) | Math.toRadians(43d) || Math.toRadians(10.356151317506402829742934977890382350725031728508d) // '2011-07-01T06:30:00' from Duffie - // Reference: Quaschning, Regenerative Energiesysteme figure 2.15 and figure 2.16 // gammaS@Quaschning = alphaS@SIMONA ! - Math.toRadians(-47.15114406) | Math.toRadians(23.4337425d) | Math.toRadians(52.3d) || Math.toRadians(44.12595614280154d) // Berlin (13.2E 52.3N) '2011-06-21T09:00:00' MEZ - Math.toRadians(-32.15114394d) | Math.toRadians(23.4337425d) | Math.toRadians(52.3d) || Math.toRadians(52.15790489243239d) // Berlin (13.2E 52.3N) '2011-06-21T10:00:00' MEZ - Math.toRadians(-17.15114381d) | Math.toRadians(23.4337425d) | Math.toRadians(52.3d) || Math.toRadians(58.29851278388936d) // Berlin (13.2E 52.3N) '2011-06-21T11:00:00' MEZ - Math.toRadians(-2.151143686d) | Math.toRadians(23.4337425d) | Math.toRadians(52.3d) || Math.toRadians(61.086849596117524d) // Berlin (13.2E 52.3N) '2011-06-21T12:00:00' MEZ - Math.toRadians(12.84885587d) | Math.toRadians(23.4337425d) | Math.toRadians(52.3d) || Math.toRadians(59.50792770681503d) // Berlin (13.2E 52.3N) '2011-06-21T13:00:00' MEZ - Math.toRadians(27.84885599d) | Math.toRadians(23.4337425d) | Math.toRadians(52.3d) || Math.toRadians(54.170777340509574d) // Berlin (13.2E 52.3N) '2011-06-21T14:00:00' MEZ - Math.toRadians(58.28178946d) | Math.toRadians(7.79402247d) | Math.toRadians(52.3d) || Math.toRadians(25.203526133755485d) // Berlin (13.2E 52.3N) '2011-09-04T16:00:00' MEZ - Math.toRadians(0.948855924d) | Math.toRadians(23.4337425d) | Math.toRadians(30.1d) || Math.toRadians(83.28023248078853d) // Cairo (31.3E 30.1N) '2011-06-21T12:00:00' MEZ+1h - } - - def "Calculate zenith angle thetaZ"() { - when: - Angle alphaSQuantity = Sq.create(alphaS, Radians$.MODULE$) - - Angle thetaZCalc = pvModel.calcZenithAngleThetaZ(alphaSQuantity) - - then: - thetaZCalc =~ Sq.create(thetaZSol, Radians$.MODULE$) - - where: - alphaS || thetaZSol - 0d || 1.5707963267948966d // 0° - 0.785398163397448d || 0.7853981633974486d // 45° - 1.570796326794897d || -4.440892098500626E-16d // 90° - } - - def "Calculate air mass"() { - when: - Angle thetaZQuantity = Sq.create(thetaZ, Radians$.MODULE$) - - double airMassCalc = pvModel.calcAirMass(thetaZQuantity) - - then: - airMassCalc =~ airMassSol - - where: - thetaZ || airMassSol - 0d || 1d // 0° - 0.785398163397448d || 1.41321748045965d // 45° - 1.570796326794897d || 37.640108631323025d // 90° - } - - def "Calculate extraterrestrial radiation IO"() { - when: - Angle dayAngleQuantity = Sq.create(j, Radians$.MODULE$) - - Irradiation I0Calc = pvModel.calcExtraterrestrialRadiationI0(dayAngleQuantity) - - then: - I0Calc =~ Sq.create(I0Sol, WattHoursPerSquareMeter$.MODULE$) - - where: - j || I0Sol - 0d || 1414.91335d // Jan 1st - 2.943629280897834d || 1322.494291080537598d // Jun 21st - 4.52733626243351d || 1355.944773587800003d // Sep 21st - } - - def "Calculate the angle of incidence thetaG"() { - - "Calculate the angle of incidence of beam radiation on a surface located at a Latitude" + - "at a certain hour angle (solar time) on a given declination (date) if the surface " + - "is tilted by a certain slope from the horizontal and pointed to a certain panel azimuth " + - "west of south." - - "== Calculate the angle of incidence thetaG ==" - given: - // Declination Angle delta of the sun at solar noon - Angle deltaRad = Sq.create(Math.toRadians(deltaIn), Radians$.MODULE$) - //Latitude in Radian - Angle latitudeInRad = Sq.create(Math.toRadians(latitudeInDeg), Radians$.MODULE$) - //Hour Angle - Angle omegaRad = Sq.create(Math.toRadians(omegaDeg), Radians$.MODULE$) - //Inclination Angle of the surface - Angle gammaERad = Sq.create(Math.toRadians(gammaEDeg), Radians$.MODULE$) - //Surface azimuth - Angle alphaERad = Sq.create(Math.toRadians(alphaEDeg), Radians$.MODULE$) - - when: - Angle thetaG = pvModel.calcAngleOfIncidenceThetaG(deltaRad, latitudeInRad, gammaERad, alphaERad, omegaRad) - - then: - "- should calculate the angle of incidence thetaG " - thetaG.toDegrees() =~ Sq.create(thetaGOut, Degrees$.MODULE$).toDegrees() - - where: "the following parameters are given" - latitudeInDeg | deltaIn | omegaDeg | gammaEDeg | alphaEDeg || thetaGOut - 43d | -14d | -22.5d | 45d | 15d || 35.176193345578606393727080835951995075234213360724d // Duffie - 51.516667d | +18.4557514d | -15.00225713d | 30d | +0d || 14.420271449960715d // Iqbal - 51.516667d | +18.4557514d | -15.00225713d | 90d | +0d || 58.65287310017624d // Iqbal - 35.0d | +23.2320597d | +30.00053311d | 45d | 10d || 39.62841449023577d // Kalogirou - Solar Energy Engineering Example 2.7 ISBN 978-0-12-374501-9; DOI https://doi.org/10.1016/B978-0-12-374501-9.X0001-5 - 35.0d | +23.2320597d | +30.00053311d | 45d | 90d || 18.946300807438607d // Kalogirou - Solar Energy Engineering Example 2.7 changed to 90° panel azimuth to WEST - 35.0d | +23.2320597d | +74.648850625d | 45d | 90d || 21.95480347380729d // Kalogirou - Solar Energy Engineering Example 2.7 90° panel azimuth to WEST at 17:00 - 35.0d | +23.2320597d | +74.648850625d | 45d | -90d || 109.00780288303966d // Kalogirou - Solar Energy Engineering Example 2.7 90° panel azimuth to EAST at 17:00 - 27.96d | -17.51d | -11.1d | 30d | +10d || 22.384603601536398d // Goswami Priciples of Solar Engineering Example 2.7a - -35.3d | -17.51d | -4.2d | 30d | +170d || 14.882390116876563d // Goswami Priciples of Solar Engineering Example 2.7b - } - - def "Testing the equality of zenith angle of a horizontal surface and thetaG of a sloped surface"() { - - "Iqbal Figure 1.6.2 - the angle of incidence of a surface sloped by angle beta at " + - "latitude phi should be same as the zenith angle of an unsloped surface" + - "positioned at latitude phi - beta " + - "" - - given: - "- using pre-calculated parameters" - //Latitude in Radian - Angle latitudeInRad = Sq.create(Math.toRadians(latitudeInDeg), Radians$.MODULE$) - // Declination Angle delta of the sun at solar noon - Angle delta = Sq.create(Math.toRadians(deltaIn), Radians$.MODULE$) - //Hour Angle - Angle omega = Sq.create(Math.toRadians(omegaIn), Radians$.MODULE$) - //Inclination Angle of the surface - Angle gammaE = Sq.create(Math.toRadians(slope), Radians$.MODULE$) - //Sun's azimuth - Angle alphaE = Sq.create(Math.toRadians(azimuth), Radians$.MODULE$) - - // should calculate the angle of incidence thetaG - when: - Angle thetaG = pvModel.calcAngleOfIncidenceThetaG(delta, latitudeInRad, gammaE, alphaE, omega) - - then: - thetaG.toDegrees() =~ thetaOut - - where: "the following parameters are given" - latitudeInDeg | deltaIn | omegaIn | slope | azimuth || thetaOut - 45d | -7.15 | -82.5d | 60d | 0 || 80.94904834048776d // thetaG - 15d | -7.15 | -82.5d | 30d | 0 || 80.94904834048776d // same test but 15° South with 15° less sloped surface - 0d | -7.15 | -82.5d | 15d | 0 || 80.94904834048776d // same test but 15° South with 15° less sloped surface - 52.3d | 23.4337425 | 2.15114395d | 0d | 0 || 28.91315041538251d // Berlin 21.06. 12:00 => thetaG = 90 - alphaS - 70.3d | 23.4337425 | 2.15114395d | 18d | 0 || 28.91315041538251d // same test but 18° North with 18° sloped surface - } - - def "Calculate Rb (cos(thetaG)/cos(thetaZ))"() { - - "On March 4 at a latitude of 45◦ and a surface slope of 60◦ determine Rb at 6:30 AM and Rb,ave " + - "for the hour 6 to 7 AM." - - given: - "- using pre-calculated parameters" - //Latitude in Radian - Angle latitudeInRad = Sq.create(Math.toRadians(latitudeInDeg), Radians$.MODULE$) - // Declination Angle delta of the sun at solar noon - Angle delta = Sq.create(Math.toRadians(deltaIn), Radians$.MODULE$) - //Hour Angle - Angle omega = Sq.create(Math.toRadians(omegaIn), Radians$.MODULE$) - //Inclination Angle of the surface - Angle gammaE = Sq.create(Math.toRadians(slope), Radians$.MODULE$) - //Sun's azimuth - Angle alphaE = Sq.create(Math.toRadians(azimuth), Radians$.MODULE$) - - expect: - "- should calculate the angle of incidence thetaG and zenith angle thetaZ of beam radiation on a surface correctly" - - pvModel.calcAngleOfIncidenceThetaG(delta, latitudeInRad, gammaE, alphaE, omega).toDegrees() =~ thetaOut - - - where: "the following parameters are given" - latitudeInDeg | deltaIn | omegaIn | slope | azimuth || thetaOut - 45 | -7.15 | -82.5 | 60 | 0 || 80.94904834048776 // thetaG - 45 | -7.15 | -82.5 | 0 | 0 || 89.79565474295107 // thetaZ - 40 | -11.6 | -82.5 | 60 | 0 || 79.11011928744357 - 40 | -11.6 | 82.5 | 60 | 0 || 79.11011928744357 - 40 | -11.6 | -78.0 | 60 | 0 || 74.92072065185143 - 40 | -11.6 | 78.0 | 60 | 0 || 74.92072065185143 - } - - def "Calculate the estimate beam radiation eBeamS"() { - - "Using the Perez diffuse model, estimate the beam, diffuse, and ground-reflected components of solar " + - "radiation and the total radiation on a surface sloped 60◦ toward the south at a latitude of 40◦ N " + - "for the hour 9 to 10 AM on February 20. Here I = 1.04 MJ/m2 and ρg = 0.60." - //Reference p.95 - //https://www.sku.ac.ir/Datafiles/BookLibrary/45/John%20A.%20Duffie,%20William%20A.%20Beckman(auth.)-Solar%20Engineering%20of%20Thermal%20Processes,%20Fourth%20Edition%20(2013).pdf - - given: - //Inclination of the Pv system in degrees (tilted from the horizontal) - Angle gammaE = Sq.create(Math.toRadians(slope), Radians$.MODULE$) - //Inclination of the Pv system in degrees (Inclined in a compass direction)(South 0◦; West 90◦; East -90◦) - Angle alphaE = Sq.create(Math.toRadians(azimuth), Radians$.MODULE$) - //Latitude in Radian - Angle latitudeInRad = Sq.create(Math.toRadians(latitudeInDeg), Radians$.MODULE$) - // 1 MJ/m^2 = 277,778 Wh/m^2 - // 0.244 MJ/m^2 = 67.777778 Wh/m^2 - //Beam Radiation on horizontal surface - Irradiation eBeamH = Sq.create(67.777778d, WattHoursPerSquareMeter$.MODULE$) - // Declination Angle delta of the sun at solar noon - Angle delta = Sq.create(Math.toRadians(deltaIn), Radians$.MODULE$) - //Hour Angle - Angle omega = Sq.create(Math.toRadians(omegaIn), Radians$.MODULE$) - //Incidence Angle - Angle thetaG = Sq.create(Math.toRadians(thetaGIn), Radians$.MODULE$) - //Sunset Angle - Angle omegaSS = pvModel.calcSunsetAngleOmegaSS(latitudeInRad, delta) - //Sunrise Angle (Sunset Angle * (-1)) - Angle omegaSR = omegaSS.$times(-1d) - //omega1 and omega2 - Option> omegas = pvModel.calculateBeamOmegas(thetaG, omega, omegaSS, omegaSR) - - expect: - "- should calculate the beam contribution," - - pvModel.calcBeamRadiationOnSlopedSurface(eBeamH, omegas, delta, latitudeInRad, gammaE, alphaE) =~ Sq.create(eBeamSSol, WattHoursPerSquareMeter$.MODULE$) - - - where: "the following parameters are given" - latitudeInDeg | slope | azimuth | deltaIn | omegaIn | thetaGIn || eBeamSSol - 40d | 0d | 0d | -11.6d | -37.5d | 37.0d || 67.777778d // flat surface => eBeamS = eBeamH - 40d | 60d | 0d | -11.6d | -37.5d | 37.0d || 112.84217113154841369d // 2011-02-20T09:00:00 - 40d | 60d | 0d | -11.6d | -78.0d | 75.0d || 210.97937494450755d // sunrise - 40d | 60d | 0d | -11.6d | 62.0d | 76.0d || 199.16566536224116d // sunset - 40d | 60d | 0d | -11.6d | 69.0d | 89.9d || 245.77637766673405d // sunset, cut off - 40d | 60d | 0d | -11.6d | 75.0d | 89.9d || 0d // no sun - 40d | 60d | -90.0d | -11.6d | 60.0d | 91.0d || 0d // no direct beam - } - - def "Calculate the estimate diffuse radiation eDifS"() { - - given: - //Inclination of the Pv system in degrees (tilted from the horizontal) - Angle gammaE = Sq.create(Math.toRadians(slope), Radians$.MODULE$) - // 1 MJ/m^2 = 277,778 Wh/m^2 - // 0.244 MJ/m^2 = 67.777778 Wh/m^2 - //Beam Radiation on horizontal surface - Irradiation eBeamH = Sq.create(67.777778d, WattHoursPerSquareMeter$.MODULE$) - // 0.796 MJ/m^2 = 221,111288 Wh/m^2 - //Diffuse beam Radiation on horizontal surface - Irradiation eDifH = Sq.create(221.111288d, WattHoursPerSquareMeter$.MODULE$) - //Incidence Angle - Angle thetaG = Sq.create(Math.toRadians(thetaGIn), Radians$.MODULE$) - //Zenith Angle - Angle thetaZ = Sq.create(Math.toRadians(thetaZIn), Radians$.MODULE$) - // Extraterrestrial radiation - Irradiation I0Quantity = Sq.create(I0, WattHoursPerSquareMeter$.MODULE$) - - expect: - "- should calculate the beam diffusion" - // == 0,7792781569074354 MJ/m^2 - - def epsilon = pvModel.calcEpsilon(eDifH, eBeamH, thetaZ) // epsilon(Duffie) = 1,28451252 - def epsilonOld = pvModel.calcEpsilonOld(eDifH, eBeamH, thetaZ) - def firstFraction = pvModel.firstFraction(eDifH, eBeamH, thetaZ) - - def diffuseradiation = pvModel.calcDiffuseRadiationOnSlopedSurfacePerez(eDifH, eBeamH, airMass, I0Quantity, thetaZ, thetaG, gammaE) - diffuseradiation =~ Sq.create(eDifSSol, WattHoursPerSquareMeter$.MODULE$) - - where: "the following parameters are given" - thetaGIn | thetaZIn | slope | airMass | I0 || eDifSSol - 37.0 | 62.2 | 60 | 2.144d | 1395.8445d || 220.83351d - } - - def "Calculate the ground reflection eRefS"() { - - given: - "- Beam radiation and diffuse bean radiation on horizontal surface" - //Inclination of the Pv system in degrees (tilted from the horizontal) - Angle gammaE = Sq.create(Math.toRadians(slope), Radians$.MODULE$) - // 1 MJ/m^2 = 277,778 Wh/m^2 - // 0.244 MJ/m^2 = 67.777778 Wh/m^2 - //Beam Radiation on horizontal surface - Irradiation eBeamH = Sq.create(67.777778d, WattHoursPerSquareMeter$.MODULE$) - // 0.769 MJ/m^2 = 213,61111 Wh/m^2 - //Diffuse beam Radiation on horizontal surface - Irradiation eDifH = Sq.create(213.61111d, WattHoursPerSquareMeter$.MODULE$) - - expect: - "- should calculate the ground reflection correctly" - // == 0,15194999952 MJ/m^2 (Book: 0.156 MJ/m^2) - - pvModel.calcReflectedRadiationOnSlopedSurface(eBeamH, eDifH, gammaE, albedo) =~ Sq.create(eRefSSol, WattHoursPerSquareMeter$.MODULE$) - - - where: "the following parameters are given" - slope | albedo || eRefSSol - 60 | 0.60 || 42.20833319999999155833336d // '2011-02-20T09:00:00' - } -} From 866170bc273ee89d6575cb90b6de2ffb5bd6809f Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Mon, 27 Jan 2025 16:52:29 +0100 Subject: [PATCH 048/102] Replacing questionable source Signed-off-by: Sebastian Peter --- docs/readthedocs/_static/bibliography/bibtexAll.bib | 6 ------ docs/readthedocs/models/pv_model.md | 4 ++-- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/docs/readthedocs/_static/bibliography/bibtexAll.bib b/docs/readthedocs/_static/bibliography/bibtexAll.bib index 21a22d47cb..8761d828b4 100644 --- a/docs/readthedocs/_static/bibliography/bibtexAll.bib +++ b/docs/readthedocs/_static/bibliography/bibtexAll.bib @@ -12,12 +12,6 @@ @Article{Maleki.2017 DOI = {10.3390/en10010134} } -@MISC{Itaca_Sun, -author = {Itacanet}, -title = {The Sun As A Source Of Energy}, -howpublished={\url{https://de.scribd.com/document/455342846/Part-3-Calculating-Solar-Angles-ITACA}} -} - @article{Spencer.1971, added-at = {2018-06-18T21:23:34.000+0200}, author = {Spencer, J. W.}, diff --git a/docs/readthedocs/models/pv_model.md b/docs/readthedocs/models/pv_model.md index 83358010fa..7ec0734614 100644 --- a/docs/readthedocs/models/pv_model.md +++ b/docs/readthedocs/models/pv_model.md @@ -127,7 +127,7 @@ $$ **References:** * {cite:cts}`Maleki.2017` -* {cite:cts}`Itaca_Sun` +* {cite:cts}`Duffie.2013` p. 17 (1.16.10) ### Solar Altitude Angle @@ -146,7 +146,7 @@ $$ **References:** * {cite:cts}`Maleki.2017` p. 5 -* {cite:cts}`Itaca_Sun` +* {cite:cts}`Duffie.2013` p. 15 (1.6.5) with $\sin (\alpha_s) = \cos (\theta_z)$ ### Zenith Angle From 72645c745f0dbd0cc4c25d1add5653382d5a20aa Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Mon, 27 Jan 2025 16:57:06 +0100 Subject: [PATCH 049/102] Adding hint about Duffie 5th ed Signed-off-by: Sebastian Peter --- docs/readthedocs/models/pv_model.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/readthedocs/models/pv_model.md b/docs/readthedocs/models/pv_model.md index 7ec0734614..1baa451394 100644 --- a/docs/readthedocs/models/pv_model.md +++ b/docs/readthedocs/models/pv_model.md @@ -235,7 +235,7 @@ $$ * {cite:cts}`Zheng.2017` p. 53, formula 2.3b * {cite:cts}`Iqbal.1983` * {cite:cts}`Spencer.1971` -* {cite:cts}`Duffie.2013` +* {cite:cts}`Duffie.2013` (the fifth ed. seems to have a typo here) ### Beam Radiation on Sloped Surface From a02bc9e3f218bd9dae8e85fd45304aad2a93f689 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 13:44:28 +0100 Subject: [PATCH 050/102] Bump com.sksamuel.scapegoat:scalac-scapegoat-plugin_2.13.16 (#1116) Bumps [com.sksamuel.scapegoat:scalac-scapegoat-plugin_2.13.16](https://github.com/sksamuel/scapegoat) from 3.1.3 to 3.1.4. - [Release notes](https://github.com/sksamuel/scapegoat/releases) - [Commits](https://github.com/sksamuel/scapegoat/compare/v3.1.3...v3.1.4) --- updated-dependencies: - dependency-name: com.sksamuel.scapegoat:scalac-scapegoat-plugin_2.13.16 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index b27f03c278..a02ed10c42 100644 --- a/build.gradle +++ b/build.gradle @@ -29,7 +29,7 @@ ext { jtsVersion = '1.20.0' confluentKafkaVersion = '7.4.0' tscfgVersion = '1.2.1' - scapegoatVersion = '3.1.3' + scapegoatVersion = '3.1.4' testContainerVersion = '0.41.5' From f68f3b3a108da817cfbe085307ce3d487d9c3793 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 13:03:25 +0000 Subject: [PATCH 051/102] Bump com.github.ben-manes.versions from 0.51.0 to 0.52.0 (#1121) --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index a02ed10c42..1ba3472716 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ plugins { id 'signing' id 'maven-publish' // publish to a maven repo (local or mvn central, has to be defined) id 'com.diffplug.spotless' version '6.25.0'// code format - id "com.github.ben-manes.versions" version '0.51.0' + id "com.github.ben-manes.versions" version '0.52.0' id "de.undercouch.download" version "5.6.0" // downloads plugin id "kr.motd.sphinx" version "2.10.1" // documentation generation id "com.github.johnrengelman.shadow" version "8.1.1" // fat jar From 8c3d2f9463053bb987a8b44bf510e927ff7afb91 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 13:29:37 +0000 Subject: [PATCH 052/102] Bump testContainerVersion from 0.41.5 to 0.41.8 (#1115) --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 1ba3472716..eeb8c1b592 100644 --- a/build.gradle +++ b/build.gradle @@ -31,7 +31,7 @@ ext { tscfgVersion = '1.2.1' scapegoatVersion = '3.1.4' - testContainerVersion = '0.41.5' + testContainerVersion = '0.41.8' scriptsLocation = 'gradle' + File.separator + 'scripts' + File.separator // location of script plugins } From a7bd94fc159624dc6048c4d8ab22193c98371748 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Tue, 28 Jan 2025 14:34:30 +0100 Subject: [PATCH 053/102] renaming brightness parameter as delta --- .../scala/edu/ie3/simona/model/participant/PvModel.scala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala index 833894b34f..a694f89fd5 100644 --- a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala +++ b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala @@ -545,7 +545,7 @@ final case class PvModel private ( val gammaEInRad = gammaE.toRadians // == brightness index beta ==// - val beta = eDifH * airMass / extraterrestrialRadiationI0 + val delta = eDifH * airMass / extraterrestrialRadiationI0 // == cloud index epsilon ==// // if we have no clouds, the epsilon bin is 8, as epsilon bin for an epsilon in [6.2, inf.[ = 8 @@ -604,8 +604,8 @@ final case class PvModel private ( val f23 = 0.0052 * pow(x, 3) - 0.0971 * pow(x, 2) + 0.2856 * x - 0.1389 // calculate circuumsolar brightness coefficient f1 and horizon brightness coefficient f2 - val f1 = max(0, f11 + f12 * beta + f13 * thetaZInRad) - val f2 = f21 + f22 * beta + f23 * thetaZInRad + val f1 = max(0, f11 + f12 * delta + f13 * thetaZInRad) + val f2 = f21 + f22 * delta + f23 * thetaZInRad val aPerez = max(0, cos(thetaGInRad)) val bPerez = max(cos(1.4835298641951802), cos(thetaZInRad)) From 6a0bdf087431dd37a0efbcbaeae842aff81f6e9e Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Tue, 28 Jan 2025 14:36:52 +0100 Subject: [PATCH 054/102] use Megajoule as input to increase comprehensibility of test --- .../ie3/simona/model/participant/PvModelSpec.scala | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/test/scala/edu/ie3/simona/model/participant/PvModelSpec.scala b/src/test/scala/edu/ie3/simona/model/participant/PvModelSpec.scala index 7526eae894..c102f5e3a4 100644 --- a/src/test/scala/edu/ie3/simona/model/participant/PvModelSpec.scala +++ b/src/test/scala/edu/ie3/simona/model/participant/PvModelSpec.scala @@ -756,13 +756,16 @@ class PvModelSpec extends UnitSpec with GivenWhenThen with DefaultTestData { } "calculate the estimate diffuse radiation eDifS correctly" in { + def megaJoule2WattHours(megajoule: Double): Double= + {megajoule / (3.6/1000)} + val testCases = Table( ("thetaGDeg", "thetaZDeg", "gammaEDeg", "airMass", "I0", "eDifSSol"), // Reference Duffie 4th ed., p.95 // I_0 = 5.025 MJ * 277.778 Wh/MJ = 1395.83445 Wh - // eDifSSol is 0.79607 MJ = 221.131 Wh if one only calculates the relevant terms - // from I_T on p. 96, but Duffie uses fixed f values, so the inaccuracy is fine - (37.0d, 62.2d, 60d, 2.144d, 1395.83445d, 225.5949007753d), + // eDifSSol is 0.79607 MJ (0.444 + 0.348 + 0.003) if one only calculates the relevant terms + // from I_T on p. 96, but Duffie uses fixed f values, so the inaccuracy is fine (approx. 4.5 Wh/m^2 or 0.016 MJ/m^2) + (37.0d, 62.2d, 60d, 2.144d, megaJoule2WattHours(5.025), megaJoule2WattHours(0.812140993078191252)), ) forAll(testCases) { @@ -771,9 +774,9 @@ class PvModelSpec extends UnitSpec with GivenWhenThen with DefaultTestData { Given("using the input data") // Beam Radiation on horizontal surface val eBeamH = - 67.777778d // 1 MJ/m^2 = 277.778 Wh/m^2 -> 0.244 MJ/m^2 = 67.777778 Wh/m^2 + megaJoule2WattHours(0.244) // 0.244 MJ/m^2 = 67.777778 Wh/m^2 // Diffuse Radiation on a horizontal surface - val eDifH = 221.111288d // 0.796 MJ/m^2 = 221.111288 Wh/m^2 + val eDifH = megaJoule2WattHours(0.796) // 0.796 MJ/m^2 = 221.111111 Wh/m^2 When("the diffuse radiation is calculated") val eDifSCalc = pvModel.calcDiffuseRadiationOnSlopedSurfacePerez( From 780f58154d766c4232b0bf459016371d7583ce73 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Tue, 28 Jan 2025 14:38:05 +0100 Subject: [PATCH 055/102] typo --- src/main/scala/edu/ie3/simona/model/participant/PvModel.scala | 2 +- .../scala/edu/ie3/simona/model/participant/PvModelSpec.scala | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala index a694f89fd5..693099a49a 100644 --- a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala +++ b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala @@ -603,7 +603,7 @@ final case class PvModel private ( val f22 = 0.0012 * pow(x, 3) - 0.0067 * pow(x, 2) + 0.0091 * x - 0.0269 val f23 = 0.0052 * pow(x, 3) - 0.0971 * pow(x, 2) + 0.2856 * x - 0.1389 - // calculate circuumsolar brightness coefficient f1 and horizon brightness coefficient f2 + // calculate circumsolar brightness coefficient f1 and horizon brightness coefficient f2 val f1 = max(0, f11 + f12 * delta + f13 * thetaZInRad) val f2 = f21 + f22 * delta + f23 * thetaZInRad val aPerez = max(0, cos(thetaGInRad)) diff --git a/src/test/scala/edu/ie3/simona/model/participant/PvModelSpec.scala b/src/test/scala/edu/ie3/simona/model/participant/PvModelSpec.scala index c102f5e3a4..48ed48af94 100644 --- a/src/test/scala/edu/ie3/simona/model/participant/PvModelSpec.scala +++ b/src/test/scala/edu/ie3/simona/model/participant/PvModelSpec.scala @@ -755,7 +755,7 @@ class PvModelSpec extends UnitSpec with GivenWhenThen with DefaultTestData { } } - "calculate the estimate diffuse radiation eDifS correctly" in { + "calculate the estimated diffuse radiation eDifS correctly" in { def megaJoule2WattHours(megajoule: Double): Double= {megajoule / (3.6/1000)} From fbea5e8badf653f8d788418efd8dbf4dca5b123e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Jan 2025 13:53:06 +0000 Subject: [PATCH 056/102] Bump com.github.carueda:tscfg_2.13 from 1.2.1 to 1.2.4 (#1126) --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index eeb8c1b592..eac1fda18e 100644 --- a/build.gradle +++ b/build.gradle @@ -28,7 +28,7 @@ ext { pekkoVersion = '1.1.3' jtsVersion = '1.20.0' confluentKafkaVersion = '7.4.0' - tscfgVersion = '1.2.1' + tscfgVersion = '1.2.4' scapegoatVersion = '3.1.4' testContainerVersion = '0.41.8' From 08828f0d72d47e9129fbc3a340b8399762834f3a Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Tue, 28 Jan 2025 15:37:33 +0100 Subject: [PATCH 057/102] Apply suggestions from code review Corrections in documentation Co-authored-by: Daniel Feismann <98817556+danielfeismann@users.noreply.github.com> --- docs/readthedocs/models/pv_model.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/readthedocs/models/pv_model.md b/docs/readthedocs/models/pv_model.md index 1baa451394..d80c4ab697 100644 --- a/docs/readthedocs/models/pv_model.md +++ b/docs/readthedocs/models/pv_model.md @@ -127,7 +127,7 @@ $$ **References:** * {cite:cts}`Maleki.2017` -* {cite:cts}`Duffie.2013` p. 17 (1.16.10) +* {cite:cts}`Duffie.2013` p. 17 (formula 1.6.10) ### Solar Altitude Angle @@ -146,7 +146,7 @@ $$ **References:** * {cite:cts}`Maleki.2017` p. 5 -* {cite:cts}`Duffie.2013` p. 15 (1.6.5) with $\sin (\alpha_s) = \cos (\theta_z)$ +* {cite:cts}`Duffie.2013` p. 15 (formula 1.6.5) with $\sin (\alpha_s) = \cos (\theta_z)$ ### Zenith Angle From dc73481839a5c02448811a4307f952de7557b62e Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Tue, 28 Jan 2025 15:48:21 +0100 Subject: [PATCH 058/102] Enhancing hint about typo in Duffie Signed-off-by: Sebastian Peter --- docs/readthedocs/models/pv_model.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/readthedocs/models/pv_model.md b/docs/readthedocs/models/pv_model.md index d80c4ab697..1585165ddf 100644 --- a/docs/readthedocs/models/pv_model.md +++ b/docs/readthedocs/models/pv_model.md @@ -235,7 +235,7 @@ $$ * {cite:cts}`Zheng.2017` p. 53, formula 2.3b * {cite:cts}`Iqbal.1983` * {cite:cts}`Spencer.1971` -* {cite:cts}`Duffie.2013` (the fifth ed. seems to have a typo here) +* {cite:cts}`Duffie.2013` (the fifth ed. seems to have a typo in formula (1.4.1b): factor $0.000719$ is missing a zero) ### Beam Radiation on Sloped Surface From a0676094fc444a8661feed7100ba8b15d7309363 Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Tue, 28 Jan 2025 16:00:58 +0100 Subject: [PATCH 059/102] Fixing math mode subscripts Signed-off-by: Sebastian Peter --- docs/readthedocs/models/pv_model.md | 30 ++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/readthedocs/models/pv_model.md b/docs/readthedocs/models/pv_model.md index 1585165ddf..c28b30c42e 100644 --- a/docs/readthedocs/models/pv_model.md +++ b/docs/readthedocs/models/pv_model.md @@ -198,11 +198,11 @@ $$ Calculating the air mass ratio by dividing the radius of the earth with approx. effective height of the atmosphere (each in kilometer) $$ -airmassratio = (\frac{6371 km}{9 km}) = 707.8\overline{8} +\mathrm{airmassratio} = (\frac{6371 km}{9 km}) = 707.8\overline{8} $$ $$ -airmass = \sqrt{(707.8\overline{8} \cdot \cos({\theta_z}))^2 +2 \cdot 707.8\overline{8} +1)} - 707.8\overline{8} \cdot \cos{(\theta_z)}) +\mathrm{airmass} = \sqrt{(707.8\overline{8} \cdot \cos({\theta_z}))^2 +2 \cdot 707.8\overline{8} +1)} - 707.8\overline{8} \cdot \cos{(\theta_z)}) $$ **References:** @@ -276,7 +276,7 @@ b = (\cos(\phi) \cdot \cos(\delta)) \cdot (\sin(\omega_{2}) - \sin(\omega_{1})) $$ $$ -E_{beam,S} = E_{beam,H} \cdot \frac{a}{b} +E_{\mathrm{beam},S} = E_{\mathrm{beam},H} \cdot \frac{a}{b} $$ **Please note:** $\frac{1}{180}\pi$ is omitted from these formulas, as we are already working with data in *radians*. @@ -288,7 +288,7 @@ $$ **$\omega_1$** = hour angle $\omega$\ **$\omega_2$** = hour angle $\omega$ + 1 hour\ **$\alpha_e$** = surface azimuth angle\ -**$E_{beam,H}$** = beam radiation (horizontal surface) +**$E_{\mathrm{beam},H}$** = beam radiation (horizontal surface) **Reference:** @@ -302,7 +302,7 @@ The diffuse radiation is computed using the Perez model, which divides the radia A cloud index is defined by $$ -\epsilon = \frac{\frac{E_{dif,H} + E_{beam,H}}{E_{dif,H}} + 5.535 \cdot 10^{-6} \cdot \theta_{z}^3}{1 + 5.535 \cdot 10^{-6} \cdot \theta_{z}^3} +\epsilon = \frac{\frac{E_{\mathrm{dif},H} + E_{\mathrm{beam},H}}{E_{\mathrm{dif},H}} + 5.535 \cdot 10^{-6} \cdot \theta_{z}^3}{1 + 5.535 \cdot 10^{-6} \cdot \theta_{z}^3} $$ where the angle $theta_{z}$ is in **degrees**. @@ -310,7 +310,7 @@ where the angle $theta_{z}$ is in **degrees**. Calculating a brightness index $$ -\Delta = m \cdot \frac{E_{dif,H}}{I_{0}} +\Delta = m \cdot \frac{E_{\mathrm{dif},H}}{I_{0}} $$ **Perez Fij coefficients (Myers 2017):** @@ -388,7 +388,7 @@ $$ the diffuse radiation can be calculated: $$ -E_{dif,S} = E_{dif,H} \cdot (\frac{1}{2} \cdot (1 + +E_{\mathrm{dif},S} = E_{\mathrm{dif},H} \cdot (\frac{1}{2} \cdot (1 + cos(\gamma_{e})) \cdot (1- F_{1}) + \frac{a}{b} \cdot F_{1} + F_{2} \cdot \sin(\gamma_{e})) $$ @@ -400,8 +400,8 @@ $$ **$\gamma_{e}$** = slope angle of the surface\ **$I_{0}$** = Extraterrestrial Radiation\ **$m$** = air mass\ -**$E_{beam,H}$** = beam radiation (horizontal surface)\ -**$E_{dif,H}$** = diffuse radiation (horizontal surface) +**$E_{\mathrm{beam},H}$** = beam radiation (horizontal surface)\ +**$E_{\mathrm{dif},H}$** = diffuse radiation (horizontal surface) **References:** @@ -414,12 +414,12 @@ $$ ### Reflected Radiation on Sloped Surface $$ -E_{ref,S} = E_{Ges,H} \cdot \frac{\rho}{2} \cdot (1- +E_{\mathrm{ref},S} = E_{\mathrm{Ges},H} \cdot \frac{\rho}{2} \cdot (1- \cos(\gamma_{e})) $$ *with*\ -**$E_{Ges,H}$** = total horizontal radiation ($E_{beam,H} + E_{dif,H})$\ +**$E_{\mathrm{Ges},H}$** = total horizontal radiation ($E_{\mathrm{beam},H} + E_{\mathrm{dif},H})$\ **$\gamma_e$** = slope angle of the surface\ **$\rho$** = albedo @@ -433,13 +433,13 @@ $$ Received energy is calculated as the sum of all three types of irradiation. $$ -E_{total} = E_{beam,S} + E_{dif,S} + E_{ref,S} +E_{\mathrm{total}} = E_{\mathrm{beam},S} + E_{\mathrm{dif},S} + E_{\mathrm{ref},S} $$ *with*\ -**$E_{beam,S}$** = Beam radiation\ -**$E_{dif,S}$** = Diffuse radiation\ -**$E_{ref,S}$** = Reflected radiation +**$E_{\mathrm{beam},S}$** = Beam radiation\ +**$E_{\mathrm{dif},S}$** = Diffuse radiation\ +**$E_{\mathrm{ref},S}$** = Reflected radiation A generator correction factor (depending on month surface slope $\gamma_{e}$) and a temperature correction factor (depending on month) multiplied on top. From d3f99a2ae6cacc632a3cbcb7d231debd93655421 Mon Sep 17 00:00:00 2001 From: staudtMarius Date: Tue, 28 Jan 2025 16:09:42 +0100 Subject: [PATCH 060/102] Fixed naming of a value in `PowerFlowSupportSpec`. --- .../edu/ie3/simona/agent/grid/PowerFlowSupportSpec.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/scala/edu/ie3/simona/agent/grid/PowerFlowSupportSpec.scala b/src/test/scala/edu/ie3/simona/agent/grid/PowerFlowSupportSpec.scala index 272a1b9d67..d909ec4d61 100644 --- a/src/test/scala/edu/ie3/simona/agent/grid/PowerFlowSupportSpec.scala +++ b/src/test/scala/edu/ie3/simona/agent/grid/PowerFlowSupportSpec.scala @@ -399,7 +399,7 @@ class PowerFlowSupportSpec ) "perform the power flow for the slack grid correctly" in { - val withMvPowerFlowResults: Map[UUID, Dimensionless] = { + val withEhvPowerFlowResults: Map[UUID, Dimensionless] = { val (gridModel, receivedValueStore) = TestData.withEHV val (operationPoint, slackNodeVoltages) = composeOperatingPoint( @@ -452,7 +452,7 @@ class PowerFlowSupportSpec } onlyHvPowerFlowResults.foreach { case (uuid, result) => - withMvPowerFlowResults(uuid) should approximate(result)(tolerance) + withEhvPowerFlowResults(uuid) should approximate(result)(tolerance) } } } From bda5e365d1363258099c015b1bd2dfdc7014bd2b Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Tue, 28 Jan 2025 16:48:28 +0100 Subject: [PATCH 061/102] Adding hints about normal incidence radiation and theta z in deg Signed-off-by: Sebastian Peter --- docs/readthedocs/models/pv_model.md | 5 +++-- .../scala/edu/ie3/simona/model/participant/PvModel.scala | 9 +++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/readthedocs/models/pv_model.md b/docs/readthedocs/models/pv_model.md index c28b30c42e..da64e2067a 100644 --- a/docs/readthedocs/models/pv_model.md +++ b/docs/readthedocs/models/pv_model.md @@ -302,10 +302,10 @@ The diffuse radiation is computed using the Perez model, which divides the radia A cloud index is defined by $$ -\epsilon = \frac{\frac{E_{\mathrm{dif},H} + E_{\mathrm{beam},H}}{E_{\mathrm{dif},H}} + 5.535 \cdot 10^{-6} \cdot \theta_{z}^3}{1 + 5.535 \cdot 10^{-6} \cdot \theta_{z}^3} +\epsilon = \frac{\frac{E_{\mathrm{dif},H} + E_{\mathrm{beam},N}}{E_{\mathrm{dif},H}} + 5.535 \cdot 10^{-6} \cdot \theta_{z}^3}{1 + 5.535 \cdot 10^{-6} \cdot \theta_{z}^3} $$ -where the angle $theta_{z}$ is in **degrees**. +with angle $\theta_z$ values in **degrees** ({cite:cts}`Duffie.2013` p. 94) and $E_{\mathrm{beam},N} = \frac{E_{\mathrm{beam},H}}{\cos (\theta_z)}$ ({cite:cts}`Duffie.2013` p. 95). Calculating a brightness index @@ -401,6 +401,7 @@ $$ **$I_{0}$** = Extraterrestrial Radiation\ **$m$** = air mass\ **$E_{\mathrm{beam},H}$** = beam radiation (horizontal surface)\ +**$E_{\mathrm{beam},N}$** = beam radiation (normal incidence, thus radiation on a plane normal to the direction of the beam)\ **$E_{\mathrm{dif},H}$** = diffuse radiation (horizontal surface) **References:** diff --git a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala index 693099a49a..9642e59262 100644 --- a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala +++ b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala @@ -548,11 +548,16 @@ final case class PvModel private ( val delta = eDifH * airMass / extraterrestrialRadiationI0 // == cloud index epsilon ==// - // if we have no clouds, the epsilon bin is 8, as epsilon bin for an epsilon in [6.2, inf.[ = 8 + // if we have no clouds, the epsilon bin is 8, + // as the epsilon bin for an epsilon in [6.2, inf.[ is 8 var x = 8 if (eDifH.value.doubleValue > 0) { - // if we have diffuse radiation on horizontal surface we have to check if we have another epsilon due to clouds get the epsilon + // if we have diffuse radiation on horizontal surface we have to consider + // the clearness parameter epsilon, which then gives us an epsilon bin x + + // Beam radiation is required on a plane normal to the beam direction (normal incidence), + // thus dividing by cos theta_z var epsilon = ((eDifH + eBeamH / cos(thetaZInRad)) / eDifH + (5.535d * 1.0e-6) * pow( thetaZ.toDegrees, From eeca079dbc3a3801fe3dc6dd755fca616263e603 Mon Sep 17 00:00:00 2001 From: staudtMarius Date: Tue, 28 Jan 2025 16:50:30 +0100 Subject: [PATCH 062/102] fmt --- src/main/scala/edu/ie3/simona/io/grid/GridProvider.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/scala/edu/ie3/simona/io/grid/GridProvider.scala b/src/main/scala/edu/ie3/simona/io/grid/GridProvider.scala index 64815d2f00..8777c1a3e9 100644 --- a/src/main/scala/edu/ie3/simona/io/grid/GridProvider.scala +++ b/src/main/scala/edu/ie3/simona/io/grid/GridProvider.scala @@ -65,7 +65,6 @@ object GridProvider extends LazyLogging { s"The grid has $n slack nodes. This is currently not supported!" ) case 1 => - } jointGridContainer From 8599bdd4f689172f8200608ccdf849e0a4093d1e Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Tue, 28 Jan 2025 16:57:40 +0100 Subject: [PATCH 063/102] fmt Signed-off-by: Sebastian Peter --- .../simona/model/participant/PvModelSpec.scala | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/test/scala/edu/ie3/simona/model/participant/PvModelSpec.scala b/src/test/scala/edu/ie3/simona/model/participant/PvModelSpec.scala index 48ed48af94..c7aef19b1c 100644 --- a/src/test/scala/edu/ie3/simona/model/participant/PvModelSpec.scala +++ b/src/test/scala/edu/ie3/simona/model/participant/PvModelSpec.scala @@ -756,8 +756,9 @@ class PvModelSpec extends UnitSpec with GivenWhenThen with DefaultTestData { } "calculate the estimated diffuse radiation eDifS correctly" in { - def megaJoule2WattHours(megajoule: Double): Double= - {megajoule / (3.6/1000)} + def megaJoule2WattHours(megajoule: Double): Double = { + megajoule / (3.6 / 1000) + } val testCases = Table( ("thetaGDeg", "thetaZDeg", "gammaEDeg", "airMass", "I0", "eDifSSol"), @@ -765,7 +766,14 @@ class PvModelSpec extends UnitSpec with GivenWhenThen with DefaultTestData { // I_0 = 5.025 MJ * 277.778 Wh/MJ = 1395.83445 Wh // eDifSSol is 0.79607 MJ (0.444 + 0.348 + 0.003) if one only calculates the relevant terms // from I_T on p. 96, but Duffie uses fixed f values, so the inaccuracy is fine (approx. 4.5 Wh/m^2 or 0.016 MJ/m^2) - (37.0d, 62.2d, 60d, 2.144d, megaJoule2WattHours(5.025), megaJoule2WattHours(0.812140993078191252)), + ( + 37.0d, + 62.2d, + 60d, + 2.144d, + megaJoule2WattHours(5.025), + megaJoule2WattHours(0.812140993078191252), + ), ) forAll(testCases) { @@ -776,7 +784,8 @@ class PvModelSpec extends UnitSpec with GivenWhenThen with DefaultTestData { val eBeamH = megaJoule2WattHours(0.244) // 0.244 MJ/m^2 = 67.777778 Wh/m^2 // Diffuse Radiation on a horizontal surface - val eDifH = megaJoule2WattHours(0.796) // 0.796 MJ/m^2 = 221.111111 Wh/m^2 + val eDifH = + megaJoule2WattHours(0.796) // 0.796 MJ/m^2 = 221.111111 Wh/m^2 When("the diffuse radiation is calculated") val eDifSCalc = pvModel.calcDiffuseRadiationOnSlopedSurfacePerez( From b8911e5444dadfeae74fdbb5217acf9521be1aaf Mon Sep 17 00:00:00 2001 From: pierrepetersmeier <155652256+pierrepetersmeier@users.noreply.github.com> Date: Tue, 28 Jan 2025 17:14:47 +0100 Subject: [PATCH 064/102] Rewrote PvModelIT from groovy to scala --- .../{PvModelIT.scala => PvModelITSpec.scala} | 2 +- .../test/common/input/NodeInputTestData.scala | 38 +++++++++---------- .../test/common/input/PvInputTestData.scala | 32 ++++++++-------- 3 files changed, 36 insertions(+), 36 deletions(-) rename src/test/scala/edu/ie3/simona/model/participant/{PvModelIT.scala => PvModelITSpec.scala} (95%) diff --git a/src/test/scala/edu/ie3/simona/model/participant/PvModelIT.scala b/src/test/scala/edu/ie3/simona/model/participant/PvModelITSpec.scala similarity index 95% rename from src/test/scala/edu/ie3/simona/model/participant/PvModelIT.scala rename to src/test/scala/edu/ie3/simona/model/participant/PvModelITSpec.scala index 0ec489636a..128405ff80 100644 --- a/src/test/scala/edu/ie3/simona/model/participant/PvModelIT.scala +++ b/src/test/scala/edu/ie3/simona/model/participant/PvModelITSpec.scala @@ -14,7 +14,7 @@ import squants.Each * model works as expected. It uses 8 pv models located in GER. */ -class PvModelIT extends Matchers with UnitSpec with PvModelITHelper { +class PvModelITSpec extends Matchers with UnitSpec with PvModelITHelper { "The photovoltaic model" should { "match the expected results for all 8 PV panels over the whole year" in { diff --git a/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala b/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala index 787a3ba055..a6dd143d5f 100644 --- a/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala +++ b/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala @@ -102,7 +102,7 @@ trait NodeInputTestData extends DefaultTestData { // PvModelITSpec node input models val geometryFactory = new GeometryFactory() - val p1: Point = geometryFactory.createPoint(new Coordinate(53.9209, 10.3837)) + val p1: Point = geometryFactory.createPoint(new Coordinate(10.3837, 53.9209)) protected val nodeInputPvModel1 = new NodeInput( UUID.fromString("19a4861e-cbf5-4dcc-bc1d-98611fda6eb5"), @@ -110,74 +110,74 @@ trait NodeInputTestData extends DefaultTestData { OperatorInput.NO_OPERATOR_ASSIGNED, defaultOperationTime, Quantities.getQuantity(1.0, PU), - false, + true, p1, GermanVoltageLevelUtils.MV_10KV, - -1, + 3, ) - val p2: Point = geometryFactory.createPoint(new Coordinate(52.3393, 9.7342)) + val p2: Point = geometryFactory.createPoint(new Coordinate(9.7342, 52.3393)) protected val nodeInputPvModel2 = new NodeInput( UUID.fromString("9a2524f1-3639-4e90-a547-81a259712f8c"), "pvModelNode2", OperatorInput.NO_OPERATOR_ASSIGNED, defaultOperationTime, Quantities.getQuantity(1d, PU), - false, + true, p2, GermanVoltageLevelUtils.MV_10KV, - -1, + 2, ) - val p3: Point = geometryFactory.createPoint(new Coordinate(52.1861, 10.1991)) + val p3: Point = geometryFactory.createPoint(new Coordinate(10.1991, 52.1861)) protected val nodeInputPvModel3 = new NodeInput( UUID.fromString("022a94c6-2d60-4400-875c-ab9db1ae2736"), "pvModelNode3", OperatorInput.NO_OPERATOR_ASSIGNED, defaultOperationTime, Quantities.getQuantity(1d, PU), - false, + true, p3, GermanVoltageLevelUtils.MV_10KV, - -1, + 1, ) - val p4: Point = geometryFactory.createPoint(new Coordinate(53.6567, 10.8245)) + val p4: Point = geometryFactory.createPoint(new Coordinate(10.8245, 53.6567)) protected val nodeInputPvModel4 = new NodeInput( UUID.fromString("9354b02c-a4a9-4e9d-905a-e48110b04d88"), "pvModelNode4", OperatorInput.NO_OPERATOR_ASSIGNED, defaultOperationTime, Quantities.getQuantity(1d, PU), - false, + true, p4, GermanVoltageLevelUtils.MV_10KV, - -1, + 4, ) - val p5: Point = geometryFactory.createPoint(new Coordinate(51.9644, 10.0134)) + val p5: Point = geometryFactory.createPoint(new Coordinate(10.0134, 51.9644)) protected val nodeInputPvModel5: NodeInput = new NodeInput( UUID.fromString("393eb0e3-7873-4d51-a830-2f1d98ff5a60"), "pvModelNode5", OperatorInput.NO_OPERATOR_ASSIGNED, defaultOperationTime, Quantities.getQuantity(1d, PU), - false, + true, p5, GermanVoltageLevelUtils.MV_10KV, - -1, + 16, ) - val p6: Point = geometryFactory.createPoint(new Coordinate(53.6454, 10.4729)) + val p6: Point = geometryFactory.createPoint(new Coordinate(10.4729, 53.6454)) protected val nodeInputPvModel6 = new NodeInput( UUID.fromString("7607ca0b-959f-48b2-9c5c-1cf7c4ce0dc0"), "pvModelNode6", OperatorInput.NO_OPERATOR_ASSIGNED, defaultOperationTime, Quantities.getQuantity(1d, PU), - false, + true, p6, GermanVoltageLevelUtils.MV_10KV, - -1, + 17, ) -} +} \ No newline at end of file diff --git a/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala b/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala index 0c164671d8..2875aa0ac5 100644 --- a/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala +++ b/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala @@ -63,13 +63,13 @@ trait PvInputTestData nodeInputPvModel3, CosPhiFixed.CONSTANT_CHARACTERISTIC, null, - 0.9, + 0.2, Quantities.getQuantity(16.09490984119475, StandardUnits.AZIMUTH), Quantities.getQuantity(91.23978812713176, StandardUnits.EFFICIENCY), Quantities .getQuantity(51.75144341774285, StandardUnits.SOLAR_ELEVATION_ANGLE), 100, - 0.95, + 0.9, false, Quantities.getQuantity(100, StandardUnits.S_RATED), 0.95, @@ -83,13 +83,13 @@ trait PvInputTestData nodeInputPvModel2, CosPhiFixed.CONSTANT_CHARACTERISTIC, null, - 0.9, + 0.2, Quantities.getQuantity(-11.883286549709737, StandardUnits.AZIMUTH), Quantities.getQuantity(93.55452200165019, StandardUnits.EFFICIENCY), Quantities .getQuantity(50.710754711180925, StandardUnits.SOLAR_ELEVATION_ANGLE), 100, - 0.95, + 0.9, false, Quantities.getQuantity(100, StandardUnits.S_RATED), 0.95, @@ -103,13 +103,13 @@ trait PvInputTestData nodeInputPvModel4, CosPhiFixed.CONSTANT_CHARACTERISTIC, null, - 0.9, + 0.2, Quantities.getQuantity(-3.6445723846554756, StandardUnits.AZIMUTH), Quantities.getQuantity(90.07983175106347, StandardUnits.EFFICIENCY), Quantities .getQuantity(50.727743320167065, StandardUnits.SOLAR_ELEVATION_ANGLE), 100, - 0.95, + 0.9, false, Quantities.getQuantity(100, StandardUnits.S_RATED), 0.95, @@ -123,13 +123,13 @@ trait PvInputTestData nodeInputPvModel6, CosPhiFixed.CONSTANT_CHARACTERISTIC, null, - 0.9, + 0.2, Quantities.getQuantity(-16.249216510914266, StandardUnits.AZIMUTH), Quantities.getQuantity(90.57719040894882, StandardUnits.EFFICIENCY), Quantities .getQuantity(53.588559702038765, StandardUnits.SOLAR_ELEVATION_ANGLE), 100, - 0.95, + 0.9, false, Quantities.getQuantity(100, StandardUnits.S_RATED), 0.95, @@ -143,13 +143,13 @@ trait PvInputTestData nodeInputPvModel5, CosPhiFixed.CONSTANT_CHARACTERISTIC, null, - 0.9, + 0.2, Quantities.getQuantity(-32.24606798030436, StandardUnits.AZIMUTH), Quantities.getQuantity(90.48722543753683, StandardUnits.EFFICIENCY), Quantities .getQuantity(48.813238479197025, StandardUnits.SOLAR_ELEVATION_ANGLE), 100, - 0.95, + 0.9, false, Quantities.getQuantity(100, StandardUnits.S_RATED), 0.95, @@ -163,13 +163,13 @@ trait PvInputTestData nodeInputPvModel1, CosPhiFixed.CONSTANT_CHARACTERISTIC, null, - 0.9, + 0.2, Quantities.getQuantity(-54.537164978682995, StandardUnits.AZIMUTH), Quantities.getQuantity(94.0201214211993, StandardUnits.EFFICIENCY), Quantities .getQuantity(43.081511203199625, StandardUnits.SOLAR_ELEVATION_ANGLE), 100, - 0.95, + 0.9, false, Quantities.getQuantity(100, StandardUnits.S_RATED), 0.95, @@ -183,13 +183,13 @@ trait PvInputTestData nodeInputPvModel2, CosPhiFixed.CONSTANT_CHARACTERISTIC, null, - 0.9, + 0.2, Quantities.getQuantity(64.42003592383116, StandardUnits.AZIMUTH), Quantities.getQuantity(90.72157185757533, StandardUnits.EFFICIENCY), Quantities .getQuantity(54.5845761615783, StandardUnits.SOLAR_ELEVATION_ANGLE), 100, - 0.95, + 0.9, false, Quantities.getQuantity(100, StandardUnits.S_RATED), 0.95, @@ -203,13 +203,13 @@ trait PvInputTestData nodeInputPvModel4, CosPhiFixed.CONSTANT_CHARACTERISTIC, null, - 0.9, + 0.2, Quantities.getQuantity(41.11365003045648, StandardUnits.AZIMUTH), Quantities.getQuantity(90.21663937252015, StandardUnits.EFFICIENCY), Quantities .getQuantity(52.37527455203235, StandardUnits.SOLAR_ELEVATION_ANGLE), 100, - 0.95, + 0.9, false, Quantities.getQuantity(100, StandardUnits.S_RATED), 0.95, From 06e79d53ad3248b2302656af9ef838e65071b8fa Mon Sep 17 00:00:00 2001 From: pierrepetersmeier <155652256+pierrepetersmeier@users.noreply.github.com> Date: Tue, 28 Jan 2025 17:22:37 +0100 Subject: [PATCH 065/102] fmt --- .../edu/ie3/simona/test/common/input/NodeInputTestData.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala b/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala index a6dd143d5f..0dc302be94 100644 --- a/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala +++ b/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala @@ -180,4 +180,4 @@ trait NodeInputTestData extends DefaultTestData { GermanVoltageLevelUtils.MV_10KV, 17, ) -} \ No newline at end of file +} From 6a0934ca227bf05d1c1d7e253b503a54984a3682 Mon Sep 17 00:00:00 2001 From: pierrepetersmeier <155652256+pierrepetersmeier@users.noreply.github.com> Date: Tue, 28 Jan 2025 17:52:49 +0100 Subject: [PATCH 066/102] Fix Sonarqube fail without GroovyTest. --- src/test/groovy/PvModelIT.groovy | 224 +++++++++++++++++++++++++++++++ 1 file changed, 224 insertions(+) create mode 100644 src/test/groovy/PvModelIT.groovy diff --git a/src/test/groovy/PvModelIT.groovy b/src/test/groovy/PvModelIT.groovy new file mode 100644 index 0000000000..b9b3c8921e --- /dev/null +++ b/src/test/groovy/PvModelIT.groovy @@ -0,0 +1,224 @@ +/* + * © 2020. TU Dortmund University, + * Institute of Energy Systems, Energy Efficiency and Energy Economics, + * Research group Distribution grid planning and operation + */ + + + +import edu.ie3.datamodel.io.source.csv.CsvJointGridContainerSource +import edu.ie3.datamodel.models.input.system.PvInput +import edu.ie3.simona.model.participant.PvModel +import edu.ie3.simona.ontology.messages.services.WeatherMessage +import edu.ie3.util.TimeUtil +import edu.ie3.util.scala.quantities.Sq +import edu.ie3.util.scala.quantities.WattsPerSquareMeter$ +import org.apache.commons.csv.CSVFormat +import org.apache.commons.csv.CSVRecord +import spock.lang.Shared +import spock.lang.Specification +import squants.Dimensionless +import squants.Each$ +import squants.energy.Megawatts$ +import squants.energy.Power +import squants.motion.MetersPerSecond$ +import squants.thermal.Kelvin$ + +import java.nio.file.Path +import java.time.ZonedDateTime +import java.util.zip.GZIPInputStream + +import static java.util.Locale.US +import static java.util.Locale.setDefault + +/** + * A simple integration test that uses pre-calculated data to check if the pv model works as expected. + * It uses 8 pv models located in GER. + * + */ +class PvModelIT extends Specification implements PvModelITHelperDummy { + + @Shared + Map pvModels + + @Shared + Map> weatherMap + + @Shared + Map> resultsMap + + + def setupSpec() { + // input weather data values are in us format + // if locale is not set hard coded to US, quantity parsing will return invalid values + setDefault(US) + + pvModels = createPvModels() + weatherMap = weatherData + resultsMap = resultsData + } + + def "8 pv panels full year test"() { + + given: "an empty array to collect the results" + ArrayList testRes = new ArrayList<>() + + when: "we calculate the photovoltaic in-feed for each unit for the whole year" + List modelIds = new ArrayList<>(pvModels.keySet()) + // sort models: east, south, west + Collections.sort(modelIds) + final int modelCount = modelIds.size() + + // sort, in case dates & times have not been sorted before + List keyList = new ArrayList<>(weatherMap.keySet()) + Collections.sort(keyList) + + for (ZonedDateTime dateTime : keyList) { + + Map modelToWeatherMap = weatherMap.get(dateTime) + + String[] row = new String[2*modelCount+1] + row[0] = dateTime.toString() + + int modelI = 0 + for (String modelId : modelIds) { + PvModel model = pvModels.get(modelId) + + "build the needed data" + WeatherMessage.WeatherData weather = modelToWeatherMap.get(modelId) + PvModel.PvRelevantData neededData = new PvModel.PvRelevantData( + dateTime, + 3600L, + weather.diffIrr(), + weather.dirIrr() + ) + Dimensionless voltage = Sq.create(1.414213562d, Each$.MODULE$) + + "collect the results and calculate the difference between the provided results and the calculated ones" + double calc = model.calculatePower(0L, voltage, ModelState.ConstantState$.MODULE$, neededData).p().toMegawatts() + double sol = resultsMap.get(dateTime).get(modelId).toMegawatts() + + testRes.add(Math.abs(calc - sol)) + + row[1 + modelI] = calc.toString() + row[1 + modelCount + modelI] = sol.toString() + + modelI++ + } + } + + then: "we expect the calculated result to be quasi equal the provided results data" + testRes.every { + (it < 0.00000000000001) // floating point operation + } + } +} + +trait PvModelITHelperDummy { + private static final CSV_FORMAT = CSVFormat.DEFAULT.builder().setHeader().build() + + Iterable getCsvRecords(String fileName) { + def resultsInputData = new File(this.getClass().getResource(fileName).file) + def fileStream = new FileInputStream(resultsInputData) + def gzipStream = new GZIPInputStream(fileStream) + def decoder = new InputStreamReader(gzipStream, "UTF-8") + def br = new BufferedReader(decoder) + return CSV_FORMAT.parse(br) + } + + Map createPvModels() { + "load the grid input data from the corresponding resources folder" + + def csvGridSource = CsvJointGridContainerSource.read("it_grid", ";", + Path.of(this.getClass().getResource("_pv/it/grid_data").toURI()), false) + + def simulationStartDate = TimeUtil.withDefaults.toZonedDateTime("2011-01-01T00:00:00Z") + def simulationEndDate = TimeUtil.withDefaults.toZonedDateTime("2012-01-01T00:00:00Z") + + Map pvModels = new HashMap<>() + for (PvInput inputModel : csvGridSource.systemParticipants.pvPlants) { + PvModel model = PvModel.apply( + inputModel, + 1d, + simulationStartDate, + simulationEndDate + ) + + pvModels.put(inputModel.getId(), model) + } + + return pvModels + } + + Map> getWeatherData() { + "read the weather data from the provided weather data file" + final String fileName = "_pv/it/weather.tar.gz" + final def csvRecords = getCsvRecords(fileName) + + Map> weatherMap = new HashMap<>() + for (row in csvRecords) { + ZonedDateTime time = TimeUtil.withDefaults.toZonedDateTime(row.get(0)) + Map modelToWeatherMap + if (weatherMap.containsKey(time)) { + modelToWeatherMap = weatherMap.get(time) + } + + if (modelToWeatherMap == null) { + modelToWeatherMap = new HashMap() + weatherMap.put(time, modelToWeatherMap) + } + + String modelId = row.get(1) + + double temp = 0 + double windVel = 0 + + WeatherMessage.WeatherData weather = new WeatherMessage.WeatherData( + Sq.create(row.get(22).replace("Wh/m²", "").toDouble(), WattsPerSquareMeter$.MODULE$), + Sq.create(row.get(21).replace("Wh/m²", "").toDouble(), WattsPerSquareMeter$.MODULE$), + Sq.create(temp, Kelvin$.MODULE$), + Sq.create(windVel, MetersPerSecond$.MODULE$)) + + modelToWeatherMap.put(modelId, weather) + } + + return weatherMap + } + + Map> getResultsData() { + "read the results data from the provided file" + final String fileName = "_pv/it/results2.tar.gz" + def csvRecords = getCsvRecords(fileName) + + // we skip the first line and use hardcoded headers, because the first line is garbled + String[] headers = [ + "Datetime", + "pv_east_1", + "pv_east_2", + "pv_south_1", + "pv_south_2", + "pv_south_3", + "pv_south_4", + "pv_west_1", + "pv_west_2" + ] + + Map> resultsMap = new HashMap<>() + for(row in csvRecords) { + // last line is trash + if (row.get(0).startsWith('\u0000')) + break + + ZonedDateTime time = TimeUtil.withDefaults.toZonedDateTime(row.get(0)) + Map modelToPowerMap = new HashMap<>() + for (int i = 1; i < headers.length; i++) { + String modelId = headers[i] + String rawValue = row[i] + Power power = Sq.create(Double.parseDouble(rawValue), Megawatts$.MODULE$) + modelToPowerMap.put(modelId, power) + } + resultsMap.put(time, modelToPowerMap) + } + return resultsMap + } +} \ No newline at end of file From 770813cc813b0933b9c90088fe479ea097255675 Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Tue, 28 Jan 2025 17:53:21 +0100 Subject: [PATCH 067/102] Getting rid of var and Java code Signed-off-by: Sebastian Peter --- .../simona/model/participant/PvModel.scala | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala index 9642e59262..c66209437c 100644 --- a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala +++ b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala @@ -548,11 +548,7 @@ final case class PvModel private ( val delta = eDifH * airMass / extraterrestrialRadiationI0 // == cloud index epsilon ==// - // if we have no clouds, the epsilon bin is 8, - // as the epsilon bin for an epsilon in [6.2, inf.[ is 8 - var x = 8 - - if (eDifH.value.doubleValue > 0) { + val x = if (eDifH.value.doubleValue > 0) { // if we have diffuse radiation on horizontal surface we have to consider // the clearness parameter epsilon, which then gives us an epsilon bin x @@ -584,17 +580,23 @@ final case class PvModel private ( // get the corresponding bin val finalEpsilon = epsilon - x = IntStream - .range(0, discreteSkyClearnessCategories.length) - .filter((i: Int) => + discreteSkyClearnessCategories.indices + .find { i => (finalEpsilon - discreteSkyClearnessCategories(i)(0) >= 0) && - (finalEpsilon - - discreteSkyClearnessCategories(i)(1) < 0) - ) - .findFirst - .getAsInt + 1 + (finalEpsilon - + discreteSkyClearnessCategories(i)(1) < 0) + } + .map(_ + 1) + .getOrElse(8) + } else { + // epsilon in [6.2, inf.[ + 8 } + } else { + // if we have no clouds, the epsilon bin is 8, + // as the epsilon bin for an epsilon in [6.2, inf.[ is 8 + 8 } // calculate the f_ij components based on the epsilon bin From 1f02a3c9a61d489de7b72eb8538578b92b2e15e7 Mon Sep 17 00:00:00 2001 From: pierrepetersmeier <155652256+pierrepetersmeier@users.noreply.github.com> Date: Tue, 28 Jan 2025 18:00:57 +0100 Subject: [PATCH 068/102] Sonarqube --- src/test/groovy/PvModelIT.groovy | 224 ------------------------------- 1 file changed, 224 deletions(-) delete mode 100644 src/test/groovy/PvModelIT.groovy diff --git a/src/test/groovy/PvModelIT.groovy b/src/test/groovy/PvModelIT.groovy deleted file mode 100644 index b9b3c8921e..0000000000 --- a/src/test/groovy/PvModelIT.groovy +++ /dev/null @@ -1,224 +0,0 @@ -/* - * © 2020. TU Dortmund University, - * Institute of Energy Systems, Energy Efficiency and Energy Economics, - * Research group Distribution grid planning and operation - */ - - - -import edu.ie3.datamodel.io.source.csv.CsvJointGridContainerSource -import edu.ie3.datamodel.models.input.system.PvInput -import edu.ie3.simona.model.participant.PvModel -import edu.ie3.simona.ontology.messages.services.WeatherMessage -import edu.ie3.util.TimeUtil -import edu.ie3.util.scala.quantities.Sq -import edu.ie3.util.scala.quantities.WattsPerSquareMeter$ -import org.apache.commons.csv.CSVFormat -import org.apache.commons.csv.CSVRecord -import spock.lang.Shared -import spock.lang.Specification -import squants.Dimensionless -import squants.Each$ -import squants.energy.Megawatts$ -import squants.energy.Power -import squants.motion.MetersPerSecond$ -import squants.thermal.Kelvin$ - -import java.nio.file.Path -import java.time.ZonedDateTime -import java.util.zip.GZIPInputStream - -import static java.util.Locale.US -import static java.util.Locale.setDefault - -/** - * A simple integration test that uses pre-calculated data to check if the pv model works as expected. - * It uses 8 pv models located in GER. - * - */ -class PvModelIT extends Specification implements PvModelITHelperDummy { - - @Shared - Map pvModels - - @Shared - Map> weatherMap - - @Shared - Map> resultsMap - - - def setupSpec() { - // input weather data values are in us format - // if locale is not set hard coded to US, quantity parsing will return invalid values - setDefault(US) - - pvModels = createPvModels() - weatherMap = weatherData - resultsMap = resultsData - } - - def "8 pv panels full year test"() { - - given: "an empty array to collect the results" - ArrayList testRes = new ArrayList<>() - - when: "we calculate the photovoltaic in-feed for each unit for the whole year" - List modelIds = new ArrayList<>(pvModels.keySet()) - // sort models: east, south, west - Collections.sort(modelIds) - final int modelCount = modelIds.size() - - // sort, in case dates & times have not been sorted before - List keyList = new ArrayList<>(weatherMap.keySet()) - Collections.sort(keyList) - - for (ZonedDateTime dateTime : keyList) { - - Map modelToWeatherMap = weatherMap.get(dateTime) - - String[] row = new String[2*modelCount+1] - row[0] = dateTime.toString() - - int modelI = 0 - for (String modelId : modelIds) { - PvModel model = pvModels.get(modelId) - - "build the needed data" - WeatherMessage.WeatherData weather = modelToWeatherMap.get(modelId) - PvModel.PvRelevantData neededData = new PvModel.PvRelevantData( - dateTime, - 3600L, - weather.diffIrr(), - weather.dirIrr() - ) - Dimensionless voltage = Sq.create(1.414213562d, Each$.MODULE$) - - "collect the results and calculate the difference between the provided results and the calculated ones" - double calc = model.calculatePower(0L, voltage, ModelState.ConstantState$.MODULE$, neededData).p().toMegawatts() - double sol = resultsMap.get(dateTime).get(modelId).toMegawatts() - - testRes.add(Math.abs(calc - sol)) - - row[1 + modelI] = calc.toString() - row[1 + modelCount + modelI] = sol.toString() - - modelI++ - } - } - - then: "we expect the calculated result to be quasi equal the provided results data" - testRes.every { - (it < 0.00000000000001) // floating point operation - } - } -} - -trait PvModelITHelperDummy { - private static final CSV_FORMAT = CSVFormat.DEFAULT.builder().setHeader().build() - - Iterable getCsvRecords(String fileName) { - def resultsInputData = new File(this.getClass().getResource(fileName).file) - def fileStream = new FileInputStream(resultsInputData) - def gzipStream = new GZIPInputStream(fileStream) - def decoder = new InputStreamReader(gzipStream, "UTF-8") - def br = new BufferedReader(decoder) - return CSV_FORMAT.parse(br) - } - - Map createPvModels() { - "load the grid input data from the corresponding resources folder" - - def csvGridSource = CsvJointGridContainerSource.read("it_grid", ";", - Path.of(this.getClass().getResource("_pv/it/grid_data").toURI()), false) - - def simulationStartDate = TimeUtil.withDefaults.toZonedDateTime("2011-01-01T00:00:00Z") - def simulationEndDate = TimeUtil.withDefaults.toZonedDateTime("2012-01-01T00:00:00Z") - - Map pvModels = new HashMap<>() - for (PvInput inputModel : csvGridSource.systemParticipants.pvPlants) { - PvModel model = PvModel.apply( - inputModel, - 1d, - simulationStartDate, - simulationEndDate - ) - - pvModels.put(inputModel.getId(), model) - } - - return pvModels - } - - Map> getWeatherData() { - "read the weather data from the provided weather data file" - final String fileName = "_pv/it/weather.tar.gz" - final def csvRecords = getCsvRecords(fileName) - - Map> weatherMap = new HashMap<>() - for (row in csvRecords) { - ZonedDateTime time = TimeUtil.withDefaults.toZonedDateTime(row.get(0)) - Map modelToWeatherMap - if (weatherMap.containsKey(time)) { - modelToWeatherMap = weatherMap.get(time) - } - - if (modelToWeatherMap == null) { - modelToWeatherMap = new HashMap() - weatherMap.put(time, modelToWeatherMap) - } - - String modelId = row.get(1) - - double temp = 0 - double windVel = 0 - - WeatherMessage.WeatherData weather = new WeatherMessage.WeatherData( - Sq.create(row.get(22).replace("Wh/m²", "").toDouble(), WattsPerSquareMeter$.MODULE$), - Sq.create(row.get(21).replace("Wh/m²", "").toDouble(), WattsPerSquareMeter$.MODULE$), - Sq.create(temp, Kelvin$.MODULE$), - Sq.create(windVel, MetersPerSecond$.MODULE$)) - - modelToWeatherMap.put(modelId, weather) - } - - return weatherMap - } - - Map> getResultsData() { - "read the results data from the provided file" - final String fileName = "_pv/it/results2.tar.gz" - def csvRecords = getCsvRecords(fileName) - - // we skip the first line and use hardcoded headers, because the first line is garbled - String[] headers = [ - "Datetime", - "pv_east_1", - "pv_east_2", - "pv_south_1", - "pv_south_2", - "pv_south_3", - "pv_south_4", - "pv_west_1", - "pv_west_2" - ] - - Map> resultsMap = new HashMap<>() - for(row in csvRecords) { - // last line is trash - if (row.get(0).startsWith('\u0000')) - break - - ZonedDateTime time = TimeUtil.withDefaults.toZonedDateTime(row.get(0)) - Map modelToPowerMap = new HashMap<>() - for (int i = 1; i < headers.length; i++) { - String modelId = headers[i] - String rawValue = row[i] - Power power = Sq.create(Double.parseDouble(rawValue), Megawatts$.MODULE$) - modelToPowerMap.put(modelId, power) - } - resultsMap.put(time, modelToPowerMap) - } - return resultsMap - } -} \ No newline at end of file From 29484a2d9770f732af90b3d6ba4fe191aa35c2e5 Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Tue, 28 Jan 2025 18:03:08 +0100 Subject: [PATCH 069/102] Unused import Signed-off-by: Sebastian Peter --- src/main/scala/edu/ie3/simona/model/participant/PvModel.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala index c66209437c..98f2162ed2 100644 --- a/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala +++ b/src/main/scala/edu/ie3/simona/model/participant/PvModel.scala @@ -24,7 +24,6 @@ import tech.units.indriya.unit.Units._ import java.time.ZonedDateTime import java.util.UUID -import java.util.stream.IntStream import scala.math._ final case class PvModel private ( From 3ed24e2b33d74cb4ce90ec964c4b2f2734d62d67 Mon Sep 17 00:00:00 2001 From: pierrepetersmeier <155652256+pierrepetersmeier@users.noreply.github.com> Date: Tue, 28 Jan 2025 18:25:18 +0100 Subject: [PATCH 070/102] Delete Groovy from Sonarqube,Spotless and build.gradle --- build.gradle | 2 -- gradle/scripts/sonarqube.gradle | 6 +----- gradle/scripts/spotless.gradle | 16 ---------------- src/test/resources/SpockConfig.groovy | 12 ------------ 4 files changed, 1 insertion(+), 35 deletions(-) delete mode 100644 src/test/resources/SpockConfig.groovy diff --git a/build.gradle b/build.gradle index eac1fda18e..76511396e5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,6 @@ import com.github.jengelman.gradle.plugins.shadow.transformers.AppendingTransformer plugins { - id 'groovy' // groovy support id 'java' // java support id 'scala' // scala support id 'signing' @@ -100,7 +99,6 @@ dependencies { implementation "ch.qos.logback:logback-classic:1.5.16" /* testing */ - testImplementation 'org.spockframework:spock-core:2.3-groovy-4.0' testImplementation 'org.scalatestplus:mockito-3-4_2.13:3.2.10.0' testImplementation 'org.mockito:mockito-core:5.15.2' // mocking framework testImplementation "org.scalatest:scalatest_${scalaVersion}:3.2.19" diff --git a/gradle/scripts/sonarqube.gradle b/gradle/scripts/sonarqube.gradle index 501bbbdc72..78eb4a5284 100644 --- a/gradle/scripts/sonarqube.gradle +++ b/gradle/scripts/sonarqube.gradle @@ -10,8 +10,7 @@ sonarqube { 'src/main/scala'] // src dirs property "sonar.tests", [ 'src/test/resources', - 'src/test/scala', - 'src/test/groovy'] // test src dirs + 'src/test/scala',] // test src dirs // reports stuff (for all languages) property 'sonar.junit.reportPaths', [ 'build/test-results/test'] // Comma-delimited list of paths to Surefire XML-format reports. @@ -23,9 +22,6 @@ sonarqube { // scala specific stuff property 'sonar.scala.coverage.reportPaths', 'build/reports/scoverageTest/scoverage.xml' - // groovy specific stuff - property 'sonar.groovy.binaries', 'build/classes/groovy' // groovy binaries - // remove auto generated SimonaConfig file from analysis property 'sonar.exclusions', [ "src/main/scala/edu/ie3/simona/config/SimonaConfig.scala" diff --git a/gradle/scripts/spotless.gradle b/gradle/scripts/spotless.gradle index f127f2bdd5..970b0a5d13 100644 --- a/gradle/scripts/spotless.gradle +++ b/gradle/scripts/spotless.gradle @@ -14,22 +14,6 @@ spotless { licenseHeader ie3LicHead } - /* cf. https://github.com/diffplug/spotless/tree/master/plugin-gradle */ - groovy { - licenseHeader ie3LicHead - // the Groovy Eclipse formatter extends the Java Eclipse formatter, - // so it formats Java files by default (unless `excludeJava` is used). - greclipse().configFile('greclipse.properties') - indentWithSpaces 2 - } - - groovyGradle { - // same as groovy, but for .gradle (defaults to '*.gradle') - target '*.gradle', 'gradle/scripts/*.gradle' - greclipse() - indentWithSpaces 2 - } - //sets a license header, removes unused imports and formats conforming to the scala fmt formatter scala { scalafmt().configFile(".scalafmt.conf") diff --git a/src/test/resources/SpockConfig.groovy b/src/test/resources/SpockConfig.groovy deleted file mode 100644 index 235e0d1d60..0000000000 --- a/src/test/resources/SpockConfig.groovy +++ /dev/null @@ -1,12 +0,0 @@ -import spock.lang.Specification - -//improved logging for Spock tests, see https://github.com/spockframework/spock/issues/538#issuecomment-285936181 for details - -class LabelPrinter { - def _(def message) { - println message - true - } -} - -Specification.mixin LabelPrinter \ No newline at end of file From 4211f6c5a5b5896f5a5b8ae4e92bf666b0615e19 Mon Sep 17 00:00:00 2001 From: pierrepetersmeier <155652256+pierrepetersmeier@users.noreply.github.com> Date: Tue, 28 Jan 2025 18:37:17 +0100 Subject: [PATCH 071/102] Delete TestInputData for PvModelIT.groovy. --- .../model/participant/_pv/it/grid_data/node_input.csv | 7 ------- .../model/participant/_pv/it/grid_data/pv_input.csv | 9 --------- 2 files changed, 16 deletions(-) delete mode 100644 src/test/resources/edu/ie3/simona/model/participant/_pv/it/grid_data/node_input.csv delete mode 100644 src/test/resources/edu/ie3/simona/model/participant/_pv/it/grid_data/pv_input.csv diff --git a/src/test/resources/edu/ie3/simona/model/participant/_pv/it/grid_data/node_input.csv b/src/test/resources/edu/ie3/simona/model/participant/_pv/it/grid_data/node_input.csv deleted file mode 100644 index 8697beaa6f..0000000000 --- a/src/test/resources/edu/ie3/simona/model/participant/_pv/it/grid_data/node_input.csv +++ /dev/null @@ -1,7 +0,0 @@ -"uuid";"geo_position";"id";"slack";"operates_from";"operates_until";"subnet";"v_rated";"v_target";"volt_lvl";"operator" -19a4861e-cbf5-4dcc-bc1d-98611fda6eb5;{"type":"Point","coordinates":[10.3837,53.9209],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}};luebeck_1;true;;;3;10;1;MV; -9a2524f1-3639-4e90-a547-81a259712f8c;{"type":"Point","coordinates":[9.7342,52.3393],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}};hannover_2;true;;;2;10;1;MV; -022a94c6-2d60-4400-875c-ab9db1ae2736;{"type":"Point","coordinates":[10.1991,52.1861],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}};hannover_1;true;;;1;10;1;MV; -9354b02c-a4a9-4e9d-905a-e48110b04d88;{"type":"Point","coordinates":[10.8245,53.6567],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}};luebeck_2;true;;;4;10;1;MV; -393eb0e3-7873-4d51-a830-2f1d98ff5a60;{"type":"Point","coordinates":[10.0134,51.9644],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}};hannover_3;true;;;16;10;1;MV; -7607ca0b-959f-48b2-9c5c-1cf7c4ce0dc0;{"type":"Point","coordinates":[10.4729,53.6454],"crs":{"type":"name","properties":{"name":"EPSG:4326"}}};luebeck_3;true;;;17;10;1;MV; diff --git a/src/test/resources/edu/ie3/simona/model/participant/_pv/it/grid_data/pv_input.csv b/src/test/resources/edu/ie3/simona/model/participant/_pv/it/grid_data/pv_input.csv deleted file mode 100644 index b4ff778eaf..0000000000 --- a/src/test/resources/edu/ie3/simona/model/participant/_pv/it/grid_data/pv_input.csv +++ /dev/null @@ -1,9 +0,0 @@ -"uuid";"albedo";"azimuth";"cosphi_rated";"eta_conv";"elevation_angle";"id";"k_g";"k_t";"market_reaction";"operates_from";"operates_until";"s_rated";"q_characteristics";"node";"operator" -7ac5bb15-36ee-42b0-902b-9cd520e241b3;0.2;16.09490984119475;0.95;91.23978812713176;51.75144341774285;pv_south_1;0.9;1;false;;;100;cosPhiFixed:{(0.00,1.0)};022a94c6-2d60-4400-875c-ab9db1ae2736; -939d254a-98b9-43d9-939d-dac9d91e7d73;0.2;-11.883286549709737;0.95;93.55452200165019;50.710754711180925;pv_south_2;0.9;1;false;;;100;cosPhiFixed:{(0.00,1.0)};9a2524f1-3639-4e90-a547-81a259712f8c; -e3b34366-9a4b-4e8f-b46d-fccdd3c318b3;0.2;-3.6445723846554756;0.95;90.07983175106347;50.727743320167065;pv_south_3;0.9;1;false;;;100;cosPhiFixed:{(0.00,1.0)};9354b02c-a4a9-4e9d-905a-e48110b04d88; -403a3d17-0b71-4631-bcc4-71416c6376ed;0.2;-16.249216510914266;0.95;90.57719040894882;53.588559702038765;pv_south_4;0.9;1;false;;;100;cosPhiFixed:{(0.00,1.0)};7607ca0b-959f-48b2-9c5c-1cf7c4ce0dc0; -82925101-834d-4a43-b0b1-02d2156e8cd9;0.2;-32.24606798030436;0.95;90.48722543753683;48.813238479197025;pv_east_1;0.9;1;false;;;100;cosPhiFixed:{(0.00,1.0)};393eb0e3-7873-4d51-a830-2f1d98ff5a60; -f9122147-bad0-48ed-9e14-2404fcf07d3c;0.2;-54.537164978682995;0.95;94.0201214211993;43.081511203199625;pv_east_2;0.9;1;false;;;100;cosPhiFixed:{(0.00,1.0)};19a4861e-cbf5-4dcc-bc1d-98611fda6eb5; -da7bd11d-84d5-4db0-9f3f-2e5f1e7c77de;0.2;64.42003592383116;0.95;90.72157185757533;54.5845761615783;pv_west_1;0.9;1;false;;;100;cosPhiFixed:{(0.00,1.0)};9a2524f1-3639-4e90-a547-81a259712f8c; -6d7542a3-4921-437d-94cb-37c1a7e79f9f;0.2;41.11365003045648;0.95;90.21663937252015;52.37527455203235;pv_west_2;0.9;1;false;;;100;cosPhiFixed:{(0.00,1.0)};9354b02c-a4a9-4e9d-905a-e48110b04d88; From d2215dc31d2ead5db8d9fe92b4e7236bfb7d1495 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Tue, 28 Jan 2025 18:44:27 +0100 Subject: [PATCH 072/102] Revert "Delete Groovy from Sonarqube,Spotless and build.gradle" This reverts commit 3ed24e2b33d74cb4ce90ec964c4b2f2734d62d67. --- build.gradle | 2 ++ gradle/scripts/sonarqube.gradle | 6 +++++- gradle/scripts/spotless.gradle | 16 ++++++++++++++++ src/test/resources/SpockConfig.groovy | 12 ++++++++++++ 4 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 src/test/resources/SpockConfig.groovy diff --git a/build.gradle b/build.gradle index 76511396e5..eac1fda18e 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,7 @@ import com.github.jengelman.gradle.plugins.shadow.transformers.AppendingTransformer plugins { + id 'groovy' // groovy support id 'java' // java support id 'scala' // scala support id 'signing' @@ -99,6 +100,7 @@ dependencies { implementation "ch.qos.logback:logback-classic:1.5.16" /* testing */ + testImplementation 'org.spockframework:spock-core:2.3-groovy-4.0' testImplementation 'org.scalatestplus:mockito-3-4_2.13:3.2.10.0' testImplementation 'org.mockito:mockito-core:5.15.2' // mocking framework testImplementation "org.scalatest:scalatest_${scalaVersion}:3.2.19" diff --git a/gradle/scripts/sonarqube.gradle b/gradle/scripts/sonarqube.gradle index 78eb4a5284..501bbbdc72 100644 --- a/gradle/scripts/sonarqube.gradle +++ b/gradle/scripts/sonarqube.gradle @@ -10,7 +10,8 @@ sonarqube { 'src/main/scala'] // src dirs property "sonar.tests", [ 'src/test/resources', - 'src/test/scala',] // test src dirs + 'src/test/scala', + 'src/test/groovy'] // test src dirs // reports stuff (for all languages) property 'sonar.junit.reportPaths', [ 'build/test-results/test'] // Comma-delimited list of paths to Surefire XML-format reports. @@ -22,6 +23,9 @@ sonarqube { // scala specific stuff property 'sonar.scala.coverage.reportPaths', 'build/reports/scoverageTest/scoverage.xml' + // groovy specific stuff + property 'sonar.groovy.binaries', 'build/classes/groovy' // groovy binaries + // remove auto generated SimonaConfig file from analysis property 'sonar.exclusions', [ "src/main/scala/edu/ie3/simona/config/SimonaConfig.scala" diff --git a/gradle/scripts/spotless.gradle b/gradle/scripts/spotless.gradle index 970b0a5d13..f127f2bdd5 100644 --- a/gradle/scripts/spotless.gradle +++ b/gradle/scripts/spotless.gradle @@ -14,6 +14,22 @@ spotless { licenseHeader ie3LicHead } + /* cf. https://github.com/diffplug/spotless/tree/master/plugin-gradle */ + groovy { + licenseHeader ie3LicHead + // the Groovy Eclipse formatter extends the Java Eclipse formatter, + // so it formats Java files by default (unless `excludeJava` is used). + greclipse().configFile('greclipse.properties') + indentWithSpaces 2 + } + + groovyGradle { + // same as groovy, but for .gradle (defaults to '*.gradle') + target '*.gradle', 'gradle/scripts/*.gradle' + greclipse() + indentWithSpaces 2 + } + //sets a license header, removes unused imports and formats conforming to the scala fmt formatter scala { scalafmt().configFile(".scalafmt.conf") diff --git a/src/test/resources/SpockConfig.groovy b/src/test/resources/SpockConfig.groovy new file mode 100644 index 0000000000..235e0d1d60 --- /dev/null +++ b/src/test/resources/SpockConfig.groovy @@ -0,0 +1,12 @@ +import spock.lang.Specification + +//improved logging for Spock tests, see https://github.com/spockframework/spock/issues/538#issuecomment-285936181 for details + +class LabelPrinter { + def _(def message) { + println message + true + } +} + +Specification.mixin LabelPrinter \ No newline at end of file From c9a369b8330c8d775493aadca27d7c45d0a94fbb Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Tue, 28 Jan 2025 18:51:27 +0100 Subject: [PATCH 073/102] Fixing the first of two EmAgentIT tests Signed-off-by: Sebastian Peter --- .../edu/ie3/simona/agent/em/EmAgentIT.scala | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/test/scala/edu/ie3/simona/agent/em/EmAgentIT.scala b/src/test/scala/edu/ie3/simona/agent/em/EmAgentIT.scala index 8667aaa84e..e1d444d218 100644 --- a/src/test/scala/edu/ie3/simona/agent/em/EmAgentIT.scala +++ b/src/test/scala/edu/ie3/simona/agent/em/EmAgentIT.scala @@ -259,11 +259,11 @@ class EmAgentIT scheduler.expectMessage(Completion(storageAgent)) /* TICK 0 - LOAD: 0.000269 MW - PV: -0.005685 MW + LOAD: 0.269 kW + PV: -5.617 kW STORAGE: SOC 0 % -> charge with 5 kW - -> remaining -0.0004161 MW + -> remaining -0.348 kW */ emAgentActivation ! Activation(0) @@ -272,7 +272,7 @@ class EmAgentIT 0, weatherService.ref.toClassic, WeatherData( - WattsPerSquareMeter(400d), + WattsPerSquareMeter(540d), WattsPerSquareMeter(200d), Celsius(0d), MetersPerSecond(0d), @@ -285,19 +285,19 @@ class EmAgentIT emResult.getInputModel shouldBe emInput.getUuid emResult.getTime shouldBe 0L.toDateTime emResult.getP should equalWithTolerance( - -0.000416087825.asMegaWatt + -0.00034885012.asMegaWatt ) - emResult.getQ should equalWithTolerance(0.0000882855367.asMegaVar) + emResult.getQ should equalWithTolerance(0.00008828554.asMegaVar) } scheduler.expectMessage(Completion(emAgentActivation, Some(7200))) /* TICK 7200 - LOAD: 0.000269 MW (unchanged) - PV: -0.003797 MW + LOAD: 0.269 kW (unchanged) + PV: -3.651 kW STORAGE: SOC 63.3 % - -> charge with 3.5282 kW - -> remaining 0 MW + -> charge with 3.382 kW + -> remaining 0 kW */ emAgentActivation ! Activation(7200) @@ -322,24 +322,24 @@ class EmAgentIT emResult.getQ should equalWithTolerance(0.0000882855367.asMegaVar) } - scheduler.expectMessage(Completion(emAgentActivation, Some(13107))) + scheduler.expectMessage(Completion(emAgentActivation, Some(13362))) - /* TICK 13107 - LOAD: 0.000269 MW (unchanged) - PV: -0.003797 MW (unchanged) + /* TICK 13362 + LOAD: 0.269 kW (unchanged) + PV: -3.651 kW (unchanged) STORAGE: SOC 100 % -> charge with 0 kW - -> remaining -0.003528 MW + -> remaining -3.382 kW */ - emAgentActivation ! Activation(13107) + emAgentActivation ! Activation(13362) resultListener.expectMessageType[ParticipantResultEvent] match { case ParticipantResultEvent(emResult: EmResult) => emResult.getInputModel shouldBe emInput.getUuid - emResult.getTime shouldBe 13107L.toDateTime + emResult.getTime shouldBe 13362L.toDateTime emResult.getP should equalWithTolerance( - -0.0035281545552.asMegaWatt + -0.003382375474.asMegaWatt ) emResult.getQ should equalWithTolerance(0.0000882855367.asMegaVar) } @@ -347,11 +347,11 @@ class EmAgentIT scheduler.expectMessage(Completion(emAgentActivation, Some(14400))) /* TICK 14400 - LOAD: 0.000269 MW (unchanged) - PV: -0.000066 MW + LOAD: 0.269 kW (unchanged) + PV: -0.066 kW STORAGE: SOC 100 % -> charge with -0.202956 kW - -> remaining 0 MW + -> remaining 0 kW */ // send weather data before activation, which can happen From de2096d6f4bce0d86063519f0d2422c81b5dec3b Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Tue, 28 Jan 2025 18:52:23 +0100 Subject: [PATCH 074/102] remove allTests from Jenkins report publishing --- Jenkinsfile | 1 - 1 file changed, 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index cb5281a764..ff1bfd11e3 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -373,7 +373,6 @@ def determineDisplayName(String currentBranchName, String commitHash, String org def publishReports(String relativeProjectDir) { // publish test reports - publishHTML([allowMissing: true, alwaysLinkToLastBuild: true, escapeUnderscores: false, keepAll: true, reportDir: relativeProjectDir + '/build/reports/tests/allTests', reportFiles: 'index.html', reportName: "${relativeProjectDir}_java_tests_report", reportTitles: '']) // publish scalatest reports for main project only (currently the only one with scala sources!) publishHTML([allowMissing: false, alwaysLinkToLastBuild: true, escapeUnderscores: false, keepAll: true, reportDir: relativeProjectDir + '/build/reports/tests/scalatest', reportFiles: 'index.html', reportName: "${relativeProjectDir}_scala_tests_report", reportTitles: '']) From 1470b198bfbce9295387cb515258590ee3963a9d Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Tue, 28 Jan 2025 19:10:13 +0100 Subject: [PATCH 075/102] remove groovy from sonarqube.gradle --- gradle/scripts/sonarqube.gradle | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/gradle/scripts/sonarqube.gradle b/gradle/scripts/sonarqube.gradle index 501bbbdc72..17696bc13a 100644 --- a/gradle/scripts/sonarqube.gradle +++ b/gradle/scripts/sonarqube.gradle @@ -10,8 +10,7 @@ sonarqube { 'src/main/scala'] // src dirs property "sonar.tests", [ 'src/test/resources', - 'src/test/scala', - 'src/test/groovy'] // test src dirs + 'src/test/scala'] // test src dirs // reports stuff (for all languages) property 'sonar.junit.reportPaths', [ 'build/test-results/test'] // Comma-delimited list of paths to Surefire XML-format reports. @@ -23,9 +22,6 @@ sonarqube { // scala specific stuff property 'sonar.scala.coverage.reportPaths', 'build/reports/scoverageTest/scoverage.xml' - // groovy specific stuff - property 'sonar.groovy.binaries', 'build/classes/groovy' // groovy binaries - // remove auto generated SimonaConfig file from analysis property 'sonar.exclusions', [ "src/main/scala/edu/ie3/simona/config/SimonaConfig.scala" From 8247d91379b331963d7dc37c9578675c76d5b8ee Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Tue, 28 Jan 2025 19:44:46 +0100 Subject: [PATCH 076/102] remove spotlessGroovy --- gradle/scripts/spotless.gradle | 8 -------- 1 file changed, 8 deletions(-) diff --git a/gradle/scripts/spotless.gradle b/gradle/scripts/spotless.gradle index f127f2bdd5..b21d83093b 100644 --- a/gradle/scripts/spotless.gradle +++ b/gradle/scripts/spotless.gradle @@ -15,14 +15,6 @@ spotless { } /* cf. https://github.com/diffplug/spotless/tree/master/plugin-gradle */ - groovy { - licenseHeader ie3LicHead - // the Groovy Eclipse formatter extends the Java Eclipse formatter, - // so it formats Java files by default (unless `excludeJava` is used). - greclipse().configFile('greclipse.properties') - indentWithSpaces 2 - } - groovyGradle { // same as groovy, but for .gradle (defaults to '*.gradle') target '*.gradle', 'gradle/scripts/*.gradle' From 6a48e8d84837a4cbc35070b35f5651d8a2f2627f Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Tue, 28 Jan 2025 19:45:25 +0100 Subject: [PATCH 077/102] remove SpockConfig.groovy --- src/test/resources/SpockConfig.groovy | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 src/test/resources/SpockConfig.groovy diff --git a/src/test/resources/SpockConfig.groovy b/src/test/resources/SpockConfig.groovy deleted file mode 100644 index 235e0d1d60..0000000000 --- a/src/test/resources/SpockConfig.groovy +++ /dev/null @@ -1,12 +0,0 @@ -import spock.lang.Specification - -//improved logging for Spock tests, see https://github.com/spockframework/spock/issues/538#issuecomment-285936181 for details - -class LabelPrinter { - def _(def message) { - println message - true - } -} - -Specification.mixin LabelPrinter \ No newline at end of file From 26cafbdb94714617d24e6a6f8848e5ff380ad3f0 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Tue, 28 Jan 2025 19:53:56 +0100 Subject: [PATCH 078/102] remove groovy from build.gradle --- build.gradle | 2 -- 1 file changed, 2 deletions(-) diff --git a/build.gradle b/build.gradle index eac1fda18e..76511396e5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,6 @@ import com.github.jengelman.gradle.plugins.shadow.transformers.AppendingTransformer plugins { - id 'groovy' // groovy support id 'java' // java support id 'scala' // scala support id 'signing' @@ -100,7 +99,6 @@ dependencies { implementation "ch.qos.logback:logback-classic:1.5.16" /* testing */ - testImplementation 'org.spockframework:spock-core:2.3-groovy-4.0' testImplementation 'org.scalatestplus:mockito-3-4_2.13:3.2.10.0' testImplementation 'org.mockito:mockito-core:5.15.2' // mocking framework testImplementation "org.scalatest:scalatest_${scalaVersion}:3.2.19" From 8ff2bfd0e0d7e4233e42fece02778aaf232f0a53 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Tue, 28 Jan 2025 20:06:49 +0100 Subject: [PATCH 079/102] Revert "remove groovy from build.gradle" This reverts commit 26cafbdb94714617d24e6a6f8848e5ff380ad3f0. --- build.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.gradle b/build.gradle index 76511396e5..eac1fda18e 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,7 @@ import com.github.jengelman.gradle.plugins.shadow.transformers.AppendingTransformer plugins { + id 'groovy' // groovy support id 'java' // java support id 'scala' // scala support id 'signing' @@ -99,6 +100,7 @@ dependencies { implementation "ch.qos.logback:logback-classic:1.5.16" /* testing */ + testImplementation 'org.spockframework:spock-core:2.3-groovy-4.0' testImplementation 'org.scalatestplus:mockito-3-4_2.13:3.2.10.0' testImplementation 'org.mockito:mockito-core:5.15.2' // mocking framework testImplementation "org.scalatest:scalatest_${scalaVersion}:3.2.19" From 62f0673805b273d5a10cedeb3862ee6d0841a748 Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Wed, 29 Jan 2025 11:54:24 +0100 Subject: [PATCH 080/102] Fixing the second of two EmAgentIT tests Signed-off-by: Sebastian Peter --- .../edu/ie3/simona/agent/em/EmAgentIT.scala | 38 ++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/src/test/scala/edu/ie3/simona/agent/em/EmAgentIT.scala b/src/test/scala/edu/ie3/simona/agent/em/EmAgentIT.scala index e1d444d218..630f17575d 100644 --- a/src/test/scala/edu/ie3/simona/agent/em/EmAgentIT.scala +++ b/src/test/scala/edu/ie3/simona/agent/em/EmAgentIT.scala @@ -558,11 +558,11 @@ class EmAgentIT val weatherDependentAgents = Seq(pvAgent, heatPumpAgent) /* TICK 0 - LOAD: 0.000269 MW - PV: -0.005685 MW + LOAD: 0.269 kW + PV: -5.617 kW Heat pump: off, can be turned on or stay off -> set point ~3.5 kW (bigger than 50 % rated apparent power): turned on - -> remaining -0.000566 MW + -> remaining -0.499 kW */ emAgentActivation ! Activation(0) @@ -572,7 +572,7 @@ class EmAgentIT 0, weatherService.ref.toClassic, WeatherData( - WattsPerSquareMeter(400d), + WattsPerSquareMeter(540d), WattsPerSquareMeter(200d), Celsius(0d), MetersPerSecond(0d), @@ -586,7 +586,7 @@ class EmAgentIT emResult.getInputModel shouldBe emInput.getUuid emResult.getTime shouldBe 0.toDateTime emResult.getP should equalWithTolerance( - -0.000566087824.asMegaWatt + -0.000498850118.asMegaWatt ) emResult.getQ should equalWithTolerance(0.001073120041.asMegaVar) } @@ -594,11 +594,11 @@ class EmAgentIT scheduler.expectMessage(Completion(emAgentActivation, Some(7200))) /* TICK 7200 - LOAD: 0.000269 MW (unchanged) - PV: -0.003797 MW + LOAD: 0.269 kW (unchanged) + PV: -3.651 kW Heat pump: running (turned on from last request), can also be turned off -> set point ~3.5 kW (bigger than 50 % rated apparent power): stays turned on with unchanged state - -> remaining 0 MW + -> remaining 1.468 kW */ emAgentActivation ! Activation(7200) @@ -621,17 +621,18 @@ class EmAgentIT case ParticipantResultEvent(emResult: EmResult) => emResult.getInputModel shouldBe emInput.getUuid emResult.getTime shouldBe 7200.toDateTime - emResult.getP should equalWithTolerance(0.00132184544484.asMegaWatt) + emResult.getP should equalWithTolerance(0.001467624526.asMegaWatt) emResult.getQ should equalWithTolerance(0.001073120041.asMegaVar) } scheduler.expectMessage(Completion(emAgentActivation, Some(14400))) /* TICK 14400 - LOAD: 0.000269 MW (unchanged) - PV: -0.000066 MW + LOAD: 0.269 kW (unchanged) + PV: -0.066 kW Heat pump: Is still running, can still be turned off -> flex signal is 0 MW: Heat pump is turned off + -> remaining 0.203 kW */ emAgentActivation ! Activation(14400) @@ -662,10 +663,11 @@ class EmAgentIT scheduler.expectMessage(Completion(emAgentActivation, Some(21600))) /* TICK 21600 - LOAD: 0.000269 MW (unchanged) - PV: -0.000032 MW + LOAD: 0.269 kW (unchanged) + PV: -0.026 kW Heat pump: Is not running, can run or stay off -> flex signal is 0 MW: Heat pump is turned off + -> remaining 0.242 kW */ emAgentActivation ! Activation(21600) @@ -675,6 +677,7 @@ class EmAgentIT 21600, weatherService.ref.toClassic, WeatherData( + // Same irradiation, but different angle of the sun WattsPerSquareMeter(5d), WattsPerSquareMeter(5d), Celsius(0d), @@ -688,17 +691,18 @@ class EmAgentIT case ParticipantResultEvent(emResult: EmResult) => emResult.getInputModel shouldBe emInput.getUuid emResult.getTime shouldBe 21600.toDateTime - emResult.getP should equalWithTolerance(0.0002367679996.asMegaWatt) + emResult.getP should equalWithTolerance(0.000242284024.asMegaWatt) emResult.getQ should equalWithTolerance(0.000088285537.asMegaVar) } scheduler.expectMessage(Completion(emAgentActivation, Some(28665))) /* TICK 28666 - LOAD: 0.000269 MW (unchanged) - PV: -0.000032 MW (unchanged) + LOAD: 0.269 kW (unchanged) + PV: -0.026 kW (unchanged) Heat pump: Is turned on again and cannot be turned off -> flex signal is no control -> 0.00485 MW + -> remaining 5.092 kW */ emAgentActivation ! Activation(28665) @@ -707,7 +711,7 @@ class EmAgentIT case ParticipantResultEvent(emResult: EmResult) => emResult.getInputModel shouldBe emInput.getUuid emResult.getTime shouldBe 28665.toDateTime - emResult.getP should equalWithTolerance(0.0050867679996.asMegaWatt) + emResult.getP should equalWithTolerance(0.005092284024.asMegaWatt) emResult.getQ should equalWithTolerance(0.001073120040.asMegaVar) } From 525b07b6d23203bf1e8b8c8b8fa5944ac8ed67a7 Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Wed, 29 Jan 2025 13:03:49 +0100 Subject: [PATCH 081/102] Removing groovy, setting up scalatest properly and removing unused dependencies Signed-off-by: Sebastian Peter --- build.gradle | 21 ++++++++++++--------- gradle/scripts/tests.gradle | 10 +++++----- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/build.gradle b/build.gradle index eac1fda18e..03c5a06671 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,6 @@ import com.github.jengelman.gradle.plugins.shadow.transformers.AppendingTransformer plugins { - id 'groovy' // groovy support id 'java' // java support id 'scala' // scala support id 'signing' @@ -13,7 +12,6 @@ plugins { id "com.github.johnrengelman.shadow" version "8.1.1" // fat jar id "org.sonarqube" version "6.0.1.5171" // sonarqube id "org.scoverage" version "8.1" // scala code coverage scoverage - id "com.github.maiflai.scalatest" version "0.32" // run scalatest without specific spec task id 'org.hidetake.ssh' version '2.11.2' id 'net.thauvin.erik.gradle.semver' version '1.0.4' // semantic versioning id "application" @@ -100,13 +98,18 @@ dependencies { implementation "ch.qos.logback:logback-classic:1.5.16" /* testing */ - testImplementation 'org.spockframework:spock-core:2.3-groovy-4.0' - testImplementation 'org.scalatestplus:mockito-3-4_2.13:3.2.10.0' - testImplementation 'org.mockito:mockito-core:5.15.2' // mocking framework + // scalatest & junit testImplementation "org.scalatest:scalatest_${scalaVersion}:3.2.19" - testRuntimeOnly 'com.vladsch.flexmark:flexmark-all:0.64.8' //scalatest html output - testImplementation group: 'org.pegdown', name: 'pegdown', version: '1.6.0' - testImplementation "org.apache.pekko:pekko-testkit_${scalaVersion}:${pekkoVersion}" // pekko testkit + testImplementation "org.junit.platform:junit-platform-launcher:1.11.4" + testRuntimeOnly "org.junit.platform:junit-platform-engine:1.11.4" + testRuntimeOnly "org.scalatestplus:junit-5-11_${scalaVersion}:3.2.19.0" + + // mocking framework + testImplementation 'org.mockito:mockito-core:5.15.2' + testImplementation "org.scalatestplus:mockito-3-4_${scalaVersion}:3.2.10.0" + + // pekko + testImplementation "org.apache.pekko:pekko-testkit_${scalaVersion}:${pekkoVersion}" testImplementation "org.apache.pekko:pekko-actor-testkit-typed_${scalaVersion}:${pekkoVersion}" // testcontainers @@ -149,7 +152,7 @@ dependencies { implementation 'tech.units:indriya:2.2.2' // quantities implementation "org.typelevel:squants_${scalaVersion}:1.8.3" implementation 'org.apache.commons:commons-csv:1.13.0' - implementation 'org.scalanlp:breeze_2.13:2.1.0' // scientific calculations (http://www.scalanlp.org/) + implementation "org.scalanlp:breeze_${scalaVersion}:2.1.0" // scientific calculations (http://www.scalanlp.org/) implementation 'de.lmu.ifi.dbs.elki:elki:0.7.5' // Statistics (for random load model) implementation 'org.jgrapht:jgrapht-core:1.5.2' } diff --git a/gradle/scripts/tests.gradle b/gradle/scripts/tests.gradle index ccccb3ac33..7dd182d5af 100644 --- a/gradle/scripts/tests.gradle +++ b/gradle/scripts/tests.gradle @@ -1,11 +1,11 @@ test { - useJUnitPlatform() - testLogging { - events "skipped", "failed" + useJUnitPlatform { + includeEngines 'scalatest' + testLogging { + events("skipped", "failed") + } } } -/* Register scala test with the overall test task */ -test.dependsOn(scalatest) // test task performance improvements, see -> https://docs.gradle.org/current/userguide/performance.html tasks.withType(Test).configureEach { From f9cd89656bdf31bcf57a5168b99cd1b5bab1673f Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Wed, 29 Jan 2025 13:17:58 +0100 Subject: [PATCH 082/102] Adapting test report path Signed-off-by: Sebastian Peter --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index ff1bfd11e3..0f0115cef0 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -375,7 +375,7 @@ def publishReports(String relativeProjectDir) { // publish test reports // publish scalatest reports for main project only (currently the only one with scala sources!) - publishHTML([allowMissing: false, alwaysLinkToLastBuild: true, escapeUnderscores: false, keepAll: true, reportDir: relativeProjectDir + '/build/reports/tests/scalatest', reportFiles: 'index.html', reportName: "${relativeProjectDir}_scala_tests_report", reportTitles: '']) + publishHTML([allowMissing: false, alwaysLinkToLastBuild: true, escapeUnderscores: false, keepAll: true, reportDir: relativeProjectDir + '/build/reports/tests/test', reportFiles: 'index.html', reportName: "${relativeProjectDir}_scala_tests_report", reportTitles: '']) // publish scapegoat src report for main project only publishHTML([allowMissing: false, alwaysLinkToLastBuild: true, escapeUnderscores: false, keepAll: true, reportDir: relativeProjectDir + '/build/reports/scapegoat/src', reportFiles: 'scapegoat.html', reportName: "${relativeProjectDir}_scapegoat_src_report", reportTitles: '']) From 7924bda81ede40f5c10d57291f4c78248deec272 Mon Sep 17 00:00:00 2001 From: Pierre <155652256+pierrepetersmeier@users.noreply.github.com> Date: Wed, 29 Jan 2025 16:10:55 +0100 Subject: [PATCH 083/102] Update src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala Co-authored-by: Daniel Feismann <98817556+danielfeismann@users.noreply.github.com> --- .../edu/ie3/simona/model/participant/PvModelITHelper.scala | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala b/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala index 4122f7b690..7821e54c13 100644 --- a/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala +++ b/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala @@ -54,8 +54,7 @@ trait PvModelITHelper extends PvInputTestData { val fileName = "_pv/it/weather.tar.gz" val csvRecords: Iterable[CSVRecord] = getCsvRecords(fileName) - val weatherMap = mutable - .Map[ZonedDateTime, mutable.Map[String, WeatherMessage.WeatherData]]() + val weatherMap = Map[ZonedDateTime, Map[String, WeatherMessage.WeatherData]]() for (row <- csvRecords) { val time = TimeUtil.withDefaults.toZonedDateTime(row.get(0)) From 17327db60dd928e7cec1f42794237b10f8fb4e0f Mon Sep 17 00:00:00 2001 From: Pierre <155652256+pierrepetersmeier@users.noreply.github.com> Date: Wed, 29 Jan 2025 16:11:37 +0100 Subject: [PATCH 084/102] Update src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala Co-authored-by: Daniel Feismann <98817556+danielfeismann@users.noreply.github.com> --- .../edu/ie3/simona/test/common/input/PvInputTestData.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala b/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala index 2875aa0ac5..9dc9f70cd8 100644 --- a/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala +++ b/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala @@ -68,8 +68,8 @@ trait PvInputTestData Quantities.getQuantity(91.23978812713176, StandardUnits.EFFICIENCY), Quantities .getQuantity(51.75144341774285, StandardUnits.SOLAR_ELEVATION_ANGLE), - 100, 0.9, + 1.0, false, Quantities.getQuantity(100, StandardUnits.S_RATED), 0.95, From bcbad0e3339824d417b78ad7ab163017a3259a7c Mon Sep 17 00:00:00 2001 From: Pierre <155652256+pierrepetersmeier@users.noreply.github.com> Date: Wed, 29 Jan 2025 16:11:51 +0100 Subject: [PATCH 085/102] Update src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala Co-authored-by: Daniel Feismann <98817556+danielfeismann@users.noreply.github.com> --- .../edu/ie3/simona/test/common/input/PvInputTestData.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala b/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala index 9dc9f70cd8..e2b7b88984 100644 --- a/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala +++ b/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala @@ -58,7 +58,7 @@ trait PvInputTestData protected val pvSouth1 = new PvInput( UUID.fromString("7ac5bb15-36ee-42b0-902b-9cd520e241b3"), "pv_south_1", - new OperatorInput(UUID.randomUUID(), "NO_OPERATOR"), +OperatorInput.NO_OPERATOR_ASSIGNED, OperationTime.notLimited, nodeInputPvModel3, CosPhiFixed.CONSTANT_CHARACTERISTIC, From a293c2b32966b9ed31156f06ffdf4379ee0c6e3a Mon Sep 17 00:00:00 2001 From: pierrepetersmeier <155652256+pierrepetersmeier@users.noreply.github.com> Date: Wed, 29 Jan 2025 17:42:10 +0100 Subject: [PATCH 086/102] Review Update. --- .../model/participant/PvModelITHelper.scala | 8 ++--- .../model/participant/PvModelITSpec.scala | 16 +++++---- .../test/common/input/NodeInputTestData.scala | 33 +++++++------------ .../test/common/input/PvInputTestData.scala | 14 ++++---- 4 files changed, 33 insertions(+), 38 deletions(-) diff --git a/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala b/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala index 7821e54c13..0806f35400 100644 --- a/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala +++ b/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala @@ -25,7 +25,7 @@ import scala.jdk.CollectionConverters.IterableHasAsScala trait PvModelITHelper extends PvInputTestData { private val CSV_FORMAT: CSVFormat = - CSVFormat.DEFAULT.builder().setHeader().build() + CSVFormat.DEFAULT.builder().setHeader().get() def getCsvRecords(fileName: String): Iterable[CSVRecord] = { val resourcePath = getClass.getResource(fileName).getPath @@ -43,8 +43,8 @@ trait PvModelITHelper extends PvInputTestData { inputModel.getId -> PvModel( inputModel, 1.0, - defaultSimulationStart, - defaultSimulationEnd, + TimeUtil.withDefaults.toZonedDateTime("2011-01-01T00:00:00Z"), + TimeUtil.withDefaults.toZonedDateTime("2012-01-01T00:00:00Z"), ) }.toMap } @@ -70,7 +70,7 @@ trait PvModelITHelper extends PvInputTestData { MetersPerSecond(windVel), ) - val modelToWeatherMap = weatherMap.getOrElseUpdate( + val modelToWeatherMap = weatherMap.getOrElse( time, mutable.Map[String, WeatherMessage.WeatherData](), ) diff --git a/src/test/scala/edu/ie3/simona/model/participant/PvModelITSpec.scala b/src/test/scala/edu/ie3/simona/model/participant/PvModelITSpec.scala index 128405ff80..4a7f5f29b7 100644 --- a/src/test/scala/edu/ie3/simona/model/participant/PvModelITSpec.scala +++ b/src/test/scala/edu/ie3/simona/model/participant/PvModelITSpec.scala @@ -9,6 +9,7 @@ package edu.ie3.simona.model.participant import edu.ie3.simona.test.common.UnitSpec import org.scalatest.matchers.should.Matchers import squants.Each +import squants.energy.{Megawatts, Power} /** A simple integration test that uses pre-calculated data to check if the pv * model works as expected. It uses 8 pv models located in GER. @@ -16,6 +17,10 @@ import squants.Each class PvModelITSpec extends Matchers with UnitSpec with PvModelITHelper { + private implicit val tolerance: Power = Megawatts( + 1e-5 + ) + "The photovoltaic model" should { "match the expected results for all 8 PV panels over the whole year" in { val pvModels = createPvModels() @@ -42,17 +47,16 @@ class PvModelITSpec extends Matchers with UnitSpec with PvModelITHelper { val calc = model .calculatePower(0L, voltage, ModelState.ConstantState, neededData) .p - .toMegawatts - val sol = resultsMap(dateTime)(modelId).toMegawatts + val sol = resultsMap(dateTime)(modelId) - math.abs(calc - sol) + (calc, sol) } } - testRes.forall { diff => - diff < 1e-14 - } shouldBe true + forAll(testRes) { case (calc, sol) => + calc should approximate(sol) + } } } } diff --git a/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala b/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala index 0dc302be94..4459599ea3 100644 --- a/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala +++ b/src/test/scala/edu/ie3/simona/test/common/input/NodeInputTestData.scala @@ -17,9 +17,6 @@ import java.util.UUID /** Default values for NodeInput's to be used in tests. Should be extended as * needed. - * - * @version 0.1 - * @since 23.06.20 */ trait NodeInputTestData extends DefaultTestData { @@ -102,81 +99,75 @@ trait NodeInputTestData extends DefaultTestData { // PvModelITSpec node input models val geometryFactory = new GeometryFactory() - val p1: Point = geometryFactory.createPoint(new Coordinate(10.3837, 53.9209)) protected val nodeInputPvModel1 = new NodeInput( UUID.fromString("19a4861e-cbf5-4dcc-bc1d-98611fda6eb5"), - "pvModelNode1", + "luebeck_1", OperatorInput.NO_OPERATOR_ASSIGNED, defaultOperationTime, Quantities.getQuantity(1.0, PU), true, - p1, + geometryFactory.createPoint(new Coordinate(10.3837, 53.9209)), GermanVoltageLevelUtils.MV_10KV, 3, ) - val p2: Point = geometryFactory.createPoint(new Coordinate(9.7342, 52.3393)) protected val nodeInputPvModel2 = new NodeInput( UUID.fromString("9a2524f1-3639-4e90-a547-81a259712f8c"), - "pvModelNode2", + "hannover_2", OperatorInput.NO_OPERATOR_ASSIGNED, defaultOperationTime, Quantities.getQuantity(1d, PU), true, - p2, + geometryFactory.createPoint(new Coordinate(9.7342, 52.3393)), GermanVoltageLevelUtils.MV_10KV, 2, ) - val p3: Point = geometryFactory.createPoint(new Coordinate(10.1991, 52.1861)) protected val nodeInputPvModel3 = new NodeInput( UUID.fromString("022a94c6-2d60-4400-875c-ab9db1ae2736"), - "pvModelNode3", + "hannover_1", OperatorInput.NO_OPERATOR_ASSIGNED, defaultOperationTime, Quantities.getQuantity(1d, PU), true, - p3, + geometryFactory.createPoint(new Coordinate(10.1991, 52.1861)), GermanVoltageLevelUtils.MV_10KV, 1, ) - val p4: Point = geometryFactory.createPoint(new Coordinate(10.8245, 53.6567)) protected val nodeInputPvModel4 = new NodeInput( UUID.fromString("9354b02c-a4a9-4e9d-905a-e48110b04d88"), - "pvModelNode4", + "luebeck_2", OperatorInput.NO_OPERATOR_ASSIGNED, defaultOperationTime, Quantities.getQuantity(1d, PU), true, - p4, + geometryFactory.createPoint(new Coordinate(10.8245, 53.6567)), GermanVoltageLevelUtils.MV_10KV, 4, ) - val p5: Point = geometryFactory.createPoint(new Coordinate(10.0134, 51.9644)) protected val nodeInputPvModel5: NodeInput = new NodeInput( UUID.fromString("393eb0e3-7873-4d51-a830-2f1d98ff5a60"), - "pvModelNode5", + "hannover_3", OperatorInput.NO_OPERATOR_ASSIGNED, defaultOperationTime, Quantities.getQuantity(1d, PU), true, - p5, + geometryFactory.createPoint(new Coordinate(10.0134, 51.9644)), GermanVoltageLevelUtils.MV_10KV, 16, ) - val p6: Point = geometryFactory.createPoint(new Coordinate(10.4729, 53.6454)) protected val nodeInputPvModel6 = new NodeInput( UUID.fromString("7607ca0b-959f-48b2-9c5c-1cf7c4ce0dc0"), - "pvModelNode6", + "luebeck_3", OperatorInput.NO_OPERATOR_ASSIGNED, defaultOperationTime, Quantities.getQuantity(1d, PU), true, - p6, + geometryFactory.createPoint(new Coordinate(10.4729, 53.6454)), GermanVoltageLevelUtils.MV_10KV, 17, ) diff --git a/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala b/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala index e2b7b88984..10d2cbe220 100644 --- a/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala +++ b/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala @@ -88,8 +88,8 @@ OperatorInput.NO_OPERATOR_ASSIGNED, Quantities.getQuantity(93.55452200165019, StandardUnits.EFFICIENCY), Quantities .getQuantity(50.710754711180925, StandardUnits.SOLAR_ELEVATION_ANGLE), - 100, 0.9, + 1.0, false, Quantities.getQuantity(100, StandardUnits.S_RATED), 0.95, @@ -108,8 +108,8 @@ OperatorInput.NO_OPERATOR_ASSIGNED, Quantities.getQuantity(90.07983175106347, StandardUnits.EFFICIENCY), Quantities .getQuantity(50.727743320167065, StandardUnits.SOLAR_ELEVATION_ANGLE), - 100, 0.9, + 1.0, false, Quantities.getQuantity(100, StandardUnits.S_RATED), 0.95, @@ -128,8 +128,8 @@ OperatorInput.NO_OPERATOR_ASSIGNED, Quantities.getQuantity(90.57719040894882, StandardUnits.EFFICIENCY), Quantities .getQuantity(53.588559702038765, StandardUnits.SOLAR_ELEVATION_ANGLE), - 100, 0.9, + 1.0, false, Quantities.getQuantity(100, StandardUnits.S_RATED), 0.95, @@ -148,8 +148,8 @@ OperatorInput.NO_OPERATOR_ASSIGNED, Quantities.getQuantity(90.48722543753683, StandardUnits.EFFICIENCY), Quantities .getQuantity(48.813238479197025, StandardUnits.SOLAR_ELEVATION_ANGLE), - 100, 0.9, + 1.0, false, Quantities.getQuantity(100, StandardUnits.S_RATED), 0.95, @@ -168,8 +168,8 @@ OperatorInput.NO_OPERATOR_ASSIGNED, Quantities.getQuantity(94.0201214211993, StandardUnits.EFFICIENCY), Quantities .getQuantity(43.081511203199625, StandardUnits.SOLAR_ELEVATION_ANGLE), - 100, 0.9, + 1.0, false, Quantities.getQuantity(100, StandardUnits.S_RATED), 0.95, @@ -188,8 +188,8 @@ OperatorInput.NO_OPERATOR_ASSIGNED, Quantities.getQuantity(90.72157185757533, StandardUnits.EFFICIENCY), Quantities .getQuantity(54.5845761615783, StandardUnits.SOLAR_ELEVATION_ANGLE), - 100, 0.9, + 1.0, false, Quantities.getQuantity(100, StandardUnits.S_RATED), 0.95, @@ -208,8 +208,8 @@ OperatorInput.NO_OPERATOR_ASSIGNED, Quantities.getQuantity(90.21663937252015, StandardUnits.EFFICIENCY), Quantities .getQuantity(52.37527455203235, StandardUnits.SOLAR_ELEVATION_ANGLE), - 100, 0.9, + 1.0, false, Quantities.getQuantity(100, StandardUnits.S_RATED), 0.95, From 096c152099b24ca7448f806f17c940b519e2bc61 Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Thu, 30 Jan 2025 16:33:35 +0100 Subject: [PATCH 087/102] Removing unnecessary import Signed-off-by: Sebastian Peter --- src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala b/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala index 56de254c2a..e8317655cb 100644 --- a/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala +++ b/src/main/scala/edu/ie3/simona/model/thermal/ThermalGrid.scala @@ -31,7 +31,6 @@ import squants.{Energy, Power, Temperature} import java.time.ZonedDateTime import scala.jdk.CollectionConverters.SetHasAsScala -import scala.language.postfixOps /** Calculation model for a thermal grid. It is assumed, that all elements are * connected directly with exactly one thermal bus From ecd0f83550ed749064ac9ada1ace999185941360 Mon Sep 17 00:00:00 2001 From: pierrepetersmeier <155652256+pierrepetersmeier@users.noreply.github.com> Date: Fri, 31 Jan 2025 10:38:19 +0100 Subject: [PATCH 088/102] Refactor getWeatherData method. fmt. --- .../model/participant/PvModelITHelper.scala | 15 ++++++--------- .../test/common/input/PvInputTestData.scala | 2 +- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala b/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala index 0806f35400..1692f2a49c 100644 --- a/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala +++ b/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala @@ -19,7 +19,6 @@ import java.io.{BufferedReader, File, FileInputStream, InputStreamReader} import java.nio.charset.StandardCharsets import java.time.ZonedDateTime import java.util.zip.GZIPInputStream -import scala.collection.mutable import scala.jdk.CollectionConverters.IterableHasAsScala trait PvModelITHelper extends PvInputTestData { @@ -54,9 +53,9 @@ trait PvModelITHelper extends PvInputTestData { val fileName = "_pv/it/weather.tar.gz" val csvRecords: Iterable[CSVRecord] = getCsvRecords(fileName) - val weatherMap = Map[ZonedDateTime, Map[String, WeatherMessage.WeatherData]]() - - for (row <- csvRecords) { + csvRecords.foldLeft( + Map.empty[ZonedDateTime, Map[String, WeatherMessage.WeatherData]] + ) { (weatherDataMap, row) => val time = TimeUtil.withDefaults.toZonedDateTime(row.get(0)) val modelId = row.get(1) @@ -70,14 +69,12 @@ trait PvModelITHelper extends PvInputTestData { MetersPerSecond(windVel), ) - val modelToWeatherMap = weatherMap.getOrElse( + val modelToWeatherMap = weatherDataMap.getOrElse( time, - mutable.Map[String, WeatherMessage.WeatherData](), + Map.empty[String, WeatherMessage.WeatherData], ) - modelToWeatherMap(modelId) = weather + weatherDataMap.updated(time, modelToWeatherMap.updated(modelId, weather)) } - - weatherMap.view.mapValues(_.toMap).toMap } def getResultsData: Map[ZonedDateTime, Map[String, Power]] = { diff --git a/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala b/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala index 10d2cbe220..c7d18b2474 100644 --- a/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala +++ b/src/test/scala/edu/ie3/simona/test/common/input/PvInputTestData.scala @@ -58,7 +58,7 @@ trait PvInputTestData protected val pvSouth1 = new PvInput( UUID.fromString("7ac5bb15-36ee-42b0-902b-9cd520e241b3"), "pv_south_1", -OperatorInput.NO_OPERATOR_ASSIGNED, + OperatorInput.NO_OPERATOR_ASSIGNED, OperationTime.notLimited, nodeInputPvModel3, CosPhiFixed.CONSTANT_CHARACTERISTIC, From adeba7e7a7ef3de98e75ad22f65f4115c661c1dd Mon Sep 17 00:00:00 2001 From: pierrepetersmeier <155652256+pierrepetersmeier@users.noreply.github.com> Date: Fri, 31 Jan 2025 10:53:47 +0100 Subject: [PATCH 089/102] Sonarqube. --- .../edu/ie3/simona/model/participant/PvModelITHelper.scala | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala b/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala index 1692f2a49c..543ace87a3 100644 --- a/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala +++ b/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala @@ -93,7 +93,7 @@ trait PvModelITHelper extends PvInputTestData { "pv_west_2", ) - val resultsMap = csvRecords + csvRecords .filterNot(row => row.get(0).startsWith("\u0000")) .map { row => val time = TimeUtil.withDefaults.toZonedDateTime(row.get(0)) @@ -105,7 +105,5 @@ trait PvModelITHelper extends PvInputTestData { time -> modelToPowerMap } .toMap - - resultsMap } } From 3d79d77fdd04a2d007cc20f82cd2179b42519ba3 Mon Sep 17 00:00:00 2001 From: pierrepetersmeier <155652256+pierrepetersmeier@users.noreply.github.com> Date: Fri, 31 Jan 2025 11:34:59 +0100 Subject: [PATCH 090/102] Refactor weather data initialization in PvModelITHelper and update test assertions in PvModelITSpec. --- .../ie3/simona/model/participant/PvModelITHelper.scala | 7 ++----- .../edu/ie3/simona/model/participant/PvModelITSpec.scala | 8 ++------ 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala b/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala index 543ace87a3..54eaea206f 100644 --- a/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala +++ b/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala @@ -59,14 +59,11 @@ trait PvModelITHelper extends PvInputTestData { val time = TimeUtil.withDefaults.toZonedDateTime(row.get(0)) val modelId = row.get(1) - val temp = 0.0 - val windVel = 0.0 - val weather = WeatherMessage.WeatherData( WattsPerSquareMeter(row.get(22).replace("Wh/m²", "").toDouble), WattsPerSquareMeter(row.get(21).replace("Wh/m²", "").toDouble), - Kelvin(temp), - MetersPerSecond(windVel), + Kelvin(0.0), + MetersPerSecond(0.0), ) val modelToWeatherMap = weatherDataMap.getOrElse( diff --git a/src/test/scala/edu/ie3/simona/model/participant/PvModelITSpec.scala b/src/test/scala/edu/ie3/simona/model/participant/PvModelITSpec.scala index 4a7f5f29b7..59b780833b 100644 --- a/src/test/scala/edu/ie3/simona/model/participant/PvModelITSpec.scala +++ b/src/test/scala/edu/ie3/simona/model/participant/PvModelITSpec.scala @@ -30,7 +30,7 @@ class PvModelITSpec extends Matchers with UnitSpec with PvModelITHelper { val modelIds = pvModels.keys.toList.sorted val keyList = weatherMap.keys.toList.sorted - val testRes = keyList.flatMap { dateTime => + keyList.foreach { dateTime => val modelToWeatherMap = weatherMap(dateTime) modelIds.map { modelId => @@ -50,13 +50,9 @@ class PvModelITSpec extends Matchers with UnitSpec with PvModelITHelper { val sol = resultsMap(dateTime)(modelId) - (calc, sol) + calc should approximate(sol) } } - - forAll(testRes) { case (calc, sol) => - calc should approximate(sol) - } } } } From 00e82c353df387473a0cfe7f65581461dceda854 Mon Sep 17 00:00:00 2001 From: pierrepetersmeier <155652256+pierrepetersmeier@users.noreply.github.com> Date: Fri, 31 Jan 2025 11:37:25 +0100 Subject: [PATCH 091/102] Increase tolerance level in PvModelITSpec for improved precision in tests --- .../scala/edu/ie3/simona/model/participant/PvModelITSpec.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/scala/edu/ie3/simona/model/participant/PvModelITSpec.scala b/src/test/scala/edu/ie3/simona/model/participant/PvModelITSpec.scala index 59b780833b..170a040aab 100644 --- a/src/test/scala/edu/ie3/simona/model/participant/PvModelITSpec.scala +++ b/src/test/scala/edu/ie3/simona/model/participant/PvModelITSpec.scala @@ -18,7 +18,7 @@ import squants.energy.{Megawatts, Power} class PvModelITSpec extends Matchers with UnitSpec with PvModelITHelper { private implicit val tolerance: Power = Megawatts( - 1e-5 + 1e-14 ) "The photovoltaic model" should { From 32033b11246a40521a16576e9862c524a005e6cc Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Fri, 31 Jan 2025 12:42:03 +0100 Subject: [PATCH 092/102] Fix negative required energy demand for thermalHouse --- CHANGELOG.md | 2 +- .../scala/edu/ie3/simona/model/thermal/ThermalHouse.scala | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a1f91e287a..fa15464eed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -118,7 +118,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed SonarQube quality gate using the correct parameter '-Dsonar.qualitygate.wait=true' [#1072](https://github.com/ie3-institute/simona/issues/1072) - Updated `simonaAPI` to version `0.6.0` [#1080](https://github.com/ie3-institute/simona/issues/1080) - Enhanced title in `CITATION.cff` [#1088](https://github.com/ie3-institute/simona/issues/1088) -- Refactor ThermalEnergyDemand definitions [#917](https://github.com/ie3-institute/simona/issues/917) +- Fix negative required energy demand for thermalHouse [#1127](https://github.com/ie3-institute/simona/issues/1127) ### Fixed - Fix rendering of references in documentation [#505](https://github.com/ie3-institute/simona/issues/505) diff --git a/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala b/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala index 4296efa1ae..5f52271594 100644 --- a/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala +++ b/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala @@ -119,7 +119,7 @@ final case class ThermalHouse( currentInnerTemp, temperatureToTriggerRequiredEnergy, ) - ) energy(targetTemperature, currentInnerTemp) + ) energy(temperatureToTriggerRequiredEnergy, currentInnerTemp) else zeroMWh @@ -174,9 +174,7 @@ final case class ThermalHouse( innerTemperature: Temperature, boundaryTemperature: Temperature = lowerBoundaryTemperature, ): Boolean = - innerTemperature < Kelvin( - boundaryTemperature.toKelvinScale + temperatureTolerance.toKelvinScale - ) + innerTemperature < boundaryTemperature /** Calculate the new inner temperature of the thermal house. * From ff4becab67dac38075798dffe940a1bd6afe25a9 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Fri, 31 Jan 2025 13:59:27 +0100 Subject: [PATCH 093/102] introduce temperatureToleraance as well for thermalHouse energy calculations --- .../scala/edu/ie3/simona/model/thermal/ThermalHouse.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala b/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala index 5f52271594..056263dc4d 100644 --- a/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala +++ b/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala @@ -134,7 +134,9 @@ final case class ThermalHouse( } /** Calculate the needed energy to change from start temperature to target - * temperature + * temperature. Since we consider a temperatureTolerance in + * [[isInnerTemperatureTooHigh()]] we need to lower the startTemperature as + * well by this tolerance. * * @param targetTemperature * The target temperature to reach @@ -147,9 +149,7 @@ final case class ThermalHouse( targetTemperature: Temperature, startTemperature: Temperature, ): Energy = { - ethCapa * Kelvin( - targetTemperature.toKelvinScale - startTemperature.toKelvinScale - ) + ethCapa * Kelvin(targetTemperature.toKelvinScale - (startTemperature - temperatureTolerance).toKelvinScale) } /** Check if inner temperature is higher than preferred maximum temperature From 102d70f9ba5f00979c245fd041897c2f18029800 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Fri, 31 Jan 2025 13:59:58 +0100 Subject: [PATCH 094/102] rollback change of temperatureTarget for determining energy demand of thermalHouse --- src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala b/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala index 056263dc4d..80d3b50eb8 100644 --- a/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala +++ b/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala @@ -119,7 +119,7 @@ final case class ThermalHouse( currentInnerTemp, temperatureToTriggerRequiredEnergy, ) - ) energy(temperatureToTriggerRequiredEnergy, currentInnerTemp) + ) energy(targetTemperature, currentInnerTemp) else zeroMWh From c511fb8d2bf71174c2139be9767f35a80fbd253e Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Fri, 31 Jan 2025 14:00:38 +0100 Subject: [PATCH 095/102] rollback temperatureConversion changes --- .../scala/edu/ie3/simona/model/thermal/ThermalHouse.scala | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala b/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala index 80d3b50eb8..180fb6b0af 100644 --- a/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala +++ b/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala @@ -174,7 +174,9 @@ final case class ThermalHouse( innerTemperature: Temperature, boundaryTemperature: Temperature = lowerBoundaryTemperature, ): Boolean = - innerTemperature < boundaryTemperature + innerTemperature < Kelvin( + boundaryTemperature.toKelvinScale + temperatureTolerance.toKelvinScale + ) /** Calculate the new inner temperature of the thermal house. * From ac739806eb3e9b976e0467d6c61255f02c42b223 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Fri, 31 Jan 2025 14:13:46 +0100 Subject: [PATCH 096/102] fix tests --- .../edu/ie3/simona/agent/em/EmAgentIT.scala | 12 +++++------ .../model/participant/HpModelSpec.scala | 20 +++++++++---------- .../ThermalGridWithHouseAndStorageSpec.scala | 10 +++++----- .../ThermalGridWithHouseOnlySpec.scala | 12 +++++------ .../model/thermal/ThermalHouseSpec.scala | 2 +- 5 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/test/scala/edu/ie3/simona/agent/em/EmAgentIT.scala b/src/test/scala/edu/ie3/simona/agent/em/EmAgentIT.scala index 8667aaa84e..1c96d0d634 100644 --- a/src/test/scala/edu/ie3/simona/agent/em/EmAgentIT.scala +++ b/src/test/scala/edu/ie3/simona/agent/em/EmAgentIT.scala @@ -680,7 +680,7 @@ class EmAgentIT Celsius(0d), MetersPerSecond(0d), ), - Some(28800), + Some(32400), ) } @@ -692,26 +692,26 @@ class EmAgentIT emResult.getQ should equalWithTolerance(0.000088285537.asMegaVar) } - scheduler.expectMessage(Completion(emAgentActivation, Some(28665))) + scheduler.expectMessage(Completion(emAgentActivation, Some(29077))) - /* TICK 28666 + /* TICK 29077 LOAD: 0.000269 MW (unchanged) PV: -0.000032 MW (unchanged) Heat pump: Is turned on again and cannot be turned off -> flex signal is no control -> 0.00485 MW */ - emAgentActivation ! Activation(28665) + emAgentActivation ! Activation(29077) resultListener.expectMessageType[ParticipantResultEvent] match { case ParticipantResultEvent(emResult: EmResult) => emResult.getInputModel shouldBe emInput.getUuid - emResult.getTime shouldBe 28665.toDateTime + emResult.getTime shouldBe 29077.toDateTime emResult.getP should equalWithTolerance(0.0050867679996.asMegaWatt) emResult.getQ should equalWithTolerance(0.001073120040.asMegaVar) } - scheduler.expectMessage(Completion(emAgentActivation, Some(28800))) + scheduler.expectMessage(Completion(emAgentActivation, Some(32400))) } } diff --git a/src/test/scala/edu/ie3/simona/model/participant/HpModelSpec.scala b/src/test/scala/edu/ie3/simona/model/participant/HpModelSpec.scala index 0479798610..3622a53e12 100644 --- a/src/test/scala/edu/ie3/simona/model/participant/HpModelSpec.scala +++ b/src/test/scala/edu/ie3/simona/model/participant/HpModelSpec.scala @@ -55,7 +55,7 @@ class HpModelSpec true, 95, 15.6, - Some(HouseTemperatureUpperBoundaryReached(31711)), + Some(HouseTemperatureUpperBoundaryReached(31749)), ), ( HpState( @@ -70,7 +70,7 @@ class HpModelSpec true, 95, 16.4, - Some(HouseTemperatureUpperBoundaryReached(30642)), + Some(HouseTemperatureUpperBoundaryReached(30684)), ), ( HpState( @@ -85,7 +85,7 @@ class HpModelSpec true, 95, 18.0, - Some(HouseTemperatureUpperBoundaryReached(27771)), + Some(HouseTemperatureUpperBoundaryReached(27823)), ), ( HpState( @@ -100,7 +100,7 @@ class HpModelSpec false, 0, 19.6, - Some(HouseTemperatureLowerBoundaryReached(13200)), + Some(HouseTemperatureLowerBoundaryReached(13238)), ), ( HpState( @@ -115,7 +115,7 @@ class HpModelSpec false, 0, 20.4, - Some(HouseTemperatureLowerBoundaryReached(15508)), + Some(HouseTemperatureLowerBoundaryReached(15542)), ), ( HpState( @@ -130,7 +130,7 @@ class HpModelSpec false, 0, 31.6, - Some(HouseTemperatureLowerBoundaryReached(29867)), + Some(HouseTemperatureLowerBoundaryReached(29883)), ), ( HpState( @@ -145,7 +145,7 @@ class HpModelSpec false, 0, 32.4, - Some(HouseTemperatureLowerBoundaryReached(30343)), + Some(HouseTemperatureLowerBoundaryReached(30359)), ), ( HpState( @@ -160,7 +160,7 @@ class HpModelSpec false, 0, 34.0, - Some(HouseTemperatureLowerBoundaryReached(31200)), + Some(HouseTemperatureLowerBoundaryReached(31215)), ), ( HpState( @@ -175,7 +175,7 @@ class HpModelSpec false, 0, 35.6, - Some(HouseTemperatureLowerBoundaryReached(31950)), + Some(HouseTemperatureLowerBoundaryReached(31964)), ), ( HpState( @@ -190,7 +190,7 @@ class HpModelSpec false, 0, 38.0, - Some(HouseTemperatureLowerBoundaryReached(32914)), + Some(HouseTemperatureLowerBoundaryReached(32927)), ), ) diff --git a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridWithHouseAndStorageSpec.scala b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridWithHouseAndStorageSpec.scala index 5b57075ed6..0e9ae05470 100644 --- a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridWithHouseAndStorageSpec.scala +++ b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridWithHouseAndStorageSpec.scala @@ -118,7 +118,7 @@ class ThermalGridWithHouseAndStorageSpec val storageDemand = thermalDemands.heatStorageDemand houseDemand.required should approximate(zeroKWh) - houseDemand.possible should approximate(KilowattHours(31.05009722d)) + houseDemand.possible should approximate(KilowattHours(31.20009722d)) storageDemand.required should approximate(KilowattHours(1150d)) storageDemand.possible should approximate(KilowattHours(1150d)) updatedThermalGridState.houseState shouldBe Some( @@ -157,8 +157,8 @@ class ThermalGridWithHouseAndStorageSpec val houseDemand = thermalDemands.houseDemand val storageDemand = thermalDemands.heatStorageDemand - houseDemand.required should approximate(KilowattHours(45.6000555)) - houseDemand.possible should approximate(KilowattHours(75.600055555)) + houseDemand.required should approximate(KilowattHours(45.750055555)) + houseDemand.possible should approximate(KilowattHours(75.750055555)) storageDemand.required should approximate(KilowattHours(1150d)) storageDemand.possible should approximate(KilowattHours(1150d)) updatedThermalGridState.houseState shouldBe Some( @@ -211,7 +211,7 @@ class ThermalGridWithHouseAndStorageSpec case _ => fail("Thermal grid state has been calculated wrong.") } reachedThreshold shouldBe Some( - HouseTemperatureLowerBoundaryReached(154285L) + HouseTemperatureLowerBoundaryReached(155828) ) } @@ -556,7 +556,7 @@ class ThermalGridWithHouseAndStorageSpec case _ => fail("Thermal grid state has been calculated wrong.") } reachedThreshold shouldBe Some( - HouseTemperatureUpperBoundaryReached(7372L) + HouseTemperatureUpperBoundaryReached(7409) ) } diff --git a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridWithHouseOnlySpec.scala b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridWithHouseOnlySpec.scala index 46ad85a3f0..d5a226e3bb 100644 --- a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridWithHouseOnlySpec.scala +++ b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridWithHouseOnlySpec.scala @@ -147,7 +147,7 @@ class ThermalGridWithHouseOnlySpec extends UnitSpec with ThermalHouseTestData { case _ => fail("Thermal grid state has been calculated wrong.") } reachedThreshold shouldBe Some( - HouseTemperatureLowerBoundaryReached(154285L) + HouseTemperatureLowerBoundaryReached(155828) ) } @@ -177,7 +177,7 @@ class ThermalGridWithHouseOnlySpec extends UnitSpec with ThermalHouseTestData { case _ => fail("Thermal grid state has been calculated wrong.") } reachedThreshold shouldBe Some( - HouseTemperatureLowerBoundaryReached(154285L) + HouseTemperatureLowerBoundaryReached(155828) ) } } @@ -214,7 +214,7 @@ class ThermalGridWithHouseOnlySpec extends UnitSpec with ThermalHouseTestData { case _ => fail("Thermal grid state has been calculated wrong.") } reachedThreshold shouldBe Some( - HouseTemperatureUpperBoundaryReached(7372L) + HouseTemperatureUpperBoundaryReached(7409) ) } } @@ -239,7 +239,7 @@ class ThermalGridWithHouseOnlySpec extends UnitSpec with ThermalHouseTestData { tick shouldBe 0L innerTemperature should approximate(Celsius(18.9999d)) qDot should approximate(testGridQDotInfeed) - thresholdTick shouldBe 7372L + thresholdTick shouldBe 7409 case _ => fail("Thermal grid state updated failed") } } @@ -261,7 +261,7 @@ class ThermalGridWithHouseOnlySpec extends UnitSpec with ThermalHouseTestData { tick shouldBe 0L innerTemperature should approximate(Celsius(18.9999d)) qDot should approximate(zeroKW) - thresholdTick shouldBe 154285L + thresholdTick shouldBe 155828 case _ => fail("Thermal grid state updated failed") } } @@ -283,7 +283,7 @@ class ThermalGridWithHouseOnlySpec extends UnitSpec with ThermalHouseTestData { tick shouldBe 0L innerTemperature should approximate(Celsius(18.9999d)) qDot should approximate(zeroKW) - thresholdTick shouldBe 154285L + thresholdTick shouldBe 155828 case _ => fail("Thermal grid state updated failed") } } diff --git a/src/test/scala/edu/ie3/simona/model/thermal/ThermalHouseSpec.scala b/src/test/scala/edu/ie3/simona/model/thermal/ThermalHouseSpec.scala index 4438036f06..7231d254ea 100644 --- a/src/test/scala/edu/ie3/simona/model/thermal/ThermalHouseSpec.scala +++ b/src/test/scala/edu/ie3/simona/model/thermal/ThermalHouseSpec.scala @@ -93,7 +93,7 @@ class ThermalHouseSpec extends UnitSpec with HpInputTestData { case unexpected => fail(s"Expected a thermalHouseState but got none $unexpected.") } - threshold shouldBe Some(HouseTemperatureLowerBoundaryReached(4967)) + threshold shouldBe Some(HouseTemperatureLowerBoundaryReached(4976)) } "Check build method" in { From cb4dcb772f75e68b016d6485258ac42667b78cb7 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Fri, 31 Jan 2025 14:13:52 +0100 Subject: [PATCH 097/102] fmt --- .../scala/edu/ie3/simona/model/thermal/ThermalHouse.scala | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala b/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala index 180fb6b0af..b48b59d841 100644 --- a/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala +++ b/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala @@ -149,7 +149,9 @@ final case class ThermalHouse( targetTemperature: Temperature, startTemperature: Temperature, ): Energy = { - ethCapa * Kelvin(targetTemperature.toKelvinScale - (startTemperature - temperatureTolerance).toKelvinScale) + ethCapa * Kelvin( + targetTemperature.toKelvinScale - (startTemperature - temperatureTolerance).toKelvinScale + ) } /** Check if inner temperature is higher than preferred maximum temperature From 31efa4a55fe20a7897dbbc8eba990dff02119424 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Fri, 31 Jan 2025 15:16:04 +0100 Subject: [PATCH 098/102] Revert "fix tests" This reverts commit ac739806eb3e9b976e0467d6c61255f02c42b223. --- .../edu/ie3/simona/agent/em/EmAgentIT.scala | 12 +++++------ .../model/participant/HpModelSpec.scala | 20 +++++++++---------- .../ThermalGridWithHouseAndStorageSpec.scala | 10 +++++----- .../ThermalGridWithHouseOnlySpec.scala | 12 +++++------ .../model/thermal/ThermalHouseSpec.scala | 2 +- 5 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/test/scala/edu/ie3/simona/agent/em/EmAgentIT.scala b/src/test/scala/edu/ie3/simona/agent/em/EmAgentIT.scala index 1c96d0d634..8667aaa84e 100644 --- a/src/test/scala/edu/ie3/simona/agent/em/EmAgentIT.scala +++ b/src/test/scala/edu/ie3/simona/agent/em/EmAgentIT.scala @@ -680,7 +680,7 @@ class EmAgentIT Celsius(0d), MetersPerSecond(0d), ), - Some(32400), + Some(28800), ) } @@ -692,26 +692,26 @@ class EmAgentIT emResult.getQ should equalWithTolerance(0.000088285537.asMegaVar) } - scheduler.expectMessage(Completion(emAgentActivation, Some(29077))) + scheduler.expectMessage(Completion(emAgentActivation, Some(28665))) - /* TICK 29077 + /* TICK 28666 LOAD: 0.000269 MW (unchanged) PV: -0.000032 MW (unchanged) Heat pump: Is turned on again and cannot be turned off -> flex signal is no control -> 0.00485 MW */ - emAgentActivation ! Activation(29077) + emAgentActivation ! Activation(28665) resultListener.expectMessageType[ParticipantResultEvent] match { case ParticipantResultEvent(emResult: EmResult) => emResult.getInputModel shouldBe emInput.getUuid - emResult.getTime shouldBe 29077.toDateTime + emResult.getTime shouldBe 28665.toDateTime emResult.getP should equalWithTolerance(0.0050867679996.asMegaWatt) emResult.getQ should equalWithTolerance(0.001073120040.asMegaVar) } - scheduler.expectMessage(Completion(emAgentActivation, Some(32400))) + scheduler.expectMessage(Completion(emAgentActivation, Some(28800))) } } diff --git a/src/test/scala/edu/ie3/simona/model/participant/HpModelSpec.scala b/src/test/scala/edu/ie3/simona/model/participant/HpModelSpec.scala index 3622a53e12..0479798610 100644 --- a/src/test/scala/edu/ie3/simona/model/participant/HpModelSpec.scala +++ b/src/test/scala/edu/ie3/simona/model/participant/HpModelSpec.scala @@ -55,7 +55,7 @@ class HpModelSpec true, 95, 15.6, - Some(HouseTemperatureUpperBoundaryReached(31749)), + Some(HouseTemperatureUpperBoundaryReached(31711)), ), ( HpState( @@ -70,7 +70,7 @@ class HpModelSpec true, 95, 16.4, - Some(HouseTemperatureUpperBoundaryReached(30684)), + Some(HouseTemperatureUpperBoundaryReached(30642)), ), ( HpState( @@ -85,7 +85,7 @@ class HpModelSpec true, 95, 18.0, - Some(HouseTemperatureUpperBoundaryReached(27823)), + Some(HouseTemperatureUpperBoundaryReached(27771)), ), ( HpState( @@ -100,7 +100,7 @@ class HpModelSpec false, 0, 19.6, - Some(HouseTemperatureLowerBoundaryReached(13238)), + Some(HouseTemperatureLowerBoundaryReached(13200)), ), ( HpState( @@ -115,7 +115,7 @@ class HpModelSpec false, 0, 20.4, - Some(HouseTemperatureLowerBoundaryReached(15542)), + Some(HouseTemperatureLowerBoundaryReached(15508)), ), ( HpState( @@ -130,7 +130,7 @@ class HpModelSpec false, 0, 31.6, - Some(HouseTemperatureLowerBoundaryReached(29883)), + Some(HouseTemperatureLowerBoundaryReached(29867)), ), ( HpState( @@ -145,7 +145,7 @@ class HpModelSpec false, 0, 32.4, - Some(HouseTemperatureLowerBoundaryReached(30359)), + Some(HouseTemperatureLowerBoundaryReached(30343)), ), ( HpState( @@ -160,7 +160,7 @@ class HpModelSpec false, 0, 34.0, - Some(HouseTemperatureLowerBoundaryReached(31215)), + Some(HouseTemperatureLowerBoundaryReached(31200)), ), ( HpState( @@ -175,7 +175,7 @@ class HpModelSpec false, 0, 35.6, - Some(HouseTemperatureLowerBoundaryReached(31964)), + Some(HouseTemperatureLowerBoundaryReached(31950)), ), ( HpState( @@ -190,7 +190,7 @@ class HpModelSpec false, 0, 38.0, - Some(HouseTemperatureLowerBoundaryReached(32927)), + Some(HouseTemperatureLowerBoundaryReached(32914)), ), ) diff --git a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridWithHouseAndStorageSpec.scala b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridWithHouseAndStorageSpec.scala index 0e9ae05470..5b57075ed6 100644 --- a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridWithHouseAndStorageSpec.scala +++ b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridWithHouseAndStorageSpec.scala @@ -118,7 +118,7 @@ class ThermalGridWithHouseAndStorageSpec val storageDemand = thermalDemands.heatStorageDemand houseDemand.required should approximate(zeroKWh) - houseDemand.possible should approximate(KilowattHours(31.20009722d)) + houseDemand.possible should approximate(KilowattHours(31.05009722d)) storageDemand.required should approximate(KilowattHours(1150d)) storageDemand.possible should approximate(KilowattHours(1150d)) updatedThermalGridState.houseState shouldBe Some( @@ -157,8 +157,8 @@ class ThermalGridWithHouseAndStorageSpec val houseDemand = thermalDemands.houseDemand val storageDemand = thermalDemands.heatStorageDemand - houseDemand.required should approximate(KilowattHours(45.750055555)) - houseDemand.possible should approximate(KilowattHours(75.750055555)) + houseDemand.required should approximate(KilowattHours(45.6000555)) + houseDemand.possible should approximate(KilowattHours(75.600055555)) storageDemand.required should approximate(KilowattHours(1150d)) storageDemand.possible should approximate(KilowattHours(1150d)) updatedThermalGridState.houseState shouldBe Some( @@ -211,7 +211,7 @@ class ThermalGridWithHouseAndStorageSpec case _ => fail("Thermal grid state has been calculated wrong.") } reachedThreshold shouldBe Some( - HouseTemperatureLowerBoundaryReached(155828) + HouseTemperatureLowerBoundaryReached(154285L) ) } @@ -556,7 +556,7 @@ class ThermalGridWithHouseAndStorageSpec case _ => fail("Thermal grid state has been calculated wrong.") } reachedThreshold shouldBe Some( - HouseTemperatureUpperBoundaryReached(7409) + HouseTemperatureUpperBoundaryReached(7372L) ) } diff --git a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridWithHouseOnlySpec.scala b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridWithHouseOnlySpec.scala index d5a226e3bb..46ad85a3f0 100644 --- a/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridWithHouseOnlySpec.scala +++ b/src/test/scala/edu/ie3/simona/model/thermal/ThermalGridWithHouseOnlySpec.scala @@ -147,7 +147,7 @@ class ThermalGridWithHouseOnlySpec extends UnitSpec with ThermalHouseTestData { case _ => fail("Thermal grid state has been calculated wrong.") } reachedThreshold shouldBe Some( - HouseTemperatureLowerBoundaryReached(155828) + HouseTemperatureLowerBoundaryReached(154285L) ) } @@ -177,7 +177,7 @@ class ThermalGridWithHouseOnlySpec extends UnitSpec with ThermalHouseTestData { case _ => fail("Thermal grid state has been calculated wrong.") } reachedThreshold shouldBe Some( - HouseTemperatureLowerBoundaryReached(155828) + HouseTemperatureLowerBoundaryReached(154285L) ) } } @@ -214,7 +214,7 @@ class ThermalGridWithHouseOnlySpec extends UnitSpec with ThermalHouseTestData { case _ => fail("Thermal grid state has been calculated wrong.") } reachedThreshold shouldBe Some( - HouseTemperatureUpperBoundaryReached(7409) + HouseTemperatureUpperBoundaryReached(7372L) ) } } @@ -239,7 +239,7 @@ class ThermalGridWithHouseOnlySpec extends UnitSpec with ThermalHouseTestData { tick shouldBe 0L innerTemperature should approximate(Celsius(18.9999d)) qDot should approximate(testGridQDotInfeed) - thresholdTick shouldBe 7409 + thresholdTick shouldBe 7372L case _ => fail("Thermal grid state updated failed") } } @@ -261,7 +261,7 @@ class ThermalGridWithHouseOnlySpec extends UnitSpec with ThermalHouseTestData { tick shouldBe 0L innerTemperature should approximate(Celsius(18.9999d)) qDot should approximate(zeroKW) - thresholdTick shouldBe 155828 + thresholdTick shouldBe 154285L case _ => fail("Thermal grid state updated failed") } } @@ -283,7 +283,7 @@ class ThermalGridWithHouseOnlySpec extends UnitSpec with ThermalHouseTestData { tick shouldBe 0L innerTemperature should approximate(Celsius(18.9999d)) qDot should approximate(zeroKW) - thresholdTick shouldBe 155828 + thresholdTick shouldBe 154285L case _ => fail("Thermal grid state updated failed") } } diff --git a/src/test/scala/edu/ie3/simona/model/thermal/ThermalHouseSpec.scala b/src/test/scala/edu/ie3/simona/model/thermal/ThermalHouseSpec.scala index 7231d254ea..4438036f06 100644 --- a/src/test/scala/edu/ie3/simona/model/thermal/ThermalHouseSpec.scala +++ b/src/test/scala/edu/ie3/simona/model/thermal/ThermalHouseSpec.scala @@ -93,7 +93,7 @@ class ThermalHouseSpec extends UnitSpec with HpInputTestData { case unexpected => fail(s"Expected a thermalHouseState but got none $unexpected.") } - threshold shouldBe Some(HouseTemperatureLowerBoundaryReached(4976)) + threshold shouldBe Some(HouseTemperatureLowerBoundaryReached(4967)) } "Check build method" in { From f6d905220b60d52a2096ebe9b7072d7292313db8 Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Fri, 31 Jan 2025 15:18:31 +0100 Subject: [PATCH 099/102] set temperature delta to zero in case of negative tempDelta --- .../ie3/simona/model/thermal/ThermalHouse.scala | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala b/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala index b48b59d841..71aab31671 100644 --- a/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala +++ b/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala @@ -134,9 +134,8 @@ final case class ThermalHouse( } /** Calculate the needed energy to change from start temperature to target - * temperature. Since we consider a temperatureTolerance in - * [[isInnerTemperatureTooHigh()]] we need to lower the startTemperature as - * well by this tolerance. + * temperature. In edge cases the temperatureDelta can be negative. Then the + * temperatureDelta is set to zero, resulting in an energy demand of zeroKWh. * * @param targetTemperature * The target temperature to reach @@ -149,9 +148,15 @@ final case class ThermalHouse( targetTemperature: Temperature, startTemperature: Temperature, ): Energy = { - ethCapa * Kelvin( - targetTemperature.toKelvinScale - (startTemperature - temperatureTolerance).toKelvinScale - ) + + val temperatureDelta = + targetTemperature.toKelvinScale - startTemperature.toKelvinScale + val temperatureDiff = + if (temperatureDelta < 0) + Kelvin(0) + else Kelvin(temperatureDelta) + + ethCapa * temperatureDiff } /** Check if inner temperature is higher than preferred maximum temperature From 977a468e0636a4135abf1c8d3ee06b95bba15fcf Mon Sep 17 00:00:00 2001 From: danielfeismann Date: Mon, 3 Feb 2025 09:25:08 +0100 Subject: [PATCH 100/102] Include Reviewers feedback --- .../scala/edu/ie3/simona/model/thermal/ThermalHouse.scala | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala b/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala index 71aab31671..ff2981fdfd 100644 --- a/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala +++ b/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala @@ -148,13 +148,9 @@ final case class ThermalHouse( targetTemperature: Temperature, startTemperature: Temperature, ): Energy = { - - val temperatureDelta = - targetTemperature.toKelvinScale - startTemperature.toKelvinScale val temperatureDiff = - if (temperatureDelta < 0) - Kelvin(0) - else Kelvin(temperatureDelta) + Kelvin(targetTemperature.toKelvinScale - startTemperature.toKelvinScale) + .max(Kelvin(0)) ethCapa * temperatureDiff } From 71d770b2986b8e37f949b06f092df54bc864da2c Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Mon, 3 Feb 2025 11:18:41 +0100 Subject: [PATCH 101/102] Adapting results of PvModelITSpec to new method Signed-off-by: Sebastian Peter --- .../model/participant/_pv/it/results.tar.gz | Bin 0 -> 391184 bytes .../model/participant/_pv/it/results2.tar.gz | Bin 330969 -> 0 bytes .../model/participant/PvModelITHelper.scala | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 src/test/resources/edu/ie3/simona/model/participant/_pv/it/results.tar.gz delete mode 100644 src/test/resources/edu/ie3/simona/model/participant/_pv/it/results2.tar.gz diff --git a/src/test/resources/edu/ie3/simona/model/participant/_pv/it/results.tar.gz b/src/test/resources/edu/ie3/simona/model/participant/_pv/it/results.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..4b63109e6318efb81b25557665b04a9c3cf3d417 GIT binary patch literal 391184 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%0DwS$zfV*Y z#6$gvYR#m2`uxUMfZZ1dQ$PWnM~u@B%#-^JghF7R#K6bk2<&3~=Xe`0CvB&yc~-^F z6>D{O+JpvP;8TT8-8`Cs;0li4TnbY<&)`(yz*j-o0o&>8F%GNxZa1rKwLnO6a1p1J zHZFi6p57z{D!PIvEV`*BMJK$f?MU7QaW61t*RT#<9%F=AQqx4cTSBXY+IfhHdcMYw z#t6+<3wWDjQ|lARL+?L?!OPKqn9j;tmX_UpMSXQa|HgpSxAT6ZHB1C zz9O2mTi7B3brg@ttsS+xVhfSz%oY4RgR?cl+<_(a+C(>MPFNc0LQf+_F5swvku?H^aRoFlT7z2|Vd< z4S&XK=v}%j?`NOO!0`|veO8S|=~5Gv^XAHCZQzU+<;1)mV^|pqRAoBkIT4YJ4f!98 z+2r$LTP4N@yw=!ZVj@NS7Ct!X`5rvHibXQ+McKSzTNUHdeZi7Q61r@UfhGrT`5GAE zOPW^0aRVeWDFQT@eu7ZRwv7Yk+cNiFocjrNDPFpeu&U*_yMlFU7p*X=s7v~=^DLfb z#Z_cwWQ9cGNaGLRD<~kb!Nc1EfK=p#z^s)TXWccN%kW8Hr%Rr)5X5J#3#A;2FAq$p*3UOS|IG#nU*f6NSj0*3w_-xFx`ynF;DlQLpT!?i31L?;3 z5(eIt$7*LZ;=0(vk*N(E$IdsGotcT>Yyfwbp3?QO`N?T#_hF%omuptUYw*uP8A6c9 zrWqaGC)F_Gqj@RD8Q*=M$Jso^KW(kV3}O8=?mUg_ZkiYpDmzLf1b1x>M-50SO+(PW z*;GtR!Ku*aX19LoH5<%)0D!c=Br88u89*daJP-5Hhs|GL8X@h)MZ7@$I!wM7ms#LT z7)$0_l`6kZjJBB_xVt1JE8O0p^YL=$8YIi$nV9?a_?f(cB;?N1hG^V*l_5#y`#I zJajg4Em&bl(N6I^i$|lEHR34bKv*NLxkP8W$k%T}eEI;yTHNGf`{{cT;;waIsAP^A zHVO&Gfii8@eotU1UchWtj!b}*0Z&|kY-D|I^G;b02bC=lrq8oD4HqsMXW%M|Md0E% z0q^5CF?XgNv4Im5_hrb`*i8`}3t4AW;*m_c0T0v^63zAcNz}MnC-FcqyB|~%A8(ED zB!2bB@H7S`K%sPK=P5i57r=QLvSA8ruQqI%pbK`gwH6*@70nreOPmSmfDXW84q zij2OZ78(}d4(L`b3Nw-?QQN>O(R#Wg&MLf-<6xiO3hYTi>qWGepGHEWsgM@s`NM4a z6}y5QYhCWUtz-NKOV(97G0z#>KwzY8AvSAy)aOweXs45Q7(BcR@JVf=SK=(hQKX5c z^gR5ttHUg<$|Xf%Q1-hbevt{>JQUAg3hP$VOa$q-oe5~IF^1*kwIMaTH*>{^d3f1w z3tUPbLrU3oUr3q7)0h06SwDKLM2nk}^6;+nQF*p>^RDt5F`doZnNVr1bk8X}?GU`4 zsG>}-u??+R)gc5i9QU*wcU%%kr8WoFOB7&U(^syT~Y`_-oku z`a)Y55nz3+uK~o!x>dc*W{mGYmN7$gM`;GlZohEjNL)>Xm(pi;>9zWo|nLHZ^>x91obw$t-!W-)R< zkN@e_hRZTzDc(Xi0Q_Nwi0~;x55~YSsrTbO>^(dmMw zVod3w9+o2L^hok;JGNM9xrLNw@Ke)M=CK19Rk9cAT0{xWLCgrI3hlz%2+_>U0OHX4QwsznahFo;Jz|0LWV+ky!mP8pqqn7~9n9PlZjnauiSc?0d1C!ayGHzAq@0Z&_P#g_z%YMkCQgy~g7m|r!7`Bg)h zUp0jJRYRB`z8J7eX4eNr-!6CK4_jxfgJ5*b=U_1?G31I8_cFKN>p&Lsg~fM18h(@; zUx@WS!E1hr=M#=3YN%SB|Kl*C0uLUqX~B;MN|fhKslg)sYzXs@)gDw5R`?-E+u?;# zI`}BQ4BOqmyFw4IJ;q1WR&b_F!jVD%H!XG|1iWi!qW{oHuggE%oO)Az^oCxv>EV4B8x8fX8<)CwaZV90G#6{HBJ zNQxTPxt$^3L9W;x6~f|n04)RQLeEFjy}Aj6D07pf?Y1%BT)&&FhikbP}njL`_5~_!qs*$+sb0Em}Qr|8&``!Ohb5K;X?4D=v=>Dqk4_dnF&{{lB z22ns*;Ck=^w{dPtQ4(m6d_kB|yOE#)&&sGjy2I3D$Iu*}f+5`1Z%gr8w-Nwvx(XLz zvWt(RyGZ`}?KelfRXtAOnMn$IgNTB)9%Zi;9AB1J&*-bslR2vdT?rIFE^2u^LJzM!d2_%^Bmn9& zz3YngW?wIkBdS6?$pyX5RckPfnm&r;-D7^=6aqBzrB||{>@eU>vu&Z*H z>2v2@x_8fpU_LwHqJ^@S zDqmv%6$J=e?Nf##-oWvKrey2<=Ssm4M~}P}h03#rD;tzixq3pzd&IsGifoe`mPxu{ zJR5S{AxD@<$f4%>;Gg{<=XuA!vtBKJGJpjbo}B%Mqg2c7`c`jCXpd5dOrg-CB}X=7 z-8LWrAQHPDaw|x-=Orm#W`rg14PrR&JfH}`g~jysB`~}X|IrRY901I3G8$T&5Y`++ zc~}Ih`F+B`f=P0QU1!?3WC(QaEbj~HLnoXdU+|K9oyE|RybqR2*;TD>aNM?yjATb} z<4b^SlC#!G{XG6hGswVZD7G3j$*dG;E}@Hy%&pv96I8YW3YbV+utw%A5AIwoKKaJ% z&V+K$TH3Bu*si0bj5wWprx*gw2&m0`B=^( zA4U%gp*A~{fF3R}4^48~Hus(}OV{jZt|i%`Fs?UTRbZ8_cc^1`j1Y0&LFJR~c98!D z#S+XDL5%loBzF+L2zMeAs4E;y2tVdHhjCYLfNo#r_woh#YoSc!(X8ku!jDe#l*oek|W5O5Ue{ri^i{R zaJEVqG_pd|)vhil{lTkIycw9^`1Dm^07-%Max8KuhxI1*Ka+3%NjGDUKs(Sx4 zPDVlW3iv9H=)`9eIzS4NudGi&O(UfwKb&%Tp32b-Lj4%*CyLnHO({HiEd3cSU`FTG zEGuA_tBF*~`aIsN3!EjuYFVEWcYvD>oaOFMmC5Z~xWxdE&rWtj7D6@A_Th9@+G~UqD8;DcWgfFi_eK zHIycKH7K+{8S!mXacfW>u#>Q~$|H~xg(`W>6l&}~=xud5fm{J`cOq#k~Zq(V@UrOwCeck344$MGSCg(DDo4>d!V%!@!baU>5y{Dpk zr&t(^$4PoH#-e$so5^P?Tn$~xr5v~C_)D5v5F_@WtvMOu$wDbKodM^e$RXq*v3oAz z0R&f0BS;f7kL9}uy=&&G{B~HnxJ2=~lE<-#R=o@9O$mEp`Kqrx06ULtL}rd}chx8u zIz}2xkER?T^!5UC91#zC-LHv8C_!u|H1YWMPYjq8$OgeKQrTD_kQ}I;6|wOs($j7L z!R<>t%v8v5T+>Fgt0 zBS%?W+s6-qo|5<_aPBO-5M!2jEgrAY=K2p36dkFj6PwYkKo4#h`?!lteE)slP@WSX zkUnzb=d(+qz)-&10NU%`WXAQ7O+l1hx+NB+Va8p|>%ffhKv|Cu&(Eb3d$sc3c|Af; zEZ9m4UqG#QEVXx>#pE;F5wmycflcqO2t>NhJIu+#F=JPXJsHSDb29J z_ed0LV0|#0jOl-`quVu?(TxerTxEJK;0XtZWTX<~*(VG7tmwassg(i9RwJ16jMQ1* zr-Nxk$^9yq#`3_#Sf_YvP+{(jVTLqYvO2UcY7WdIQC+&L(TYCFF+sg>Ad!TUebNVGQ(6 z4Qwh1uIq(n4;)|~OYgnU%6k`-OJ-2|T*ea@u2C&*YmEGR0GMwKFJhkK_217Dvngy= z#+^qw-;4;H9;f5HK=<|2*_KE~fS$9~@NfWGk~Yt-XX=B-eb__!#F{Gx19vY2NKg#g zdM@MTzkY0)i6(8_IhAM{o*Q@`4I6)oGMVZ`n3L|*UR}rt-q_`%8kI!OSroHkOrfFh z=BZ^85x4lL9*xVs$Fq=S59PYd_-MO~(w2veVSV930e0@3iRD^yA3am2gs$m1*36BE zc9eJ#iYztGGqmR!IW7r_>tQ^|+N-D$jkg*-@X@mBjMk1C6wZk_^rorSmU4P9v(`Up zUqlb>T}D2U;S_*wn#`W4KG--S0ndTtHUBzLN!!5$PAQ=a)nVBrzi&(qLd_b@t&jMN z4#!$Q4Rg1>`nsZ*eC`@5CeT6YvO8$%+N}{!A$laR^1YN7GSsG>W5R_JR{&LPI~H$D z4mt~Ul43lXm#mJmLU3%jBcG)B+=l-3rkJqpgctkKf65_y*7;|lcJz55sx3Y5%3AKT z#4&>d?$YxGFQ04q2}Jz@4%eT+;r0_a+Xzp-w7n4`SiYTFLt5>e<%%a=2)5^U6?i#&PeGdlBF?(OnI;Qpe zPpz(rv+_`yv6x|P5uIyFR)`=a0W3*#G8Qkzd3wZs1>57shon_|d}~nQ3tDB{ON<8| zV26imGGY$YjCKx;&qX}pVWN(;0XLOIm9={;3)aj9&%2jS$b?P+^tW$QvMu#jrheEa zW9ck-zf+Jft1gx(KRZ5-f>7`{BBD12_bZT1YW}7rmxRMyd!;GaM*)%rzRS7 z)n~X12Gix+!n!I&4KXfu9eF*Ce4RbPux&luOqf8aYG-rK0$S9L^{Z@ zDr-*>HDq>qt_@kAYj`F48nwrb#lW(xD^8)rRDrGLE+cs`(nAg1Ej>Q;Oj6Yx|BA7~ z)uLylu7O?)AV$i@<7SQdLry>gZUHlM;6NV}a@a6;3-7pHw8sM8W5O-^eY}vZKS}1N z8VZa9&LS^DLZbm3!Rt^Vzt}NryV!B~uQ&q%802^OP=y;?@y^U7aZ6t|J?!#1i%BdR zy2@_YW3xz12d+F9@R}5w`R{RptJ;|GjhO1h?A)gg@Tg?jkx<0kxSg*d!}v==SuQDn zV5kAYSxcdYS8*`Tp;RkUa=X6?5g6moccYtj|6P<(J9d0s{UwtT&77AO40uZ0RcpL7n!xar*B7&3_t3|Xs`gsi{O zqZV69UFbop`lR35yY$t_kw;B(8w>GsO5}pM#iRGpT-g4}l6#`?J!-lox#?s*2d|89+$o&PmrL;)6;C-{->gx%AjMe_cSFKte z)8!Ow+H#Z`5)%`e-Y{&sm1j6Yr&&2&*^2}D&b;I&oeX_ z)<^dXm^?MXceGOP1K@=R(^I8qal5wa1?Uk9atoW&0ekOuAtp==siaPpb2U>TRC`nW zF6JC!9h4M!Q}g@Uu;f}JcG!mMo6iyXVi%mp=OB$37>R_gwEctUB0eYa`nSnU(y_te zzej8vA({_c)6XBPwqr^}Yq09uoM%yG=_tV$E)r+W3Ef^qWCQ7~a+~->swkK{&G)2X z|I;W>(}X3$QgcF9IUJ|amd9m&my8cIXkRp~ z;1o*%oXlCI;(7GZrg)^p)~Mk+(bZUd;eCtiF%E?sy}*7s@`rIN0br{_b?;fiG1jZk zpv(!6x4q?KA4?*l8RARR*gD@<#}@N2W!oDHZa+c6?I$R>{R9Q~pP=CW6BOKkf`a=` zP;mbj3eJoI!sKLqTxC0F2c`xJhE0F){M(bLp_jyxWV&BTk;?j%q=NHNU5y3(i5eHT zsrLu8qbY?(qqMDJm=T`%Ia9k%YmM#|rNVFKQ0Rx($bA1tLrAPES4iIRA)@$e3YHu+T$D0{g!CgC!t9tzd1^T5?9xZE5(+hEB zj_#k#=bx|rj$CWI=@AFUbV%>ouF5@SsyKqupcp-_`d7)FDG`hRW7>5&5#3(^nE`K}b;xwXt7!TZ zu4ITZ*QVzho-UmBVM#fAwBHq*%RhZJ^rjB&Rw^ECLpiJ}<{J6hwKth|tZa?Y2ew?VwOs6` z#9j|EZWJ!~ya!K=IqRD8Puda)bQk~RZ4{7ibMa?2;>%5}ER(Ga^UR+P3Enc%>GwfRjV8F+_p5nDyhZp zhj_Y3)3U24a^2?&p0NeWQ?N`N;9erLm8X<(1k;9s$^30*iBev^xr$Uyg}N_mj*Ybk zlqKqGXsb=Hqt7?T_+wH57XZ!R2))DTZmra~J+{V6{Hu=rbr0s}i@b3>oFX3I_p&2x zFQtr3W)j=bGskAJ#N?dqSuQ(YqvG12_ zwwFU^hzSPwYellpVS50BM_Q)^l#vFA(h=bAFVBo=iVi?Az43cOTJEOA(jriWIP>@pX znfLN>R9vDotB>abUT!mMEQZo%+mFxe(K*JPm{6?yNtrsbGIc<1TjkfJc@b50`=onB zH(nG9bS3PdqmFI{KzI)fvWpTgU_I@FP=zaaBUEQon3XQ}^$5MZW`unQLgvaZnLSd6 z<4Vz>j(b-M(2sEeKp3{la^lqJIlY!^LLu&2sy)U@JYY-KP0bDL7!1r&oo>}fV!dk; zk9j#4g9yQl)d+1_yYJ6ce9q(TFaBIXe{0)(zWHm3hHn+tm!p@<#(7Y?9CgF)Lqu|Q<&f>rKY`4K=tbP*tn$xotUwP`&OiLGnDRC|$jMc`xGuH8EeMqwJp5X)LHY#b5eh8h}sN0U-x{ z4z;xI^M^SYD(>NT&yGJ6r8gyNusw7gC&V93`o)n6YW+b}dlrZrzR$K4Z1$1fnN>p8 z`R`JGf@Hry&HX2+dHe)5kDs9C@e|ZMeuA3EH`Ht>53|}_=+HU+ywM{^{j@!i*liWl zU(Dc71~T;VLv?>9DWJ<5lghOlMaAn}Nah$-cs*~S4 zHo8P~5BtjV5jy^rCn_F~Q6LcZpu=#5qHU-APpBKy0le-rD#% zHIrg0yvBzk<;DFS=&Bpg<&35~+C#3Lu?>!qm~Y*%ZC1L=^IW?f1u^~3I{%2B*zy@V zI=XYH#wcWeF5)?K#G+Dug%#KB^iPSlI*(iVM8MDOanKClY*Bvlk(;NE9?cA{A5O_M zquXbyK35N%90a~s+z-nq*MqRKfzF9J{nVw2xk2(YgcUq&=Z=47j-yDqRxTQ*l?TO= zNvc5*1KcV^IE5h3hU-|>RiffV=?rD2P3E(U@!R&E@pVk`)Yz7!sMgmXWe|>%hE5Fr zPPCooz%m>wnxp5}f4kD0Q8vYu@F-nkJGg*|_6Mh)$riEOhEcQ&QMwkoa|Ir;IQFW- zR@2J}N{%a@^8U>&Jw7*EkL2RY5DlIQQ`pYWv{5$T?$RW_d49fOZ=)K8WL(Fw$!=TG zJ?v8s2e`eJpEnw9dgjFy)V#~1MLVpiTb>?#-sS|K145PMP2*zx7A;@V;7}kr039K# z-xXMUdf4hsQCvR1{BzPMVS0rv4`a!0i32!j8{<5b(@%Sp8m3SY=|0>FK69jS^&LO7R0VYtPKjL2%N-DnG|OTS@1!P@ncJI^&h=?&jq~XiLFr2)Nj*eDkvnX z5mv~iR|{x$N*UtT{Y4>+UEf{Tm3qB5GfNAc$@ zo`Lp@$@&p9ooRbLOYh+$5;I&Vv^V_l25%U+XdR2s?hs3Nwms0k+LSc*LWJmI$8Bme zm-{F=kM61vzvIT+LmY+F^f=|*Ag(XGGs@h;(>==yeM;s!OKE{}`|w)D=S)5>o#Mja z1e4=Cn2SwKT)@%KPrs`!8yhC@ppVD(yJxE^;cyk327Ou8%RUhzwI%}R{?+N?P@j?2 zuU|=G7-1%PYa$(%Yc7HzEbP^Q{h!+L3lKIqw}nS>q~AY%m~g}8--Ud+ol{{yp}pt)(UxD)Dbi#u*mfd65naTlYOcC{ib=LpF=;BD|JOEu!UtZ^ z#TA@maHK`Tw_@(jv4-zMNKBmQdpSR3&c24pcoq52mHY&pegTBXPk`|J2@sw?0mAbq zKzRNH2+x0Jk4sE3oYc6EduhOR;@L~hSKeM>5C_S*h4P2w(Q^#e#fUrI-+sLm^+e7SFHrB(NUI z7T`wU0v}~`s;Z)9zLaS9jy)$@erMcuoHZt4%fWDwxp})j)$ltJb_AfA7M8i3(|901 zyG8chL1&AGf>cK_qdY6t>_5}zSFj1*qzi>8F-s+IOxn;r^0%SiP3~gC+d3kfsKOUE0d0%zfKoZmsYXrGz{PVF zPe7?+rQ6$h3YLesFpc);nSh*ompF1v)4?SdFZAKGNuVBlfB$9(LXtOl$#;QaD+f?F zS~0XU6RUTJnW;ECL!-4PU@{J$(jaB1^l0v%|4>+0jXGMCbFWZE;!2vqR)>((*R*9z zB$t8TQn3{Doz{eV6n1Kg%>~*gW*$7^fB&3x6CQAGn=gYIoR*i2aK_^SkxdxUL zI^18=!YsAaW>9IqHYJ?q#*`RovCmQw9qaSkzfk4O+??eX2y9#V)6^>S>X zM`p%o9C0tdK>?MHU#zJ4Ei~{m;f4LN5DJZx01OQkGLcX$OxrbF+}R>^nxOkLks4M`;~LHTlH|kVNkc#Xu|MT=Wt8b27714D7e@yQuJSL^J&^fM zi+fg3sDn(X$Qg5!{xhfFo+s|&1|}UXx3>cm~s4lMUE>{aMF>e z=tHB>!0#o5j{AoiiQeEd=DW|Y|ALY%Ulr~WR*uenY?y7wBF?gjmVdGiLZAJvxB3FCb_##yE^C5Px#)aZCouifVfCHEm4 zuf7yQaBsM>02077CFs7snb9U~VxoA8Mm~lI-gfx$%7&~Np6N`~{hPX`u;jSKXjFJc zCk6@5aja+ui2%HzWSUz?RH^gp7<LWrcUl-$OrhF4PZVO@eL$7 zcAZPcY}0;zO(IOyz}Z3PZPKF!l8H`ZDo$eY1q8=r&a+A5Brx?KYn`pCCM22u<8;5` z@2UjYz(zC~eB7Aq4Br!x(9rgf%g^I=JHF8*52quBv3k;5`SkC%nw%`^oNJPpa6~G1 z5$xl~q=#pr*OO6h!A5MQMY6pIWv`!R{0k0e!Bw{|LyDRl3qub8h;jICT4=1gzN_ai zFgfQ%UZ`+&2)3Wn>9N<5`uhYhdO#z2w}sim1-1TNRshA z4`DKpxqkI#2VV8$SRcE30Y^yRpnm&j5kKLrUvT943yvIzUvQ*<^}nynzxv0HeJGsIJEQcN1vF!*TAMaeTh} zMRwrO*JH_0CeYgDr|#A$5BL6n@k;yUB6@7E7!|8{L&&7*ITO)|YN|NybJ{c+Qfwb7 z5{hu%N1dzB0o06O9S7j_MNwC%y zojyhjT7HR;HXyQjl%s%*(-Ee@bH7ycDk8)wxqVs>B#c0uJ{G{*Q zD3v+ll`+pM`aYSs$)Dk4P5b%bQj>m98R;0|)*_f8@D)76H(Q@;c%sKKGR$Syy4B1$4H9jZWZ3k9@aXrQ-~utv894ks=a# zXz!&&->L!~=ESMbV2L`uO|8$%_%(W9Z@j9=S|sE-EoOhD4A!@kbFDxER|XC-hh z-78ab0_V{fvwZpuKGY-=qV9B2Rn{!^OjgCG^D{*(+1`lr&Sre9-~}JiQX{}w6N`7_ zM@3F*#iK{Ft{TpfV&KonIY5!m~cWK^ZUQjGYqO2yy4oH$q#=UD0qzfQjNKw7N#1c!^IBX;w2jo(U90` zS=etG$SxIn z#jVECobmUzd3%2U7ktFO*AT>6tmJSFhDjPl{CVo3km%5A5ku{%rq}v)nHlO^mBG=% zBNa(vP8;Bcj~F8(`V3Rw57)NUZv1;!S*isf0sOYZ&)&e}xr@HjGYlsf9O+-w^kxgE zJhx>km+m#9?lT<(4^`zZhW!y$(plXLmNXN8dY!!LwlVhhDjWu2dv{=!WXT)p2#dFX zwpk1!k5hMi?mzzyBlV9W!<2e=gCtmwl8lr0{uxG|5s?b8D=ZSX^tOYT-RxbX5J&BH zLTi2Yl!-|wt1TUocdOwsi8k4VM%JiKgz&nvU1eHR?T+PgwbI=i>L6hz z!y#eR9NJ%t_;yTU*=JOv}pYK&pE$cupI3RMg3jtUyS? z_d{MKLtQMg^N+H5iO<^MwuR$8@jg z(xsPGCa)g@b%|_79eu9l8$g~{R{4P`CD+kP@~ly6&3#G@hnMclpPPFK9LC5)I6vg){zB%Krcb z{i~lK(=SkP{0Rz-$D43a@o9fn)_TLZF92FM|r~huT zFAr0S2orY&XLqQ9B1s`9(}kWmC`gVowxYB&6o7C--AoAQ`=E;f^8^`C&*k*p}gDpr~tSdn;p@Wr!}z^j?-7*y12}jamsy7 zc&x^7XMqUsdjb+MhD<}NvTbBgk5|F|esFqwyP$N;jD}8tW`%efL<+_7d^e8g}hH#bb1%@LvYg;u4}Z)RXu%9kz$r zrxpC;Pty=aI{-{lK6%TcgEgGY+xH&B$XP7BK0YpIH)Nd*lZmf2z|OLe<4?ZC1b69j z`61oBoVnn5!RF0eynUkaPpLeGkq{{OfcDru*YJR5!AOo{x48UTcJzpWrfgf6;TxKb zv6egxV!G8^M&Nh&(pDo<-64hf5lj$D&iS`^s?a?_w0n}2V~_=KOzn=Y(sj_crA}P_ z7S1ovMLZ5-17?>pq;J&k0z`P9kgt}`@;Tz=c5GJ)6?3gRHG>AZootoV6s@LCGxa0$ zSIt1%hN~g9DwTHPa?$qWk*`K%Rq~f7zoD0Q`yr{0E+r1=v*X0b}o75IU zLNXGaxy>f-3~%Z=6>H0Q@I=W~`B{Pe)14K0SJI;rGa1sfgHOU+enkigbG?z@t>62< zm$i&Yl5LH3t3dnlpD*weX88q+jXz^g?DRh&WV*yCHws%h`cbyo|X2Zmlojo)0{t-!K0YO}4~~n<~ydT%1*40$=g%%G)J<>^Zp# zw#4GMv^`00V?4u0C@AKwNU+B-SE(2C4IW}T-!5AJsn#%)4rSRlm%tKUQ4$~scI;>* zQ#G8d@IA_yY477VY*h7uZl)so24X@d9GrB!Jy2ftvPQ!{RB3X?Xn()RU`yxss@K&V zdjycZ$u+Lwnqv5}bbBu0rP@Qo;RU1jd}EMhN+!n{*>^F2gHWeaSS|&u4Yp z%HvW~u}&cdI)V4QxWs(Nl5dD>I6o&~`>n*@#XoNQDEElw)#lhv<985%CA^e-GGn*Y zu3OoWgJE8UnVzM%qce)t#3g+Tb)m}BG%y?p8Vfg^=9dD(ESZAczp2jO+Z}ILcN#9v z^L(X&&Xa`A58K6C(drMPrv;SQ9}9R(_taNAkK46!o4Lao&?J_&EIsj{)Eh&tSpgBR zgj%RQb7MUjt#aX{Dd1$=dracSzk@G*v{d)qPD8aF+(SU%P_B?hiCY$@>w7HE@Bi`% z4S5y;RXueSIuqUPntKL%*~{&57PgvT+#86x_3)TCq~K-3%k<|7`D=QlU11_(N0@uZ zc;<1*#PWzCPfgu-_r)GH+U?W#5xh-^S zHkMNyN(-UI1yX3l$lsy>GWz5+$1m%yeiGtLdSR?mzMc!}VuVE-$ARb9e<}BH-sqdd z^Dm+urgeN)B+}IQCvFb-0_~kIM(1(_xN#QU%layad9s&I`TjK%yUgZ2ZevnUVr6z)j2yE}ba2+`7^XtE`m@ydAH9Lx- ztU}daj3>2$$|qDP2D_=zL%NrP)WIJ)nIR4K)lc{6p}|2sn9_Mu6|4&FguVAU>!xqP z92%Ie;Ca$H#=x=qJ)aABDfZZU`t}U%_U>%XyAvfN4iu#?+`PTR5}{F9(3oe832*ZA za?p)E7*&4z#jTj$)QNFlU2@jn_nO&ND|Im~Xd>>HdJVrj6>CET=j##r9K@?Vc#Wvk z>9l<4On7fL``BL9E{+6ezuIBcp{w=gBV^2DOHxYd@{%z+GG)equ5>H2XOdz9nz=Si z&l~f+F#*N*L!3C$Fs=2Mvng^%plIE*VqKwS9QK6yHz` zSy0F0h%NU$whA*c5fS(X1+J115>AZ2b%SWZx*NM+yo$M3kMtzx{7MpDm(|<%602Esr$xtz?-<~6m{g1)IA#Fo~ z@=~c0`bgSo*!E1v|M_b_p_5-w*Yp$WntwuF^G~R2{t0!>KcTMq8+9%5gPf8gYg_8i zk4`S9jTtv>TGMrB$91`6Yo?Wn5J`=3?0I=pKOYX9S{(E=s^?3Q`p?&SK`x`~g*oOf zhv?q6aO$=Mst^h9`+v947vzfjEj3UKv+siv6<*7!9eBrBb1IyHjBo`I6-go%>1%)t z+CcTIf~r#MBb|>`RwfvI)b&66u4URmk4o%44n1#ui^s=6KfgQb- zXc}eIRwGu)El?OYjHPUC8u-F5k2}p+Vwm=BC3CLrysZEn$JgWY*0u4nFk)%{bLg#* zIYx%~byJb>40eH_J(1=2w`v8uQJWFr2d?2%tYSaO5bL2@<}qY6jGoi>dardiFkNi` zSVZ;HJUq!zW1jw8zzcGjJ7mVpi2kM~?s%?)MC$a>?+18G7u!Ts<=o$j%nJClF_?+$HJ^Xk3R}cDf z@l9*|wX=wiJI~mSYm-CcFy&P>_G4hpMz0BjraYCa@)rC1E9QLe_$nHL!T9HV~CvgaE9Noa_@9I+V=&HYn3>hT&~ zh2<6*TVVE)Q)pW2kmfEWC3H9RxBrd{pI945ahw#fqS( zgDp~y#>mGSdZ`b=*q2n#2>ruLr8Vc40yOdJ?sd%7qNVX}+uL(3pHq2@j&s!n5u|d~ zs4Jc5DKJkrw@8Raq*%#^jF|bxQeYC-9u%Ur)M~22IefucSEBP3xf05&J&Fl-{wbo3 z^|vvl)BUL$)1F?53FG<#UGocc5w1rtD&lyYZbbL4b18WSlk*X~*#G!Xb@eX*YyJsf z%|8LG4w62 z9XZ`hG4q)&uO1Xd&JT=*)(`eKf7p#x9EfXI-#GZ$aKsoOl%b_zI;AD0xbEib>0JKF zOfXYN^Bu$EzyIEui0$-8_~-4lJ4QG@C0}R#WRGgZOq?Dx6iV^LUk`F%TsD3<&$6XV zGIV2VIH44UQ^dH9d)EtaEJDD=pQbB4pX+#@K5fGnuEp*U=l!nL4U+KEHCcy_&d|Pi ze^8%|=h@p}e8`c7k{mb`MPS$6pA(`(?{%{>r1H@$jHq(ulkXej#d z8JSG?NMUr^pGg9W7ukL5aA`b-qM44f3|k2E5+kbg+m6@Wc%DIUlhj*gyq|jPOy6)h z4cvx0T)9&$vi3%@jGK8AS2MHVGccnJW>$v6xZX$pe|LSLU%dvp7>nMQ29%`SIlX3G zhc~L4ju?O~cskEDJP_d$18)vuI9%KPH1LQ_9nd}`v&;KNu@1ojpsxg9!=!s1qv5t<9oEv%ifE> zBitC|otR8iZ(1k*NG5R?s{ zA2+UI!Rmg9Pu`a8`TZZLkm>3?5@S=m^>n(hWXCX23#wgTr|map?4_1EI3#i!7v3@# z#maLPGd~UQ@}XzPu_MmS8C2Y5BhaScIn62V)z2~~(}M-#zbyuQ{Rb*U+;Q2IAKtwi z6s(e&WD6tw))Y}c-hIaOx*rv?xbRDbsbU4+NF$S>aHRGRDzt%TVn!Nt|0OOH6r8bk zsd?qKhsmWlY{bu<=miRs3OA-x!7|{!DoLbX+(Q8I{{G8FF-u3hsE-sdc=EXu<^Lz3 znxE)y7FN>KWX(B6q}?C=o0{Ni!o{(xAQ=a#hLf%c?&c#moCwItuu}$4oMqDA2O&*|qsj>qk zi%c;)+n?Y6A54fivogWCTc#mhdieI}z>A%*;T&u+KN#*Wnw?Kci+8atB}$ths4X5} zYblFdBBC;niCOl2r!ZRytUQMIuu?pbvoyjSI=JW8f5j*qLFLlgWZSJ(A)WEN@lfnV zQg1sH5iOcMccSC-u1*oe&nk|(gRApa1(Kd;<A%N!d`)5#wtwK3`W|2dK%{p#s7A&(0}W^PP+<} zniQR?AC1LywOC|1Y_CLjwul_iHFv47srnAJHX1Zvc~-*#3*0fm?*TK)DIHN3v*wmj7;>pxRH z)*Re~I6Id8MN+0opoX-m`=%njT+u}GQzN;gWNm54Z{5UMLX3~zuK=38n}CSvo-SXM zwZgLO&k_leaED@C?!%InsF`$~#>ZfP{m0=XUt>Mf)-6xEyxmwVXY9rbl?W%(&6k@t z4Q1|}*nx}YSRv%3RHN{w1#7&!BHKXEBou~OQdIF(O7oOBIF(NQ@)VQ%BYs5t_FBZ_ zoU*GUHQ7~V?%w-tQkeYH>obZ1qFKyrQ2fi%y-conA*J-urRD196GH(PU@bdqMlNEB zCUTRhhCs@~iHR4(QBCB#WMT9tAJ$QRyxxuDc_$cvZ#fr-W$Yi2ycyfOShh;qYcK1m zV5TV8s$D&?oF366FE@m{j@b8flb3L>%8H)KS}86jjwG-uEHqUyTcBE z9#4Xw-2;9u-ELH-(|Jadl;nu(1CZr0f41ZlmszN{KJlN4+bP?6!+|-$JQ+(Cy+RM> zjBSyL#B&X=9KILU5Tgjk8$ z+-sCFF`+qvG|U@npPAyyvGMa$Xx9{RVGE)=6yy5qhaJNNcfS;MW&=!<2* zR9ZsaBW_5Ebr>pED4Ya|@W7S$qI(Sz@%T?7z8=*^))X1o;v_$PdadG-$+z?UU6N}v zZeKoogvTh<`_(Y(DNKhc_0IAO#4n_@B}(#4z+p#{C~Jw4nT^uB&Lq0S_8$yMT%S5h z-N*gPfk0^P#W8NM>g3RSeyA+gS1ez;{ZQ>(4j?FmrnYHPA-WoW;5E+P(cy;aM%|D!ser_E;)_sg$ivtr=G>2S$Uzh3@QFRr`yy+0?GNZO)t1lpUW^Nvf&_N%5ztHxzPNFV1O=4e~T^g^&yo1hhi;q=jS?}`1BMa-+U$7#b~u0cfi_DVpv;KZP)stRl;uErFX`}@|;0MqudS z;j12xihO&sT$7Q@JaUc&&r$`C?S4qyGl!AubAiAl*UG#p#rqUE&5_$p?I-ohB{^Ka z(bHY%P}aglj28gemoX*4m<8QXEX_E-2@L49^?b&w{ZTQi?;{5^B5$`MW*0J2%qQPNr1kE0O36P-4 z`{h-5uFoYrd9KFvnp{(ox$g>(q}|v(@L)gt@O;9Z)gNMUe*=&e(3_4SPfCf%RHLLE zdz>8ZAM%7e(()plxEmue#t%m)46eJvY= zP)ntR&HB6%&aO#Oy1|3eBig2gW6=HmXNo7I86Kne_fLg;(A)TOd)=4IO@;&7QhrHu zd?%)invsy6U;jDOoH97TRa(FKhbx7a-F&NA2{X5LK|+1q;YEu ztEk>6BZt=u@S19J8#cx8xVdrnF01PmmjivgyE}12S7i#V+AeV*5(9%8Lf~@O^)~X! znQ>c-){E2cAdfk2sdHoJfN6fl`D-pjYXE$?upSSek?lR!)XEv+ETLgp@$iU&?WJt{ zXe7<`tzt@J)TiFRe+Y@e$a1ESvJ9K~|4O%5&%fm3<5?mp!_@NLoSn zwG!=>jfI$TeBFX4B9-%I3M=ZY_clcu;MpGk(sF9{h-Eg8*k- zdUU&&j?j+et-|C}=V7oc;ix69b>8YJXz$CA*aRJY?`G$~g8K(c?C+-J~sn ze8^YrS=Rb`F5!tt+cRVNs+_&Yq3U#;@?i8P%_58Wa4sor5{^^^w1gMU@sPypt_EM*H*4SX4?5=^+5w!zy& zWBW6haKva~RE)y@7iTOphEQp~2Am6x@1jodIvoMV`lOIJP%tm=+WQ4dM>0tJ(-1cE zB~1Lrr9*~VDR=aV3c%QL7-MI1osWW`nfWsK*DN|KQV>Uc*RBCc4QE3nD^`BAcz*`}->Uo*p|EXbo`+tl`?!d_BUwe;A zQ;)XYRQkdANn8^G-S)W?1#|B2J8KN;cD4hb7Z^>KK|WM`4&Aaz-jm+$%7HO@551pQ zLkoZbG{5Hk%Vo_y#LMer)60cCJ9pa-r}?#(7t2-=Ghf++ilu_6LkfRiTPETCyJr#z z5nU3SQ{>x;Yd-p<({HHHz;R2S^K~*5xuc!z@kl?>?dH;{g=CiaVg>(P#)Sc5CMA+p zg{N%KwY*xfm_y@*MA~019er?^E7&e!r~AZMl$)e%tE0~kH?_uTCdSmVrj-Lby{jYa zRH;*vBj?HyCn3#utzeRK$;}vuRWH?ii|fm5UwJ6b_V>hejGd`uU;31Lay5jpiOIqe ztmdU?JsN382Jtt*ojrMuDw-bxrRYp#{$ue*J}~DtPDmBbWCsWI~mT@pUGWIMWbVpJnZ;x7ppjhlmxbR z^DCA;&b-khq6Q8R+0g!mq(_G1jPx@ey*`%CHD(J9g{|eW>BEqRFSqskYl&lKXEu^zUb zluq9kkhBb;?A?X)x+FXx5qux>MaHSD2tLsu6QHZw)vU5-)qAHq6#|?IZ@28R(@%=e zqdT6&6lg`4rqmmz=X3NT+w$04iMO=cN)Cnrp&asNcm1wp0v>$mDN~OUHT1%3WRFyx z9aFEE;w}c))p8OyN66D2EeF|sW5b_kfg?_&h@nt`Ddi!XXnj9J4_q3fG{#$uwaP|W z) z^7%Eqr1Mo_bG6{}_*}r_ypEqpyhZoqqxR5C`-Nn@GcNVl@1A>@)#6Rtd(zuAJZlgp z>4i(6KkeR1VcgqV{<|a4lF{QCLT|ZYwU>gOtssoKBce6A7&cz9^V4$)FJQWhT!|8W z=w6VgASF{-ulZQr2{x(GfnT$*Vssc6ADT>d<VAAIgo1mtRG+n(E7FZgyT z1DO(iU`xB4y65Ab#@qaQkY2#lmUYCQE%nWPHe$`UeUH1yS^`s!b3+`u(fK8Id z8D{of9xQ2j#Jqtbu;duwKA~U`3RkVv&cySSrHy@T zck!VXq9T-O`>=M~%_Hh10?=xCuHth#uK@|-GE{*2|>xoIAu=T_xs>)!0`N&X5M@0Y_}@A<_y_l3!Jjvj4G;M??ghyD{B(9!k@<4XNZ!GK1Jk zY!8dc{Kob-ZkKeAQt!A;@y0(sU%1s%0y&564QPIWp!-h{bpHv09zQ|Q<0lAu`~*Rd zHw2yk5dSy}UhZn++ndH*15s~{X~f+s5I90eyhRw-Z9?-8#F}H5aznq8@}7TxdHj73 z-OMAOK=3dkLubir5en@6~+ClVvZUue#@p%O3`?$;xCyIx3LDK9=l+S+GO# z(}zTBa-TEEnE&~TufgXT5Tc9Q6_)&>bL6YZ<}+GTy&Ph*>A>Lq(wa(rNSaF+?Opmk zig+dg)od)6uqeV6&pS_@FO_EocC61GJKa;pOrzD5k{B^;p38X7J*i3e2r_Y1KqvCM${%txlo?CNTj#Lc%L9lA)4Ll4z&ee(}amv_ATi z9%;+WJyf72hS`tEspAbZc^|+-tMS5KaTP|zQNW+^LE8&hPcg%tL(;peHEotvF7=!W ztoX_5+KcKM$!wK6Djc&^RGFe=@zOh&IPOl|Y&w_O447LD;^Sj_d%Te5yd@47Jkr>y zge(S7YaAZuo*UQBH|<|WMB`Q`R*-%5FP9(Pj>M$pq3G|ILi z4fdWClg3c{nnsG5!d^dBJS&dlh%H;!C5(ELA#mXO;ig|)P#91B zY+xez?B2R?`Moa4tYJ1kzx@MbhC0Ey3Uh8fii_$qaM=cyqs7dgLl;exvpaI32QO!m zUzNt!5BDg>Y%Q(cuOCv>A{c<{hlvkDLLKNceixUwj3?>sMB*!QXCjT zPeo!ePRg#0VKKFRSbztcHM@cXeV_197~#@)=B+BOP+ z;XY2pskg1)=(NG6>Yjuf?6|_-sl9DM?OhQv@T-=(RpfwDMEXkdr8{$X*ki0EM;F7<+~}m;z*2!HHUFMz7xbpJ!ks>R_ysa-u|)r z8Ax)uSDbh&#|;!2QlT68k6Pur-qk*J)i%e@+9vaq79M|G^QEh_ilglX_eW8#QpgDM z-G=3j1%82?$4`*+_z7~JKS9p(C&+pJ1Ub)tr=APH3>CK^t#N)q&S^#-;3L{_=Q`KW zdWq*gW+@)y@QpdA%a@*-8lm=i56^$ShKA(F$hjWkTYml>cF#;P+jFpg9#*^=q8A3^ z%=-#=wP!|S8!LG1LO?*-SRKoF?PkzKqOrR|_-)&LADQZot8v>2ICXOznX^I-S&G>o z*XK%}$kYT>`%(Ygky*Vc4f9iIqe8GdxWuMLCi7&J(up0@m0@cr%-gcKuOfmNqC|ev z*&dh;ZO_7~*DddA)OOS)=OIJjQXpgpqq_?I{*hO8zK5U=4yxfZs-0TM5lThi%T`I) z@!gd@rzOhK`T8l1+|E1-Pj#*dCdQVQmfrElj&|iMfFXSxbGI=dshh+0+oenOiR;P- zf*CBc{nr{^eb$*AW{SDt*5^)kC}f`$%18H!(>ZMi-XsV9OW{GT854ckzcv5kT}}lG zB{M;-^OXmK5T8t{Y6gCCzZc>zSG-#oX~v*^=;2jrv`^d2I>CRI24JPQ+2z- zwqB({5vf2IvP50h^7I){X?A`|F{|u^cU}xe+{xLiHuMy#(wTt7KD*`xcVZUly=X+lxr zi5k=L-Ae+?m=*pdq?x)F$U06O>-I1YJ>S{EtoN@cwDgHN^J68Q?6I?(RYfEZ4NVDY zsa@iXMG(BlDRX}ARxc5$PP5jW#`E5-!)8t^36~(YsMZa(MP5=bQaQl3+C_75SH7A% zeDwihR%Nbh;dMtcs$+IJWGq(OhgwBPVvqApJr}eetSvP5S~>Jw$OE!MefsWavOsz} zFP6VN>5o9n?nH1TiN(`FFjV9d`F#AH_+bo@#3`9}w1!x0ZDXl4aLJVYqY=*jv9ITt z0uy2;7^UTx&7MvXBuCs7-zVV{y(a82CYU={WEvxu zm61?=yE8VKf< z$!mCO%jA3*>%DekjgVNc?1UqfsK`{tw5 zz0CMDL6#T<4E+()@QfWoqKA8kGf1P?X$c_Ob1}~YepL6^CN$f}J__cWrdiki+nJd2 zdd4_Ina&TFtIsCmGVRyXnEIR+3J(N*FQl>lxy64x20xy z#9v1&UZVe93bAciI_*OyRswsadzj`Tc^o7N6^juEMP7=0Wae}IXBYb%^y44-ENh9j zgUPI#@6Xr*+!evN=|yoR?GNP;v2D8v!9wp&JR#xbd_teNar)DM$gpQX9jS5V<10NT zqw$`LGl|a5UZ6FEeEPh}(0eNYs%<}p>w#8Z*Goq17>PUa- zpOEYM6LLL&L9WyA3v%_Z{`YnHSO5FE{Hx#A^{xJ#TMf=BVNBT2bU$%>{LkXw$L**_ z_&dU{;8Q2f*RXz!)-E1dq*H5#n6@F?isS!gL@=v8;y1Db9rJhCO*^+?3xkF^XVn%? zna(3)k!5*WEm_A4ZLT6L#No9QGM<$4AL42956GN{Kn3=m!bFhv5VJT;3?{;v||@?G_>?iPf+#;5HwtCrP=JIL#(;3v#H$B=O=XpKw56~j4hgf>4{@oc%e^QS(;;UGUg z^@YCUsWpT@U0;~K3Ob*Y3*0eU`Wadb8brN=>RHvrHM#w;f(%!6XRv8MZegtwRpQ0M z=|j5pNHCa*x$5!09S^MOa_tRZ_WU=))C8TP;JvKt(w+=7HZ$Q4A0MXyr8B)>~;=DUm2d48c+9ed9qLp+<>!0u}6+6yjUk_#kE@LcrN3CG_h{QCoTyrnW~IL_L$-}O0rj6;W0`aTaWnB(yg_6 zW|Vvu6WOz%>M6V-Vl){)-5X83Y9e{TqrD6?Sr89#tL36!-@$30=+Mw(rsr1max5}G zMXx%7V~Y~Gn9>8kaRMu01_5)Te&bJCdkPW3d1a7r-L5aefF_}=e6;Ghq{AkqWR_^` zb3fVfN7BQ*;vV~*i(`3Qzz`Xq%Xpd=O{sK2pWVY)jMH`>kT}c&x}VC3|6$+QBV?#$ ztSaDEg=NTgd@_p0DE>V1L)rVdU{uoZT7+ix)Ak}CA=R9FPcWS08P|?79-%D1p38VT z7YVt_1CiEh5oeJ|+JmD$W@1+s+851aNJ?+FEoaDndLA>b?o+a8+jCYpUpt$`A&>~4 ziBH-639|wq>&mY3`Gg~S6TZ2xMZC^%1Z zN&|Ml7<5%U7MblFUUf8e*H5`3jL8DTt|{{(s+wt!TJk93>ummfu1Q!kN_?*2d4l`1 zcnML>_T4&@p!7~X(qlg~vVD5Dv1M*Uqxlk1i#BpM&wAZ}_MM7eOh*yDG#z)2x9udE z`ydu$O`k}kzDc>X z0U22+@*Z{^I|2?LAW2u}RheQtb9&XFn!k$Mi`pw@#(cfAZ>4KvY$ODC8$Ume(TJAk zRuQRGx*FR|eKX0f114peR~*T4`u3u*ly6q<#RoGZ9&z4lWU3^S{BWj%F8bpVqYm}> z$``Qku%r{A!VFEua>zAbbl!}4UMuR-R}U+Eu$GR7MO->fH7|xQ0qIV;;c}jPYz!Xj zcwo;X_D&p+H#Qu7NH+e(`#z!98kje-=fGqvts^=O?_fd-hMnGIWe!>JT&u-IOy6Y~ z)_1-A1Mc*%e!^$J;Lhn z1>Vwg`f4r9*N&mbs~>rU?D&mv+cQPiq40NQ!xd?yet_TO+zzq9k z=4gf;*}46ZXlu_o96tfJ_Jl}09p0ZbmCNn3J@FHqFuzvv;sxUf%9+!xD*HLg96^B# z3f(?_y5yU5L%d5d2Zd>-%N+=$Jkks8#{g1xGR%^Deg7DE<#)@K@~Z&VJ0frNZTeE^ z^ke;brhs3cD|u3bL6Xada*3$p1_L9}pL1$EdoPw3E$aoA5lgRk_+N_Y!nkRNdjZ7E z1kOFPm9vto$ymfiE9G#!>IQmP@yhv~_L{w&44!4W%t6Y@a}_UYupA2KkT~eAN}Dl5 zSw;J#d0cKyK&Gz^wGBl+Wt$=in8<4>(VGlQ3a>DnJh=BUt3k=UPt%}JL&VJ6u9;ge zT|8_Osbjt;it1bSWfgB~a6*A+5rJbjBuf1|t_hGH%ekMFCQc=niD1c1nJ+4od98jb zJcOGiga?OySx$NzL9&e_ND<1w)i@&RvQ++ru@;fQbfmgn_va#>H1>G zwp+|JP|7NvjjVbWt#$x06%`p%c_V_IduCCgkuX@zc(0Z&5yODUjwg=29^SN|wj_NX zJxy+moQKldX*_<1y|gvFxWOThBLHv6a`zfE0=B5`4TO6JW2ggotd@K;PP2EN@e%<@ z?{|uIbM}U?l)AkZBVcojJv`@n8V_K3-#%(lo1;iI;NLScJr^*(ZUVLzJJfZmWJy%V zBLlzWW|v#e5eMD&Q=|2w(H?oB>yjt^aK$he++#QUWv$0{{hRO$;zx`93Cmjr{JOLskE z={d%?X5dqB7ucRrCP?#@9ah**gRTAYK!=aSet!ajIimiN^Xc^rJvFEX3zTU%v-?_K z>~emK^Yu6uzkHT3=HzKF@BNE=T(jdhaLir5>8;Fpc0}xc|1?%^yL}5#Z ztH~_;rD#go>EPNtzyFgTd`e5U!_DChlvX0$n#~Hb)7DxKZbL}bL%FV*9_oQC5-KX( zX`}){UWm2Qc8vW~weon9^ZL9WqBQD|#I@}z%5|LMT9+PC%tfDTcxg~=F9uIq%KMEY z#H+OjHJH~FzV^=R+_hj{RQLVjghs4(2{Y@+qm1RR=1k}^z_#5n1UPw?0+QFIS;9JR z&sHSC^(00JAY%7OPSSG?Z+6tUW$fCj@ZK^!jWpXA#x1R*Mjt#>eOvm}Gp;i7B=wsv zukHJ2#FDoqawRIplyI6$B$*W4BLCyif|W3EiJ3w0Ag1|(tj`s^xKZu!vE{byg|?yy z9jNnLh}JBNN`z|L9Q+`Ix#CPj8y269_K-}S+5%R_E>Jc=Np!588n~e^=L75GRCtLdzaLgVF_+)x9a6H zuoAl|Vr~p$RIL-4bcd-=r|Cr+y3)v-#xKiK{uM`7vuH8o6BPEMv`=PV`~1(B{s}$) zf{MqVQ1SE=DxQ8q#nVryczU8@5nWR72G{$TYVMC~LX~n3z6_ zM~x}UJoY}$5HtU_8%R7a3tiT#$9ZMd6X+Et<||G@X3uY%|NR-unvg=ST-;EePs8*N zBN+k(45DV4>?$buTM~yOC0L8CA3qB1$T?R0UoT^O{!}qMUWOk2;=@jpW*w`ey9XqP zV93cMGpiF>;>ZflYeOB~v~82arl+;q7PjY7UeqO1x-cveZ08UB%{*umEOUtNJO311 z5*gyZxO_Jc_0dDfX)CEdY&yj9RJG90&s6ZzfM_Vt%nXHzy@Hryl%cq=)$kvTCAWBP zF|&KFW4b!7+&||dG7L%Wm#i_^3?!uXKUgQ=G3Nj zi5D53WVH^LnhULqf?LmDfJe8H@^Fgx+hPS)cE@wjWxFSPWYhO54u*uWi}bJVXONG+ zhUp$P@%mcD^Vs!JDt=TaLys)?{)>U(V7+t_*}`;|q{et_t9i;62JJ+2)QW{tf9bK@ zrBWyhRYT2efiMhGyx!MgO9P>8@?0MG%C`~0K&HpZ`FH@b>CH&ylCg7H;i$ity_C^Z zB1C2Z=~bTU$YX>dDs}cGRjC}6Ig{;b*N0qBN+1fbC%=1Qh{oeP-hHHwX})ZyomX9k zs<77gQRP2EAln+AsF(vWrwuva-FUN|u3F*dsM58%Q4KR6$|vcDpA3~Lr6`xds*lI0 zdJ`_9z$*p02a}>$Mqa(wMz=W6XBg*Q0S6_E$Kqyvp3m3%H5;Co40#gUTT!NO9tvY6 z#bmn}$H#4GHoibwU3#ucEMXN$hn{|UrG}kNMU@dik>d@CW;=i`Soze1`ZKSI-C6qJ ze8$Q2`-tJ|YY9)utnJbS!~m6x_x;Fd%&|p{8%lizfwLTb4ZP0s7Z${^GWZpc|2JD?R^y+ zS?A4y!$WM^rHk{|ZnX>dbaL$XpuAxc~{Djh^VR zqvq&dWtrheZ2RWnwS*@;PNR0coW?kc)>eLc8W<5^tlaOp&Z(Za*z&zvy3qup2x>*{ zipKEx+W5R@FU2uC^ z%EMjqq~ShzdJmr&+J^VEXe!jJOZgLi0?U}O!f?FdOK>|qPc^i{)0C#pFs3vFlL3Ch zs<>^{Ijg%6BmF5A!uDFi%b*EeSTdVVRs}Qh6DDa!I@ande*x+hkkjM&dH3*EP7HGc zrNFm2}YFNfw+f{{5>o?Y&xlVb9V;)kh zEirn@I?{TZy65P=-G;_OPW!xPrcg;?l?=7|-Su+aYsbtLB=WILLxO4mKIf!S@2D*!Y4({usB4%F>Z<(l5v{WYfN>HY-M zW?Tv}LY2(wcUK|6gaFGm+j}hJYZ5&D=^rzqW+kBKQWzhV<6;i+MJ+z+WK%(KImNnF z@Q64Y&5=}}OQr8P!3Do*$kZHg`_ox>dTB}yH;;4Sc15(Lq&!t{^$}t|b**As^Uped z0+qjj<>@D|JpTli=bymx{1aH7-=f>&uRYbLp6wn^#*^c|{()^^PfM2 zz%pr)4Qt8F`NqNZgVyc+aG5a+li_F8HjJV=Bz2e#JFlbq_ZdV`Zg8jD{#nN7tUR@u zlINP1`qwIOQum}nfdgHkG3O9WP9s*{C8QYHa^mf_SN`~7XV2q!r$hw|ocU@?q5(87 zunB7!n?s!_{!5yFeTD)*|Hh#2!2_G$;C3-*4cT=S2lC`kXiedy0PJB2Ys;1tdH0e9YfDyboN}w zn?^N-?rbb4M(sYNH%6VP0C?ARN2Zuj4VMo|4N(z51Gv?C4IkGSznxYg#R#+Oha}mP zm;|Ax2D;rMBK6w9wgD%-{vJFsDnqxJl}*ouJQ40n*}EE+oq7Y6bx0qREEH8&;r|E+ zOvEOdvQF32)?8z`y30+uzXWyKC~}^yU(p}PSa2NL+1wu4;#QFjC}qM#C|fEWlZG7{ zjL?36`1V@G6X7Dx3JIj)sv1`!nny~KH||kY7V=CCyNvy(ieQ+PWZ^y>W)xG=9rSYsXec z)}U^lw$D#@mglDz|2DPZbb}PICRe?t=W$Ip9d0j3*XYTqW0-k8do?6(H)M>xtad=r%5;J|j%X;FqMNu2KgM0YP?1r{Zu5tOv zTB@{?4E2VOLLMkn5MNA~Dv8aAQ4tenU9vweSxO-DXll&o8lDEkd*Ts7zndy6mEz2x zT8DNk{;PpWnD=QzC?F0rXUE;NmmFEg@{BPyT`mM5{_xIIxn|DXX~~#tL>edK zc$AuwRuhX+5OF<%Uc0j?mSr!X?*!zaqHDqk$8C=Tlu|DTjlEDDt;^PKI z9Q^rXDZf3J@Un+WYuKchKX}LIi5taJ+L6kOAd_KSE7v(%6$G1-S2~NNF&ZrC17s}F zW0!}#^q(%VaSHKvte*-<;~u-t*OPl=UZXr>Qq8pay@=;gy(cwm(a%)-ciV(jg01tB zS5FBSFpy~#U7MoVAj~Pe#3Bq8Wz?>RC}i|M^U$+84})f=Eg4?Cy~ma~fVAZs7#7tj zN(!Q&lfU<~*E7HIEgP5N3}+9Z#cTR|1#o54pFe`**!ZF5 z+C$emb9C`+LpGXm>}BDZ&>>?5&AL9WFt%#Xj)!vj;NJF6orh+;l|q(&3g!YQ^SSbi zMY$i5&(Bjv-_K>7-(@UD70){((C@iR@?Z|#q@nv_hW~!r#h3lE3rKLJyr1@5=a3x= zoJwC4H9K5U$^}^^!c)<-TfLv3s(Io9$IRyd)aQ?udR^myK)(A(^lt0;!nZTV_Tqc& zu@fIl;_Fpw^%?OkBaAAWok2T3TS$q0e8-pUV29&BXg9Hbyc`kW&*>X(-Jf`AwXO-& zjzM&M&9Tuz5NH`@9BE=Le=B+qhcM~&?=klL6Ud!^0=e@~Ab0r*Oy-X@Eqn8@z4snZ;%_v)HE|dw1#PpEs!C2jjHAI9xj&*knW4*`{ zsC6h9{d3ho-WS{)#K!uB>ltC5A5rJ(T1k%^|GC)D^VK|8>Kg*_A@}hrJ~E8KYG?CXM^>7R9s^U^ zt!Ked5}DIqP^QXt%q+qwhL+XD7ZJMw(dexur5tFQkEldVxO#F;+hCKXI%UrET*C_n z3pJJ8<8~KCISArNOatT5f*ka){0E|ktKR+`&M+%liz`;4jd+Su78AWdkAg7rRh-eX zi&Vy1FuJ*t8V!oe3)&$t;xCfA5JGLxN|bXpYk9h66*qkn#qVV%%$NWD(1X zxyBxCSxl3579#s6?3Yp6n8>#o!RxVvmk78OH?1TRGO~o#oS)LM>u*d6Yp%KJcr}XL zW82mJ)L8!(5Dima7m;6+oO-rgD8*~XX&DTRbGnlEr=o103)4IugS!fCg^_!6B%Olxw$N*W)W) z>k}#Doj@wEg%@?3IA9N5*^she$sCd*lM{T z_-u2M>~7$*=~XT9m~7X)JQHOGNTmn|t0$w94B^4d#1@6!@qlEgnWrTl?=Aw=mRuyx zkRa}DlWu6_<|~GG{d8eA-j0zC&94XPc_vSZD!?OSiFS6m-N+)IErf>p{N;TX0U~v) ztjNN8^kI7r>#1iMrt=(md^^XdICAZO!PwetOWNumxaf&R&0){y4XV#jlH)?Md}~|8 zb16@kj`jz!q?BtqJzI#^3ES`$7;diLhB*n5WM`d^?@lQCqH|0S*heP$sJ{CTwr$>2 zpMKGXGS{s2Oe)sNUT?nVR?D9UXE>zaNj@t7uPqZ2!xKg_YZp9^ngFNUg&6l$e&ak_ ziI*k;fbBEZ1dJsmz;^M^Qhox6zX0FmC*ZsO1bo+@fbaSf@Liu&X#Mo#yymo2J@*}+ zE*JbvOy~ZP7*sCN+a(@;yMNg{z$4`?MR+Z7@1)$~l^~+9OMcG_Y__6WH>z4JSJ@*G zp<&6heiu({j1Z!IjTiD=|7AiOLu;dMKu2j=v3w`R(8AR4xB z>O%~S?ss4lpAD@nMZDM(e8hkRt!>*%nXi^bVrCU{E)~SJ8vCjo+IrXV-&H)Zap-w- zf+~@qKE$0PlPFE~9<@V;k<^=0yS&=mNgELA%K~QUVWeS8iQx#6844;2fF!2n3S=_b znbgR+=$Fvy+zo-qw^$QhRL+Na%lbmc8e^L%&&047Cs;a!fLjg7!@BOjcd8%|JCi&y zS4-e@Oh`1P6d61HcaJL)zofAYFa+=z0&)mr)bg>N-ejRLVWz+74o$-zGas_^;SsuK zA&s4!c76e0e1ltVTL}Nf&XL zc!{(!r9E}k$k*jw;}~`<6*Ro_L)Vt~pOs3`(M~@*A%=}-_t{8f5C58pfWCWg%VQda zDSE^9*SqnQ25;WM_0nT&*%Y+!@XrwLQVKbC*N1R~s|@V2S_o6dh{y6Kw(4hE?tyh%ezSX>Nx)R;i#O~bJ+B|(iLJ^g9KX1_uWFRwja%y~V=!#`` z)G$g@3Pp(T0zt=hrMDq|W~kwsoc+nfV9dR4C(HB8zsAA|kl>%Q9X)rsl~dv5OQ5L8 z$yCPNqFS9srhh*Y@mG{(qnUa??A}d^^0uAXVeTu!ZCeodp7~luqS`mx!E+>H6_nVh8g4`=>Fu z!pv2U7us^*wFlpRH}rTNDy0KN(4MWR*cBR*uOPgr?a0p+JhAbf3KrYc=24^l6Db*i zh*+`g!(tD}B%8C|woknwCro-fk{46)I!hW5>icu+YHJTQkrLH8r}!I#9a>v-En?b> zaFYas*n25emh<%(z05lVlgpuF1~8VQWLc8=n^BlLzkWACne7vI{iNz_^0jm@>8DlD z_89%(5zy;o=q_Oix^nB%M7ckK=)kSxGPG=c7LG55jSxE7_FToQca1@EqzY=6?PC+R z*v0JZN@QYl&!+Iy3To^>r4Fn;zM_|e|#YV8qH9E{$`W$O@YFZqzM+rbv24*n?t zKNoSnTPyP}L89TY)jno?uH!WyPC9Nfdi9&jtU4RKNlLp{{hMhl(8}y`SlfwH81oF3 z-yKB*DQ?zIQp?0ZW@=9&(3(%Y8fsR@+A9TJ>;bTEN^_&w+7?43=~2&Be2(YiuU+ee z(y*VZ^7r@)%hsvH=(3MWS3_Yr#RrA`mu)Iv!WaT`7LQZ$Clg?HeMme^d0@`=VfX03cF+qb$&(f?e>=fQ~@s@zL+x@ckS zpvmHnV0ZP$@^@~D*Ii>0IG4CO6AUHF8p_xGQ)d&c1m042od--DkJ{tg9dkYZ(Pc+E z;8V}N`WIXmFiKU_czVw_YJ0<4rJg$+f7a?qI(V-(YkKvcG&Vc2_jg3;De)=u4G|tl z<|RoTgjcAk&x82rW)oi%ah|fYJw16~8!kf&v&wF+VxF&4yQe`-Y5ZKq3)E`mP7F@A z7~9-+BkF7Xgx&m4B6^~Rb`PME_%6re2bsBXINo;+64Mo}1hGCf_;tgVDRJ?~C($FS z%}Aa1uvY8ODOIr;7izS}#BqD$TD^rWF0%}1?^SpgG!UhCn@Bv5MJC2f$L zQ3Fe*rKEKRym+X4bkuz?LsK>a1c5ts(d_|5>bB*rE8h{0Bgn!^nqF&o;Mz^%))FTu z;@;~zZW4Mxah%|_(8fMRUUvm(Eq7%FzUTgMEa@z1X(ORAYR*+ai+Jk1{bQ+HpJb^8bGkhvOF=LGnJo|_&?Xgk(-N;I!azYC6G7GJk z&o39BvHYtO4lnjLBb)o-qCu8dsx7gV|B(sBfH?)-t#?fqKLb5lr!wR-<~eKka(QLTQnA`~jTgr_U+^6ul1M2R>LVdlJFq&42Y*k4DU z!Acj+kL23%eX9)x&t|ydehTSHtCY6-dx5Hkz=o5sRv4C_UKwH5JT;gyajp{lI4PL~=%p054=`Ss`5JIv#G zr?A1Iy{-!1DDkvw0_W}zHU2~mhYHqmv`K4E^V+W$gm5y`n=&OXr{J{VG>Yg_YW5YC zwdct)>Vc#$=iLGp53fuAK(rW0dq%|zMF5jPY`zk#9UJ{!C=$;04b)dA3`4Arh8@LA;*r_2#}Tu0k;q z1eid>a;QRB?o_J+!wE?PFqY{zlGL%=`wq;x@dUc))dbj#^3;ky@ z+rCyBvZdglC52SA@AgC})4y=;Sf49+0@-y(xuf223U&Jn>sj- zeVd&avkfqGsnBbq=_y%Qs=Q*@nlV!?;Km>w{c$s1jX2=w9=$f<)a{$NWL?<>1kys z08C>>UG)lgnzjBH5m6q4hX@Z>3;1BJv< z@TUlaP|K^MFkEBaWsi#Mqa!m)-lPao(e`<`q}y9RJ$Fsj5;r>xiv24)VID5=1*$PJ z#&ap(EN8f1Gnc19d%wPwb}O+3$M!8f@b2j3FvLmhz9q)tNk}(LA+18pju(Qzw&w z_##+r-zva28sUQ0E8{&iJSxSS&{&N3&L#eAQqya#7m&v!xn3q;+1 zf~eb15Ox0vqV7LI)cq%jx<4UmW(ZOpG}gB-w=qFKCaP;3)W_p`9%7`5V}hSmlw@PJ zHNGb5u)76i17}n*=Zq?W`Q`Ud=FWa}`@iK|l_8!|YOUOz<4=6Vk?iDcSl)Dvh%#Mr#b;@9uk|B zIr%fk4Kt8!G#)l;^G{s!5#3v4%S%@k9V`b09Y-4e9iD6nPtx%e@I?{G667v25*uTm z7-RBT`8;O-YnbkH`Tt_CN((l;87kRCs;9j~k?YL9f79HIC-<35g*w=$D9-u8jx|=E zDG-r~204uL{P_M)-T**;yi?W=BgBR?o50c-hmhAxq|0Nbq=psxqWu~PZWE} z*P!cBng_|lvaU@g*5WUk(qj>9DW&e8tx4~slZ|=b{dXeORgP#_mYY+=1MOkS{kaL( z3)>k^Na5|C&)4`hQ{8k+u*XJC>JeA|sN+e3H5 zpBeF&{=HqhVqZ?@m0!0+Y+eojE?Yo_@ArgNmm0-#|lFY#nPD{z-BgAJdL9{h4cEiXkL)4f{>+h??b0{h3}+9JEq z)y#38y}v0Q!Iu0c?nDLC3G)G;HDO{kQa>%KILsh8qJKfG8~qmdiY=te_U{`f|U?SIT6^^UJy=yM$Je}|l+$WL6K^By&7 zejs|7PnAsVI*Lx6HjPO`ubwo-l7o{|)UtIVJIn@JVJSkLe${?2jaLk$xpD&90qI0f zXJ_h^WubuhrW^Ji+t%kYULf@3sA5hc-Ds^QZQFb}RBh>pec}xf{)Rjd3srho7wcI? z1jm4AttoLBZHpaP82Q?NnJ`3y6c4YO`DlghWm__x|1>3%LLV4Q^7LHD=Um?Yjzl>{ zD$KdzuBGkzzJxEhb}C|gl-Ia-kN1?Ai_{uI3uL5o1BlAHuxpX1*&WPk06Bq~Nr$_u;ieF{F_A(N&0} z%~zBXMP#v{A}e#wgEVyvt!U5p(HMTtXTy2~|c71YMSr5+T&<^2t$RykIxrwQ>I)6ore@VSQ92s7%wHF@>(P50b` zsRq1G#Lmk4Kp|^bXUkM{tR6)Y~?nh>k&1N1V&uE*b>ikZ4y(W<6fm~z*b^0w&ch89*R zlI_TetH>R@$hv!o{E~qUUJBdeUwAyx^DE(k9wW5YN!IT=Jl}#Rh=jt@aWQy8m%6`J zf-kl;#!odv;|sU5T$SEd3IpZqDev_Ri?k+dJBRnA8%l`1M^4BZtIEX8H@OxBr0foAQ7f(MHT`FxU`&yRZCx+bwYufPp8$yyKAHiZr=2IoN2zkj+$aUWzg?XLyAz~pX#Oxi&lUbash z6Gahb$h#dK9Em_%BeUz))a@I#!W^JAWh!p4G-r*$*k|7$ff0Yi{d#9ZDFh@aF$g~6 ziZI-Ni%A7hn;!h}v|l^^1(SRNnNV)vT@?XgL@~}!-b5W*wg;RuTjEWBK%3DFPU4#yb1HH~dz~kB^w5T$hWzIE5kh63O^;4d3(3C=*s3BICX9 zk(ivD3wc9W<@N5lpi1V)Q%t7KFxtx#53!2Pv&F1?+GTAmb*yu8AnoPB!~fy_zU@lM z?8#w2m2m^2nn9$8`N_yV{za0^vT4T*QSWocXhap+wz%=*TWPxKJt5%Sx(dtbAav0d zyp~%NS4NQv4fn>IqTnfJG9Rjj!rZ|7S-{_*)dkS%uR(@G9MU$D{nx|v0Fei!jnM>i zj$#!X>`{jt5bs$jJNo6pyz;K5`YECjU+wmFHM71vi`w-Sma+;1>Q2eJE8KF7N`?|Y zDI?ko#H4{ubk(m6ZI)<+xI^yGo%J=toc?sv^yBsf{B*KmD)_eH%fL=H_jsqM__0w~ zTs;yHeN%8xyL?m|2Fzb2Id_QU$oQRaZCXH#!`;L=In+0%~x`UG)+ zd$x63&2fcO8JX=d#T}-Sdy2fVql>a$#s^ndClX*qu6dlK=Qq<9p>$_^JBapJzDNN_ zh`w?i7)3R#@n2n`*Bo;Qi#-IcBIb;tvzlC`6dt06Z-`5cOi)O#Qi#1BP83Y|x9i?# z`;#y#Hbi`cirTJAKZlos)iT|`J5#`+qstnrfL|iuD78jJWkj~;%X0pMJvm0XkcPQ) zZ^a&|O=)xp-3scqtBE#Y&xJy7+8?bABU^a@dmVmlH!u%l#K<46=4^Wq4%Y74RYOB` z%h80%ZeP2zlv2a^21Yp^MeF$+F#nD_9~F5VU1#wsLcI7(y~2m z;^YvI$3E&C14O2UrDV@g;IWjf_Hp>wIXI0&Nez!?TZ$sWZo!2x^lkU#xrP^m_Dl*7 z85lTTBQ)rV0)h&-Y$|1;jhCiUsW(;Gi1;)v;T8755@IfH%x+p(P<2btJ%5J{52@}i z%Ok4UBj~J zMi5ncA%HZCS9)^>Ki^R>U(}4=c(`M&q-P)+Nf_!%Kjr*BP z6Jz#9;WU!Lfk?>$1g&VRyUmkW10&zXqS z?nuOGkb&Ji))wLggyxgZSz}Cxk0|^0_qWm|g9O*8aQJw+&WV~rO5T?4N-#&y!Lo=N ztynxxn;}CTwf*^ee_zlOzu>a9&=e`Zgd-f*E#9G(xRRh4XVfMo;+`w zda;gL8uI}Y-|}-t6Fg{*FXz1LLU^`mMB>m}?3Dq)TgM#tAv@m7nD9NXz_E7GYtW87 zk?xn^`(jjS57JeKo7L{#v%GjB&^;9v0y8WJd=tjG?*8lB;q7-$ty z$DcJiAyOrTUbipd_6c)mgB|VRBvT;SkhY-ppLP5M>wbZ&=Pz(|9)5wV{?-4!F8}I( zUzdON4OdUKWjjnq(Sbv$2~Fl=<)s)~dv=lvZsQ1XhG<{n#r8;ZqMz+1-AP!`$d+*m zH_-~zF^~gJ^Q0Ulq~6rVp{$Z>Ze^&%J8oq^n9cj;AZ;Pvc$G@b`x`Ua?d$E-X^f@| zA@o=xDIYFPK-=?_d&l?dne2yT3UGRzszVcVMlZ7%(RQ`IhrAbLJv`r(6aQTAm-7P3 z%So@ts-vO}2+Y?w@Y!&S-5HwFZFxBKFjv}>Llxv3Q4~va9Mg+AgxIQSc=&Fa zZk_t?_eC(XRn?g;j(wJ=d{VG(2~)p*7!8MdzTJ&&tGr0!%sjM-b*!HfcZ!hQ^hI8G z;emQJquP#QIB~{n{$9dNr9$K)JEuZPyshUDC);qs?u98Yvsx;nPQS$Aj)wyHvsc~i z+b-!)m&i%W=oE&`6m|YcfX9^l)FLd1o@;nnB5`d}E?#BGJw=IglPyPF%v_nBxFeh) z&BK``jr+*b>^&IxSYJ12h$#qM?DUc&+@C~=^TS=_66baBURJ!}lm>i~tJI4=m4}_BlLXI`g-92fd z@{&9})UBFgb20hrTxIWDrM10;cub=G+KgWOU9tmre+~tvzQ05n_kTQklaa*Q!+qtF zcdJ%r@wfx#w0AF}Ju7SaR))#-!vfC6+mHD(}Sj=r?p_6=l`6udi zgQAj4@Z8z;aLjpUhNSFu|yE2N;$FapAOM1QgtlVP?Nf>@79ns zFSfc&=picqIY#aM`+Iyg?+J^{*8-ln_ejVRQ)rQk-Pf2kOTs?Z9&fdbfta?z*o#*~ zZC<8Kqj3FhMoNSyJ|imV^Q;a@LbI_c$+_#ou>W`KIL>WFK9LCG`bWCcK*4hf{}6a5 zE$Jz5=)Jp#Rx_Jj&&f5uPlERTwM}BfXlUU5?tvP2x2rX0%6k?|ww>r;EGI-7yZdl^Sw3==og1`#je7GNQ-1yx&$K0!z|-_+1w#CCyj< z46;AOkKKnEGd(T5}c%v9R- zd@kZ;<8KT`tFDzd_VQs5LE2t)bnRsbIBYqk8}<0J#B>_f1I|;)3&b8G-dS0YzI3{@lmvo>I5&z?P?b$*`f36R=g0e9#kxrM`QFMrL(zcas%{t_b;y? zPuMkiJ>$hvpK)>zIhp@B7dwZ|(^d-&&7OCUpdBTv$BKPdn#(i7C?3!wfb1*5JNn#7aeY{FiPJQkB)=ka=Qo}e@ySS znzfnsr3Y6gQHNuK*=#vI+1%TV;YPws z(2hKhW&P4FjLJvr)HMB{b^HVje*nDx)enGo{0Z=mKLOtHC%`*?1K#!`PAah2hPFfK zJ3iF&rP-qBoE2=xpHpm2q7Cjq_cTjdLVIT!VSdlw!BrerW_icj$6Mp2GsPo})l&4y z6#Y{Yul8m7+7IX~Y`E|hitTeH|3PUQL;u?hyPZPIe|Je<1KF&5Tw;yb13H%ZGU7*H z%{I2i9*y4ZYMXuaa$2p;nHM}T04U47ZBF>>nIMMl1ZxXy*O+T~Mmu!}#ufDpRV$jr z`V40CW6UzzYxNx?Y9TLQqm2ztYzrJCHEkL*+Z2Yn9-sW|Oa++)9XQUF`QqPajwE@k zv>vC9w!4l6T$Cu`(EQ)lC9ie2{yD;;V@x17uW!5jIa!1N#!%UGN=so~QbNJORLBJP z1kl^o-HF0s2BK!I=6%maJcqK$Yt-%>m3x&!0VjcW1TH;%{kjK$6ql~jAA$hhKYzZ4 z9IOomGaiAmHvoyMhW!m`U?tm%k5c^3xSsn_w;d+Z4l)C3U*mYL;APf3Ce;26kE@tY zd`8rD>W{q)8_btQC16b+^T(^DJp)pYcH*BRKCa=kUWBAFssSA32Srp}Jl#x>wRCxn zZ|5hJF}8dz0h0UnSiuvTicoK5%bZ@q+>>*R$o7oe*4n0K1l{3!z0Vr6hQkM2+h@jm z__yTM#k^vwQEoHA3lY5Y1HAn#)HMiTO6ukF`#&eLB%t0UJ&w-X6iA8OAxd|jyWn?8Vk^PdcJ|1cBu7gE$}UsR zxN8QIQ{o_(f^sycsJoFP*3~wcinW~2`LI-C0!7hbjqfGA9D4;3wHljvdn<2ULk5ij z_R?)_cY9(@CaRP`hBxI+q<%f*D(msw&%kbv-_8s-kM4`hI94p<3J8|BvMGZbam_(X z8$n=VqPmJKd7cR`M(~ih6-HuMaaHGU2(fnQG#*MFP5qlM-2U?}OI(n#&@f%TN)29} z@N?Q@6{2F`cj^Y1Qq6bUtbN+KBy3#aQ2{^kupd%GFm!mm0xxiiMnlis3X6U2eK!%) z8P^dS*9Ba|=${kEUOzNDle^CNz8nIObx>i&j0`>LEAgk}krX>lWR-5)4n$3)s6mTH zV{{#J09@hcG4O__^p&K5c%yqMPS)fAXjLu<&1LS5%Vaw0@hHddxG2WCZ?|QY$*&VD zfiXfqYDOCa{kSp8(!Sqf5pXMQ=r-)#ZeonzvxC6IYFu7xctzQ?l0D;h6RS!-GBq|X z&=vCidbe6Uk^Xag$d3*|<$-NH4Til#P#r@ww8;ZLc0-Q_X|4y+e{wgQ-2)8=o)e?z z=l)_!g8ACL+g|>9kY2!4r)=LZnw-<4N={n@$_E+phY7nS%S|(!L6I8b_|qjylw3Pj zhV@J8maD*p@AQyNsh-DJ7w9O!+D93$9Ak=aDvQ#3USA`jPNT*n4Z{3f%I9ES|K{aj zD>1~ku6wtbl()w|I`;j}u58~Jhr9hJn*sJzhQ8pZQY681=TJ~ncP}pP+jb|nWVCb~ zm$;oL)H-$;ECOdy3n$ySK7!g+ANWXg(i6{(Pm^A_^W5RS^tmcHCl-~wa=BY~pcqP0 zo+F!MQH0x*vg>fAJ~?Z7XjnRxiT+=btu#38EcYZgO1jGlir2Gt|}yzm~svyr{nCu=;9N)!si#d7I+v4({p23?2JT z$#>N*+r+q*$=kVw=$2;A@7jV<()0%bZTRBfoZ^gh&)%j>b)QZs|2Pa`ZCAXwGox<7j%V;c?`Wc*--0 zf#S54lW_QiVUu+4<=9+eR<%!@il3&dh-?PtbxTTa4F)4aEI4cI?KHC-Z$>YsF{d~| zsHSAD)bDDqo3>4B-lXRO9>*=)N)Lnf<-)6L{S*)GAX(c8n{M#O&wu7x zEugR@Tc!~T5Hy*!)7S!=WAq>%rIb-jERsbYv%o^|hsG=LXl8Y8uNUGqoJAQ9pKmT- zl?dy@O(RU)k3N~9j5*`AvDX}ViEX~&#bnfQR^=FS>lFWlZ7l{H^tFXNs5Y(|4I={C zjW0=o|)ZK;YL=!_sf`aZ@9-U~rh{^3d%cCpq*KMoe z<>{NTz@qFK12zEhAv$p>ll zAj>T_vsIX*B~vhO2BpVy3C|I&w#;GQXhnQINn2u6(>ghDEpKd#>;b}TQ&*sB6&|rD zn<4&+lSSRMLk;0K-o-we@IGEyWta2A5H}$CyP{t0f%VWr`g=t3f~{ZA(Gvx;!3{NN z3H|OqFvtKgFYHJ~&*wjWWPEE=T?_EeSis6i*SmNQt0#@I{zm3sZAAs}77_Jl9==4; zF{E;v?+?wYjT>q*J>QPJpW! zx)Xj#0*hwLeXig_F@-phgxX{JT*ea)Cjyt#G+Wf_V75omd2cg{j`e=WrzuU~q*S&G zxAmBwT-kOK<#efs@v>kvP}1Yw>JdFInmEA2=3kD$-quKV$o19q+B zHLPv-fQ<8G)v=ae@1!Aw32^xdR2FU6ssim;NmlAoPF?}jt<>0#n!96$T+$E+TAhY& zyrwuZf7=?$RU^kEaXbp(_4o{D zrUXC}Y^ZrZ2|_eD{#L~E%Y6A{0`InV!k4|$8$zL??=UACzGg>QGRu&_;qg)xwU1!V zz{nQxT-JB-`cJy+5jyo5;zg7yZ(7FB zWg?zlboDOEe!hpEqnQ~w#IVi(tmP*J`9CA$>tFqVjHjQF@$?fio_<2c(>F3c{=7%> z$Y+7>#~0)qx66_(rbtLy$KQq^bho(HVjIM5dl&i^59zO$;Nq1oOALqlz;+ODyevsA zy3Ev%KNPv`a^Gv;^V{T!CWIMnJ1EZKcrN4LdF>H50M3%JH{1Wa%kdu9#)VCCI-T8p z?5^=a*e~g3IBUz_oH%czo5fsuFUq#M!4cWs$GPWOtr)_=aR(uK(XglZGjNlfl?z4i z1~5(7i0zz3)x4s6O_Y!x?(}>)rhklpLogKwwkBBOE?4I(yC)1B}%7Ch6AHO>i6B0C! z0>qPf>+J*_E1ioqNeKPVwR+M}kDKU8&hcEvOGm5YtF0>1w8mwvB0#fd5HZ&PN2iov z_3~;ddrns@R7U*inpLtb zpis3llze^vmyR~+V`hE*l-Tu5WZx1g-~F{%u{{q1g)c}IsOY%?TwsQI*sS^5at zS!MACevMSB5kud<8MQo{39XX~-5DbZ)s<@h@3{;8P z8{s?1<`8llHeGvoubmIX;1yp+)snmpS*NV9+6nYr!V{)$5gMW$BRiK*pEM*t-1U)$ z8hHw)Wlu50ezJ>bX>Cut5D(wd@(^jC*scdmaUTZw8IaZ)x1+iHA8kV2LN+<7vkWqe zuw+>t+ok6sz72ts8)S0`uk15};1(JAg@#TMo)}8)$vI01Sm|Qhu1niyq%iU7zkaHb zzb5&x-H4uFutpn^1es8oukTCtye1#bc(ofFuK9Z*X3X1bGkrnSm~3jhwF@(RQtV^D zhT|@hsAk84Z*u1aA@5yRtD}T~h>6$!?%F?NPsVi`yydtDscBKshlTE13R)uaV@}vK z+<5G$wC$q2h1(ore&?USkC&qR6%jlaLJq^^eI2?ca2s(4x>IA$QCgFfw#mAt&1j=u#I zVbs&E(J+2nIe8PYt^LLJ@Z4Wr&tHSkSZwIZ*h_|+sJ>(UCWUK1>o1?z@fgM^E7LU- z4z%a-U0DBuI;Wpd=kycmoPR={^G~RA{t0!?->CEaBVLLt|31%k%dV$wbzsVBx-uUx z8>WTZz#Kz|TdjZmap73m0G3@r{gJoSj4+ggg8N`=T&IfI?y(Yl=9kkfaK*Xj|T@m;#;yUAM( z-~8x;U;f5RLNnT9efHdeoQ>@X8WW{LM= zYV~j;-ANcF$2s52c;?SsmE)f5*<&xr34l(BHD_7YC@}1vOMb6}dd|Be#tk8^mnhHw zHiBH!R&gX~%Q((ntfevwj5zgS1Rt>5=rD9l#_KLwrakP>@Bi$(Qg~&HVE0gU!*(fH zv6)U>;k(MAR*LofY@m16g*7IJ4tOeb-0nU5ftl9f1Ev(1xARV zR=D&1cW`Kx^v?J005gX(;4?)6R34;U|J9uwanOq4xqcHCjer!BiN@)zerl2 z;TAReu|F5^z?$eO{Cg2il~ciZq|$x~=_wUyVy7 zkc@=cRq3A!As-l%qdp>+21F`2#_aq4skVv=bj$4Y{#zNOUy+dOP%nYT=L9>DXN;Xp z8p@}!<0|Irxr7Jg^wg3_hAX&smTZQK(S%-U_XTWrgwjLD&VZ)Q1cwQM>(Op%-_6u49uqigS5uKKPLlj8O+tqda$_FVwmGNyJ#v!$kA?6xf%E zqr46+yqdj_B3nW%BqmWc8BxsL5?9qhI@D)9`vzr1(VV>@Ba%#e2N#|@n^cKt&g%bk6)jlm3hWQvz?a5YZ3eR z%@8Q-QD2xKd_IAWRKJ=h#-8At<8O{!fmOu0eh)X|ilr(U(Gv=883&*8#&N+aE2-_A z!pcP^d1JciBn`|diY;7?p+iRzu`8CGyq@>w^f{iVKTwO>sCXuI&^dwznJ;sXjU# zwmq#*9iZ)riRNzrI{x9*&e0pt>EEp3>5os~?0-?*36r7`ny@BlE>6`7kG5aJQSuy~$Z${_E zr1BsUzk3Y43t|V{%B^+!HjAcKbIS!%6_0QPe-2L#g1>g;`bYn_+PDTvyf4(o3P-mn z8Hw$UdM@L0zMg-Q6y;(?B{_XQf(EATdq=E})Al=QZq0_o#tr4-eQ#!IXv1zSr>1@d zd8J|ZuBym=y{3-;Ue_m<9g`osC48CnWBJZ!Se3VA_>fQVbqJUyY@@A5lN!!w^lHr> zMCyNT6Nr0OM_VdEo3)%L|GAp}Y!4qkrpt(PR>;`8fKP0R9p$(FYh(`qik zQFyyL_E-ICN~-XPRILtB9G8vHL;LT01>k^n2$oD2wr*a3#u71PkglU069Y@C$snN< zbE4;qXOQrTp(ETQLEH#>Z6V`x2`_aGWz3?k*7L4u%M_lO9NwdkREMxaW?A4yFgIAC zje$bf+|){#nDC^+{XRm4Eo&hWg1HMx94Ti;6ad4nL|Al(K?aw6wa^EaWqvN=X~m>e zC+icJJ{Rar^dOVf!3$KK@zEfVr|yx2>br`^Bc)bDsT_~WW|Yz1o&}Bz>(R-C2O}8f zI8KbJ0rvb$`~>2)dZWF@xM@SuRnONNo_bf^Rn9dcuBuDC=bfGDBQ-*9B-Ebq-IQNh zF_b^fK|a$;H(#z{x|)KwgIkL;qqK9ashx8eMH}+2Hbr}Bfb?0+YAZTQ?|LqQEi-4p z^YQ&(YF8A;AlW&9{(|CmGPI8+Gyd!ApL~L&(gCTvUvzkf~>1_vBS9=%TXBTbOpjWxK>Kein}q7F)b~Eu<@fE zm(aS*f9Ftb36R?xyp(nF8n{e`f{H(`&u{-yxvIag#rGtYTtDPXu4k_`Sk|tKSs@{z z6yBqz<4&<1H}#OgRF2T?7uzE)nriDAH{m*-Y30NPuq4fEyqX4jJ8HuFISXyahYAZ> zUMqM`O(o?D6NtCPR_0pT(l#3`ly$hRVMX8Q{BhP9k3My_4bCw_I(v{aayHL@!UW~} z{Zo5|-QbMu`rhn}jhR(zr;S71LsLs)(kn6OwS?E)6v@g#ASI=|3|yBnIyXpm>m4HC zNH2%AVMS9xDNBOVqpq*eVcEcOzJk8C-pn!(zPiQJIQ5(xO>Tza82{xrope8Br!%ei z=Nex8-cziTS6DSsrVs*+h+v^UYWnLNh$C9?BDdI*bh0cVyT6$!WuH%OIMkOtc6kN1 z4Vy-O3qz>;281$vpzv~|s0)U5=3B6YVzu^M#PdX+0+FXcm}TiUhz#BVH>8HC_h7@{ zo_Q8}a!NK8%l+VM42GrbhuZBAP5V!$^ixKx z__b;*qq}2_AjhfKg#xw$9HuKbN zH{(|`U1jh-Jy!A{_qJMXk!`gnr{F6EXZho4Jxk;|fXiv_n7jQgvob!LSNLTsv)8z# znSHJMjk$-Kbu~o1$*<0U{9Jk|Boa%+^2}#seVqrtVAtg*?7IAfUDuzm>-rORU4O!^ z>vMq0^zPvD0Z)F@cIVV*BM}AFa@`$|+7Z_+;=>+|70Vd()vJToHw;#LQd5#<-1DlZ z*bxv19$u{LE%98NBk81mQx9ag9ue2s^vCB?{vDxS7A<>1m)igN@2Nu2e~I4wW?PVyHrOplYTn!6Rb{+_usgkduxv*vCVtc3B87 z`y7k^;wCJAi@I+My{o-sFSxn>6M8d2P&o{JNKw;<$TG291x9w%+|U~;6K?)?-_bGS zaEd7%h`u+mFAzYj8`xEabVchN{;a7-Z#;z5$G2mraqb37n$(2B(~x}B=Q7@jtC!PT zTgg(H90~Ddwc>2sx-^+SW_HSo37@Obh}vgh0GE8RyP}AzSG$aOIW;(yD`5_^N6pi> z;w3sp#;;1GZm&d3lhAfKYR?tC5?3+FS=>)R>J3)tV3V#ihlE?lGeo4$h-Tr2K-%6D zY_KbR%LQm+%p@`>1D!&9?Rs<8nBztJF|-N;+-r1@V^00Y$&7Vg8BVXyMLfB>=Aot# z44?~(??e9ey2d+cs2q@FXhJ+n`umQNDJJ1V^ZXt$GU}0oZX0M-QBf~XrS6jMa^{ZP zU&cd*Che)4_D?c=+<8;_xVw*U|Dx&g1d*&`Y+sX09VPbJQ_L)@fMlOf%537l-;dBX zMlT)=jQn}u!gl?U4(G@fiqFeYIl=4u+8Z~D-xYO!#MbXYM#K-QDZx?uqf}krfva9G zYFF2PueOV+D@ZKF<0#KIWN?r65%t?$h=E}HbfLzr)PKxN^dT_BwE?9 zVTyx@3m#0#ZRK+;44?2M&*#^Fa&$Ldt3(%Ve*qNltw{bChU*cJf%{1zocBddUi{r_ z0c=yZaMR<1)Cs*pqiB~En1xTh`xE_%bk2fNP$x+}M0kq~&D`|>PXzd3o}Mdsf=()v zS@#uZq$bx+H4N_fe^d^y^qb^!i?^K$2`6gx60jZhMHM(6^(jNFyWzpsijkjg+Fl|F z^mXXZ;A=Rl-+^&Sjt&U^)kD9cKht&eu0YYa$#3wKt>r8>UA?x_?iuEdDvT8&p zU_&;Tdo*2pFu7GYIhLAdkAW{*AXCcgYYnr`f_O}Vo$_i%>0CWScsX(ko{RV<>ay?V zj|E45y9#MZQCORHwxYdM_PS}f-RLNDpMcs5TteO8wTy~~MAPAl&EbdKXpEkRbAYZ* z&&i56)EI&p^8bAqIC0Xtk|I)0KUeWWo0Cp4*6Jh!tPVsn_81uGu9Z7<^c3(I%1EZr zRW$K=6XkNm`l3^H`HI8}%iyi5CQcu`(`SfouOKl}xfu1wRlnx-ihwbh?2*n-uczvB zFdytQ(C79O`rLj(pW8S3%=Pvbp?07s9Ho*cRn*Be)o9zz z*{Kq%;vJ>Jv}WtBJM64C-DaBTZdE(!Qp-OjDLuQTEZcJY2b4k-)e8n^us3*o+B^7# zK8>He>!B1sdh6SNRF3Y#?FrKk(x&6TyCyH?sMC|=ASuw*Z*+niCvTzl&cUBYn9Dm4 zooTN$C_V>HMnLZz%O8z_@f4>8ZVC7PJ^#@Pnp!WKr)we8E22|y7?+p&siX^UYOE?> zw1VwT-^E4}08Ny=7W~VQP!@s}9K9j1Tzl4%Sh}f>CgbgPVz=sr$f%r*Xh!Y-hA(T$ z%fx>;0ZwkSEF(MEJh;8$?X%AN^fu76x$kBM_guzHG8*qf^jTZ}UA|0COlGgD$g)jh z{~#FEp*waPSO%P-oam}g)l$~jjP}yqs~Aw^AYz^cUwJJ*r#T+S+hy$X{fB^N!+*7hr0yJur^Ii6%WwGy~2O(ME9FJVNxR*E4C&>jz(A~Rkd@;UJvXsFm0 za$hPVkfA2jTv$aO9#gD*dT)ShM{QTs-T|Zj}{* z6QdiZDEDma%%o5dI}Xx4-LV+HV67Nh>&aSOX?|*)eD^A9GwsxgM?l&>_Z9q78uN`Z zIeV<&Efi&%ChAZnf0s8@n*4Nx0&Gi-m%^NmkHOUAhnW?#$MUAeII3=7M$HTo_X_E- z8LZ)swG+F zvARL_tq-6`4SI-C!@aCnZ=+DOzh8q~yhHgk(b3$`>YQzBN^@!Il>H@6-9sK!4AAEa z-ifQk+76OxGYizkzEzM;HS=um>Pn){7e$tB0T`S%1agCtz3xeT%O-O6qKvLlX(_RU z^L>Q@A&AHla#Qcce&Vg5HK1Y%Fu$wGknFF6;}>-xW>qUf$s6-!hJWt>88DR93U0r&uo3F(s)qeW>MQdaOr_u&HdV=?y{aDui)} zb9Du6qZ76p2<5cbeXgXb^wuze@n=dcn>P-nnq0K9d^HBf3?;dAZ_gFH5U8>zKs4f> zIw5HSX&Vg+#}e8}I|x|}Ojq{b5R{GL8F4T_u9Be}eZyoP(lQ=Kl}#*_{GZwg?g~VC zzIgVo>qV1vu9tj*K@ri) zkZT6r8E(l7I0^m6TA12zPB2)zyez!$b56@nQ_UgW{q6%%=9r>=$9P?fc;inlNhZHX z5?}5=#&DMqBj(yi!O}RHdDYX)ukMp-a0{Ev)jQ7K%BQ1oE+}$`-o*}*cFPEc>I@g> zx7dZh=z_6r={euAU>PjGbq36AbR!O{I+I2vzSX=~cj zTgRgk4&#)YZb`jasY1rgh}6@4NXqqI0CA$ed*p~(dy*Y?;%xWNW+7|1=|7$AG9(j( zVVDHE@n3x4>9}P1oH01=KiBdf;OK#e6|=BIBIbW}N#1A_Q6fR%k@?&Q;*@j>{r&TR zQJ25vGB?7kf#hrSxiG_S6%7B$rI@zDaH3=~q1(!>Xl3xg34wd=$J&USg)wx>&5yCS z6oVA68EQV^=>Cs~QM`m=4aF+|K9FELRz9K1_IT?hT}L7o9Mp>WU~$0O*(`7@FFx9r zHSF09%DHirD|5(0Y5U;Pg~M}pb~9wqxc8edjV1-UV|95g;sr*<*#WW|BSTep2$jCF zrg~?%C{E)$NufX8aeLwgh?m(unM&NGRxqGdMeU)t=XW}mgTU~C!CM^~aGU=^!#lo$ z&^UVq&bFQNoL-A~!BKJ$+)FLk8hsFI%!y$?oj@PEhd6reY4;s9J&V7K=DcjzqBzg7 zv13MKbG>JBNDPU!(al_Ic9iy#{ECM2B0udz(M6&GJsvLGIX;*1grzuAY}dWFcgJZT zf=Y1&Gt0SgF-txJTa@|2Bkf00X5+$p;~CWlJ+WMkv62jP;xQqcXcvu?wm&>~R3P=% zzILAelm-<~ns$864+`=AMx=@O^qOK*-Zkom7p=$O#oh~L$$Fb^o1Bh4Wf^5hK_9OY zn=LxlTAC^a=Xht}6ickBnY4x=6$5!K;0Z^Gn7I?sh86Fhf%Cwa*jrvU&_?G+qHQKlnM1$)nsVMF zqUL+4oJ#nbO}Y|iAver#(_n~nzWXHDqid{F=PSSV23`yLIH!tj#xukz zw?xbht|Q1n}c?~V|S+6wv{xR-rewu_kLYFLUc!0yr+6j zkAoT!bd6_R(brE8Glwo2Ts8ST`JgH+)vNXL93CihG44k5@w)g=D2h%(bD~vMNRr!v z(J`Zhm`&VIDn2y(w;?5NVNr-ea0S_6c}E}mE^}OM!z8(Ws@1Obb0%J<(t%@m4)6#A zsqvx*hmhCwsKKu13SQ(}2r5hkqKEF_KTL6>gvVr|QCY#W;roP&+vlB{aqY&NoPIQ}GgmdP zd!F#N>)t=s=Ny8N8Tudf%X0Qs!L~b{$!F@tn2r;*4DP;1Cq-?)tgn~+r_Y7_1loQ9 zqx(-_^!N#k9zTK6<0mkBJTp+uAcmN6Iq1K`h$+gn7S+tjXW##r;Dz`v-EI7S1Lnw@ zOk1>X>sDf-c*E_%)7B@W4t1W1>>DmN!S29CCpd<0Un7J*hR(Y_;lpO{_$PXX_y3dx z%WU~QqMO}76hTU>V&KN%kk)_F7k!KF?S5n^Wtey6!ryg=)^!ZLlW$+n40}X>wiU(!eVbPe%|mQa3~HXs zc%oVdKeOL!rcsuuQ+Rg_vF4A&SJVP$MKkPHWY#1hE+!I8g~%^G(qlgHP?e9R|I$M;hA_rteo6>9=6)2iu3$8&E$lyjuH)sAq=ufjUw~J ze1{Gr#FV=R+xTIFo)U_?jz(%~mgu#+Ys;DY?t&S4Ld$gk?Fnx@#wf|geimb&V%83c z(A{2lxWFCh5)8%>cza-HnCYUzwXCQs71_fM-!&|egXTr zYw^&0e)(sPjO#Q^myl=}JG>)gVzG%Xyi|1U66?=)6&V}P{Zgw<+j9(1mH#c5(d@ZQ z;3^Ilrv#N*kzMl*>fb}?z$_19Cy%mUMVtoA5)mHP|5YDMtM-NpHrEX z?m7+gL>Fk`)mOzCyN2+sE}mk#6`a6|;WCRfML6 zRX%3*#|z%Z?eFS`uKYtwLCNH2^$NEFp|~CRe)J(TTeY!xU#!O3yDY?Q3pwJ3vK!95 z;FI_)-KPO$aa=|gV`pZL=A&`Ly1e`DODGv-JJatoH-9eTg>Wyyr@W%G_cLsVXN<`P zPfjUq7EXdjaS@VMqxEEpciGgcRjRW*$VOjBq4rDV6JbYTXAnMa#XE=tIjfvlqHkqs zn@k z9IH^vg4Iur9#x0{iragauP=|x?aW^~I+Uj-lvIdKpy-9xWoj@bZa>{BaIM*^I$!7Q3tE6Me>I^I_O{z9UYLFrH6`5YN0if@YqlDP~#T z)CJN+w2oH)Zevf4nTYP^%*8o5-RC}Ig?1s&^uQ}8HC#{JLKX4at*zh((F3LoOV777 zoDd7r4t0~G*X?+s(-p8B?;OM$5Wtyx4tKUL6)d94zz5d{oJyP*$`WaE0$z^KQ9Lon zaDlmfcDma^uIcWOAoUKi=m3hb^|AoFUz%NX&n#4)ui5@w#S@*fXf`9Y?|ZQ?WM@DW z%BiB{{tkG{4J$-LKvQ!SqO0=+bBQXT`}7MN}{JMu#sBm7_ zVogrTtr%jd!XI^htl))B7g&lGO=!nmmKg=;OPtE&u|NkEicZ*;+i;iH0Y!H(xfhkf z8!0CPs;G$y65+%kj81MTtEDAoq+Tc`?)A@I>jn*?buQWs+IQQg7u=hvA|G4rjrN&) zMPgLiL!-JqGjMSD`TgJc)MUi7$*Z!siRKj!oHZUwB}h)6o8kGy`R)240>^MgB~GO& zfZC%Urb0Rkiu%^fiB;$0S!2Ob4h?a|v3DEX<$@QmxKm_&e*YIjZJU89tsLjiD~A}w z0QQLEM{!Zv3kw#LK3b#pjiz&&W0f*?W2yFXVo5gN$AT(k9W&TAi|QU&$(N;I#i6b5 z&uzf4HnG9AX9@h^q-x(N?)zqTkASN4SxQLEqXR$j^mq-=BjG)QJ(q~x0^7PIRp`sE zV8!Ix?-eM*tfmarr&tG$X;*h)rP=AG9T28-8R=p0@X?Y*cD}yUP&$2IZY9U>de(kmWkmvW`lQ@R|xN{y?wG_F0&`dR-@i9-Hj-@ zF@nINbIclXe=XvLPT9)SK^Vt(GK>c-E^&Du$3B6LSd^RKptdWhhk?ZZ+TJVLu7H{@ z_c4aFw{*&R3JeWlw2-u<>Z6$p$S`I6UJgvs0&WqV4&G~5edE*fN>V=(;kJgyNDn^b z99zG!m*CJ*K#dac!?r%sCgM=Eb`L0CSOy$`_m(m8`L_~CaRb#BIKFd0IUvS`Z{51> zI3y4q*<~_*jL!n&3!I*Rm#$cL6n%PVmH;qSi{H694lbo z3!BC#fLED;c>mnRPs5Wx=kMSVT=3IWi>2!lqo-EL#GuQoI*l*;m-8oNdj5n=&tH(~ zIQ)W4{j2|dUH;YozApdjbINWFYx3q8S&!kb-OvgXk|aO*-uJwG`_pe+1q0(!oS!&T z(;1f9R9aIxR&z(P88VO`mZG?_e$?Ozhi+f%vGEey(!v5e`)8256M@Iq1RKO$?69&!l4W8xz{sbqp|H~f4zt8ZA<95HbD27NUwD};%>y{^2le9 zK}rlCnH9{-KMQ%By-5&NlSwzP0#0&)ot9{S`n2p;IVqy*2mIsW15sp-5l>)*6a?Nf zQXXUdb{2L_!(*h-Cni`b+h!f(s6u2!7gAl5&~rvCcq+2*9p5S*C-A6ZLk3A#y<}y! z@!cRcKA+u5Y1X-D&q){6EVc%b{KS?JOumIO>N-_Sxid&~oe%+oWV^EmV`yyj!M z+5?rV%&&B;*666pqxwkH6bMh>(z#$vyb?qZ0^#dsJdWSkJjK9U zblE(9sH$@kUd(<<_XD0K-(d;s`hFzG`2M7MQD!LfJVcTZFXrAeh|4L{9fx(1;}ZdA z7&kex%3|dpY7;IpKswXo`#)jv6n~^6Z5F-^_sr$s#HeR=CL_2e!O`f?h<(#s>=kA} z(d{mAZL2LSMY?!%0)P9gXVg(jD}&x0$<#T8?YXVJWsqs)Cqb9FROxanXyr!3~&oMh3i8 zjL3Qk%uq5%#P;9ndFP(C2(F&KOwc4Ny3m^zTeWPcE4baZrIH*zSMZNg_KX#?&d*I9 z6eYwPO;)OIUy)dVe>GElvhOzoS0&hzVcm^<^oj_MhNMc?_jiMi{A#F4HU7^`9-Rqu z{(fH&TDGKcAwP_-Tkr(NcZ?%8KH7}5$-#yVH8*Espg|oHmb=4{^WV}T)~^1e5Mz&6G;%9 z-S6=fGhdWemN?~NWxIuKG}fw2ihmY)0$=}XD544MdEVpoTD|E#d;!f5MZ^6fV*reL z>+NIihXAmXKEN{R@YX+<@DDQ?!I0HPyKBQ2m)34EUU4@aFPn(6NuXrawC-59!D!<~ zH)1OUEDJgA1?}uB`a2-5>ms9o<4Cnbgp&nLdV0G}u!1s_pDm~La~gbiz zkXDGm3#8t;=)CwL8F(335Dn|srtQn)XS|5{I%${9; z+zSFoia2BP&9vj3KR@PdDEW%P$5IQ_dySuq>Csmzu;!H7qy6}^KzxlOacNUzSbe?sSrhu8J%4!YZD_>5mFVcW?4<86!DCD7XbIl! zR@yPoP|i9ns%qllp_6W2Qittku(?K34?^BIz8wN0#1nf)1om9St1<1E*C^)V$>65| zZCJMC0;|yu_BnCuS=HDLg5_u!QhO{QOlr1`qRdA>;G0!p|7eB*dRv zY9R+#X|K#|AWRlh&tOs*xK>{25CG4$Dm+7fZPnk$;9 zdm{ega#z-=CX<;>iv4^qV|v~X_H$ThHo>u5Yah{2u0+Ust2Hh|f+XaT%+Pf>Q<`T) z%aa(}PO;pFMC;NF9!$$ty_uV5tkgdTP#!xow|aikXP1k!>!LZWPFjZcJhBA zr#hNTZzrDHrRE)zaMJ(Y8nTtpUW|iYRhw`Rc^mg_@5DfLx4Zxu4_go5;L|Ra$=H0D zx~gW1BVW5zd7*0O)dCTC74;9xwC7ru*YS~Eg=ZCXxK{-XW9Fu|C%;e5_}0hsdx=Qz zqiAd|Hj6GE-yhe&^%}VE+6Z$UZDz&ZrDF_-p(kyqex1gNruyWL#OFssCdbQ1ojSgW z&`Kk!b?OyoaD9Z(EG%|&@Uqoy&$v0Juif3`P^3cH=WrDyKmSRT(p(~moW5J#>NOQR z)kL>9nX%ouIh(VOe%e047vM!thCDw_Ag$pwWDY+nJ_#7dbwgtbKkW*qo=z|%_=fpF zyZlqvEhT_>5+joa(s|7dcoigocV_PXH94Eif;DC&2G!NkcaU*UD>;%In>?fiKcNli zH~q7Y=Yej(oT%4J#?t4Qlq^tY(sGJ5XbZ(c)7#@*T`P%lZ$EQpp5fWG8+4?FzQlCo zE-5A1t#JWf_T#HI4&wt8W2&$Nhrpm7{yyDxMUbH|OHawe60z-2W~h+8#@P zaj4Kzv4|)X;n}s??VqK5PW3Z=^j45M&(HNT^@Um_&LCm&96-FUIn&ihAVAb`eJTh! z$@q%bP=WKsKN7&~Fl+CatIJ#|{z=U=L7<=g#_I|`MOOEj3Y`wM=PRO1`?$?*2j$J0k zvEIVX{MO7^%D>cOib*DKnwJDz|J@~dSv{GcAKSwsq8^7bLG@SOfMP-qNL zDYk30AzOkF=R4&FdxBxOvwc_UevMZpl*x}UYfL%2{6*dszDeBv%F&q4#0Vr~-`CbK zy@|)WTc{r>F`=TsYzXlvw<(o4lPEc@u_Xk_QUa%TK2i@C3yV8o9G+UuqK$f&mV5lX z@a)FKsT4Mb#}dYk?Aj0i18gD@70U5i!c!8vWQ5}B8_v0lB||rMQXiiznnjj9G8Hsc zv3rWKi8&;kFqKMU;!nJ&2~Pc(YKE+Yv+d@kW> z^Tf@0n`2M9&fT=u942a#y+d7-1)>lMpeWkKM=-Yhco+2a`&G~nA zPwNb3;M(3*6pW)=f2$hS_-%=9cvQvH+u$i#BG_3wyQyn;*d%wt)l1Z6*B8*cSrSqs zQ=-VX6X)I0z+tJ{*|WQ90gXCb*%y@77-1Lu0>q#^JnX%EvM@ntHaHWBF& zAAh*^`k~vl8>bTyl*6{jnQe(3m04~*l#};?IGDz)_^|v3;*H8ny~K^erH8nQ*vqHq z0-h#Mp&!8CtyHZG06~~TuUw+$o{++O05cuQqkMv7-q6w=iovPAze9#_4M%vWI4GG3 z^qFa}&eiCNtIH8PCB8GadlG#fkFpDE56@HO+EYCN6tj{*I_G5v^686*?91*H*3ayj}LG1o+Nng^+gRe&w*N zr59jw+`cA5taFhtA~5LH9Y63Y(3U=M3QE9_eul9qlTG`C zfM=}8rxBltF?0I5)zRJARqeTPwwwE>*UcJ^==1N*pWo%^t|l0!A`Uq5EQ$X)7=uoA zcuIc9Qgi3G=ZW?nsxG|jmpxXLONX&-tJ{PS9uA^)`j|S-7nhm)-!k;OCb3>?gmvP& z44*a~I+5PI*-JOQ^x|;Uh?@PA?Q>9FZ7jpS+&#>@&6Bl5QFC7V>pN<7gHO4$6D4)B zF9f+8tDmtcOI>Q5Ej<3v$o(on&n4uIIoSr?YfIxTUXq7h=Sru%qLia}H~9Ksax6Nv zQ`>jj{jV><{ENUsJYaj-pC{cHmR$c#Noa8n+vNE@THVq}^auC`1jj}dC^{`ETSKqA zBZl1(O~q*z%-)hs#-e=~dNCd&N*w^hxX-nq4a)}HaD=m>mH0Gnp`F09$GhhK1&~fZ z0n+IwKsx^fNavpb>HHHQou5IhYcyzhtZVrg-LOHmdCAz_w0b>PMEF!M1wDFB zVrC&)Ywg)hFNt&QPKH$0W*$yXHICllcszL2`s!b^)ibkCf`|jw8&S@l55xSQ;Arw$ z1ik2SQBD3=7vu#;+q#%WF$?w@6cl4)jt?!wxWi>x4sAsynrWnOe=!?3gwYlJo~!cD z9j=PSWb5KBn{i0=gl+EW?(!ETx!L9@EcdV1bE6xVthvRPb$+hn2}oBqD3ldCds|r$ zGTGWQR7`w9HQi@3l{9nFLTm1)?;kf6n$N!IQ&)+xn*nc+!l7)E;b+uX279=)JmL4$ z$a`-{JKBv^mN9hB^|_2ED5YrFYLKy&--+06nQY6_a|txF$Ye4eILlA~sE!G&nf+Sl zz0-kkZMv*sdT^`if>A-z|31FG=2jfMLNe{E(3zPt|FWH~uZQ!ggXQ|aMOQJ$`~I%; zHa2PaJhIPfBB?jate;VBInC0^jhRb&ziPCL=f(7iAjEgSOG2Is+mInwH;x!DKh_w* zA3X-a`HrfIaOD|%Fudj$HeC|#zUgty-L=S^m!~1WhNEJm($>uLf#qQpRAyO*rXiFci_>s;K1)w{+P0(V;_9>$ zYpI*CB4AG!4`M8Mk0O`G#34j-`-Cv;jJ#>Mw(@2*vk^RX*;!X4=wX&Nr1$Wd(el>Y zSV6IduI9oj%atl3$%4KY$8yn{o+g3TP8I+#PyQj1_ zDozD+2?v3p#QJ3&WxP7XX`vc1s&+Skn@&yQmo!7UakjGXcm&E=!Ak=x>-by@oH?{t z3bmuIU7BRX)YdSi$Gi)Nh}ZqSZ%#*C9r01Y@%wR$;s2?`APjug)0K8Hnn-`hlXp6=mT%!dg(5b>v7pLU?{&wccbOEnM4 z!C6`NmTFSyllMdwQaW5dSC?3HocdEspBU2-h5A;nh>@WGL}oZ;*!|O4jN6#U2Ftm` z2s?Z<#W7em}>vzIab3ley-w6iC(;wuq33Gui@MHAdm;NhY(m_$XQk z^%WKuFtv6;#F#J=o3##SDUv)Hf)kQmUknli+dZ0BhP&HRQATW%+FA*nTaEEt#0#9R zm(Af85?O^r+5eMW>_hf$6KVq^48_%&y4(M7S%6OA4=iN}7tU$i@X)o7?!P?wN^SRG zHeI4-0s*98p>F$j_HOtYrRk1%vpfvOt>dkO)xFRgY3J?Gr`t?xM%Iq3ZKkEiv!|DN zhR*7#UoYqt%c?Wa+x#dx^}=H&0G4-q$06xpSEAgO+LwsnunolD=!5h05KihH8Uvf% zV<}(AbeBPrz%GaBjSnDDLPB1yN{1UjHWb?c!=Y|L2j0v3^gwO#MTlaiy>O`ypmg73 zJ#_<95ecXBy%qKCwZA_>MWB93Ue0)a4UZ5g&}+7s0lnAp6Nvi-oX$Ui)8!{{y8HxA zm!H7t@(oU>zmqYWrloe|x_=MxHhW-VBUuZD)~zUXZ3pT|2`2mb)ri3l z5HhZEoVyR`$l)QmATVHtIO8AXE11^a0HxJ8g=G%qMI!|_e|fIv?Mb{OB2l@iLtI;? zP7b4sV@(1`UZwe(I})z8C#|HwEXhtxKSAx6j@MPRdP-C}6=pQ^O@>(gc*;;sZ88@J z;rS(>@E75h?VaRAo}c%D<7~hd&^X>d&TbpQWNfMkk9w;08f(@d=C$*zs1YuQRxN=K z2k0CUJ&I_#o?n}eo%sq78`jT8a>m$?m&y9zSTAq);^OT;yp3uBaqhhSN ziE<9P&`ep_ZJCA`gk^59C6wg;sYZ}SAvXO(T(-QR??jU^BSwjWzYBu)kM}j{ve-;@ z@=H+}gKiQUdY|T7{I8rdrhrwy7@teHAmCp5bRcJ_$Wv*?J?kpFNPBR0FIk0Q;*m;L z(76k%Bn)FI_*)39e(7W+ury2{-X;dx7 zQUbfGJu~P%jQpC8-q>|!%EDp++K^U_Qb5@=`F+BF=EwJc0$&u%RWv#SrV5B(k`Zv6 zF|VlXnkl^7h04>-DSe+g$Pyh_0>(O`k|+X_rF&Fp;-vegX+NU}yq~y}nYDqKx#@kw z8{YALj@LeXK3DKmxuW=nz{TvUp5rM-NrH}u{>G}$Iitx(GsWm4Pcm5Sv4|6j-)~D2 zMoR=+&`kq{O&bJUXoeZ-&g5u~4d{Jek*ncxE2YPHe*fwD7NB6t6v2wDXN4osn4Z%* zoO4HsVgF+iw0fIg4BnI3xWI(l9p1l-nk%QDDLd177?SEQ1Y#%~6LukE-snr>%K zWQ=FN$0N_y5}xqaoSsK2-S}P_NwEG(GKZzg)!(@6c;5nF0pKa!O(>C6cWh;@1 zf8wlGR{M*wg#2}z@6m}MB0TMzw^h#l1(tB7m?U4*tJ(;-eDl83_PsX(@?^SSYKo&a zIJKm(7HD~Y--4IS)r@FZ;`p?cOhvUaC4z+c+TIgc%-_!~d3U9kprq4S1YY-^6eBTc zi8680#k=q95H5DkIX2oiRyT!~%QMR$?0Wb34J%g|pP$EbFMUVCl1%EE@YEQJHryV8 zIHYM!ofVj)ZLKjGozYmX;vpl`$k177#N9j0MP6q4+~pQBMWdl{wjVVJ2kR1d0(sRz z$(saf+f)9`uLtQZb@c%f5f?qZPWNu-2>s|3bEdkudT??j_7JqHH8I9|IJL}Jon{-( zq41k8v#`5$D;i=-C{@y%st8DMTpVqsA>M5WV$L{zPv)WHYfE}!Uy{#ZPEy)=E}fpP zAt1eWN{v*6^VmWkQ9~`oA<=+lOc6(twyBmd)*%ws-E8A5ffI)ro2#U~?aMPmwQhE8&tFK**;}d-tq&A3KqCe?`NX}!TX*9|^BG&R)Lcd$i z{p^*jc6o>bv5M_W(Foh+A+lVp9uj926gmpxQGEJ+=}ef{_};ii^Yi7HhUZe+n}zCx zOPtYA=0Tt=H4Sml@oiolvyd&rTyIH$E=H)@&dpg$@XA#Dj6sxovVOYRam--&^MA#J zERx49m@(YPA8hx(tQ=c+443CRegcWVfZydO@Vov5e%GJC@A?z?UH_p9dng?=m+qnu z)mC04W>RenUOgdlipfD%&8k+)mH1h}vK@*QrXkhWgEM6)ixYY7UokjLRvqyRIir$x z`U^qQ3yMcNeu<*J1iQ0)2-#vkpKJL~!`ad9qCeFhTWJ>apYE#G^%;NRo`5w)^DiB7 z1zaE0_5Dv7gCEDHXFmQ7-|^>P?#8WFA4xi5vtCWq42#81QlU*Hj$$q)h5?Un-MerL z)Sa()6X~)uao9+4?1y8z!bedcF^$^oljgg}hbnd@#@h7>R2%}eRYwhaJ=gKXv}QHD zD~>RxD?0<@MBwPa{kAJVK&DI|SbXj!q{4)X*)hAC-k;_5I;S6g>>s~+bFsJv827HV zt*UgE06iWh!1~Wjcag`K*(ny+hiw(Bde%F#*{ecb1A_;JXE9<& zZHjpL&n6i)noe*rx^)<%H5cw04|J8SJo678IpW9#Blccyt1nMI_&IT;4|{_3pP6nV zh-ANBY|(oaV_XAKelt_J3%9f|jk65h3u(09w0kSj=BnF_2H4h40xYpF?)qrngXFh% zaB1??-9)tAuNOhSVlhV5x!orG2(mBs8%4N8KaB$bO+~4tf!IL=c1J@A)s%}bOc;< z{GbGDo4}r&le>7fdEs9+a3`7i`8K@9x(80i!p}5Gk~aWhqk`qZ6SM|x1bJJKi5AUT z&cK(2)w+Cz{SuQ*7~V|Vrb<^{V%Vv*CR4fq@0plEzAJD*AK}ZD&jfHu@YZt$PuB5p zsR0lo><>3Zn~e)aC`X{No=r3mk(i7aY!}7EMHA4r;lx!zM~90$dqB)P@6|5s;gfZ| zeS{J$#gF)SxoK5fuG8f6Hq@8c{p@Ah&dDQ!G| zmu@7jjiDVB#mK$XQyr&j9(uSgA8TevawGetTEfpp_(n~v7~^DybFFXpp>1`qJMe&3ajs)4*Gc>R6Yp@=f>QP!F&z5L?GbPhi zo#Ur*Z(0Be>^K_tRj`)M6_0~GCSlJt`~z#X$`P0kTG^6KlZzu7ZHc|QcRengbI?4g zK^@ldG}2*Wq*b|mh8`>nC={nIA71yktJows1KzZO_?QdMC1owEohxbrFVtn&r`N0S z8tGoyiRwqvu`Z5II^Dd6&u zm1m7QmT5X18s9BD^l*NDRZj;#CdfE@g^G=3|Kc&p_wOzPk@NGgqS94Wg(fe#_zc-> zebudxnQq(4mi=Pe!IqU#ndW)I;#kNRBvnsMq0Ypt`ySt#ZDUwWqO7{XE3UdThU3#Z z)<;nA_)a!C2jU0TQZN$~5VZ6rGN*B336A2kxUlDY{tK{Oe*(7aPr!Ej3D|Bw0o&~- zV7vVrzoWNtq|y}#`(YHs;t4)kw{AT^06(Sd8l4UO$CyIMJ$ukX{|p^x6!`W^&PRV` z@(RH%9@?S%lGsg_B@=@T3hP6h!{%k9Am+!>wf!^HO=upzP2%QjW;0V}glNIHX_zhp z0q!+>WOUQFe;RSSp7%yev3^9f_a9h~Df1JQ8!ziWm-hvB=Xm7nxT}w?7db>wk^ORL?w`A`oD|YYx*rkLBF*OBbFv_nn7v z)126`w#&2v`MHoM+I8w+_YHRc?#ih5t?w`rxpYYkivd;i%1E(}NnaMuPm`fW9!z}9 zc(z32mK;>qb_x%`{#hqi`&61(%|R%;@Rg*3L^&;if5&qX&k3&a;F+wcExT&fYtxu? zUP%TuQPhqxY2LWBE`1=CrmN5b&CN1_93_u$s5jJL)dZj7p9qn}l&O}%e)CdLo{6r% zf2yuyv3Yp_Z_ib{hPXRdr)9e`Q%l;bsY*h)I~uz~W^?fZm=Fz1*m!ZMV2}$T3}BYkpr1@pn9&ve3uFiY3$K<*xvl*jHKvQFl{TFM}Wtg zVX6|Y%0aF$-r&^bXAKTeqW}UO`_9aUCzqTcW<@nyJt9QDIAc@4y$Q3>+*;3RsIj|a z8?P$+-}6~|jd5izt#nEpo=O^Ns%<*XlWyrQr*M*pGi;T!h?aZYoFGGxszPK;n-8@H zEm5(WhcGo*7UKlgymq}>O(XlEp%ZiUx!Skbk2t107w~|(bK=7h&0;ljmwfTTX3~yW zd)`%*|Iefd44>jCS}ZMlBC|cyg{YDw#(q-s?p~93dp0gNE~+qJGu=wi_&HHABmb3Clrj8?H6l){@FeFtBwoDB z;*VpKZdBBQYRmNp5Sa|N2ddj1&7@YRT3(kY0egEvT!uQ)T(d_}4d1uVOi74V&ZVA+ zBC9SD$w!a1nc%QBSYETKYZzu?uPLZ(EAlU9%g8^Af^)4ZUMppa4;=mZ_3y=XMj!i`vnL`V;EGOG7KjJ8MB!g$qa@4s5c4bu!Q?a zGp+aG65SN9yFEJ8c(WPsP^#~!oK{B5yQGfobraq}vvgBy44Jk{WA#%&n`I4B<-J|N zV75%nwe~R7aZ9i@Xjh38n7b1mHKk}t(P8Z?_YNWRY4J|W@$ruet!R$w*3zr{$z0kl zuw3pu!}CaZAzqnfTQbb>kUHf$JbuBR1mv|mUXJM9f@SuSV@hP2uMKtm@~m4mR@Ml| zJgxV&m|`>q&L^C!ke3-G#u~E3cTT~OcoRh3M=F$6JTWiJ;3)+5F*a=Vg%@5F@l-;b zyH^~NpRBcA;Cq=;PI;yiQ=fR5uBmEoBw709P`LH)hAGE>bnAak;}pX(gNG|^c9f90y|I4GWMaS z^rS6H9GA7*_^x}d^4KmE9$Y6+#=V+BFHTAKF=Ux)4mE`|^gN`$Fz@*18-zzPYpHGD zY)wr9HBGiLYn zq4A`AJ_`Fc+FkzIPA>s$G;aFP5Vk9q&SZ?R8Q#RL5$P)52D#L@07X zx(yLM3eUAX6MPuj8GBB9Y~=6Z0rRb7zARIpJ*eFDx=(Se4GHI5G;~vf`wRcY)bE5Erm)eD0AI=Gno4r z^G!^CS%%|t70*8N4hFG|%;2qV#wK}2qB}-eoqzO(`6eR5Yog0@f1;b?L0_&Zun_m6 zF{!Ng8p=yX)XG#IrwM(AXY}%N?g!^*=&+hV!;kZX;wK7o7Pc>0EP7na# zQ(jk=ZIS=xxtaRBft8}Sz|iCD^?Z8<#NnXo&Yf|0==`_RjT?VGUjRXDs<1Ej`{kBz zNzBEuidgr#8@=Lt&?}ip8n7Jq1c9$zoYW_-u2VhB2OpYt7$-!xLk~D#I7RA{n#FM= zRo}Z=L!a;Qx%FfqVE0jyP@tG@WnaC!A}2cJlHw1wa(%Ag35Y$Ir_qS{-F{#0RS`y$ zdodKMQJ}1zW1WKy@!^*9no`YhZ7TifLBrU}$=OqMUs}#sScj`8rUZKvPa=k8$(~sX z5)lhdacoK0=5q-TOgwIv2VBIR=h3Z|Ka7aa{wcvoUF2Nit zy2EbT&`#-+eGAEjWB82)$y9kZ+AY~1_gckh@Egr!e0bf22QbDhM@@vTM;-t-1fS+u zoG$SVuTUGx9YI{qou&K}0!&fy)Kx|Bw=MeuhAa#l?}si^JPqR|l%o5!k1)pe*{<7M z%mfC1Q5V`$9=37&TiBaaXCX$wY(;9ztv^7iP0Oith59dhNWr8QQ|0qE=yp&+wWnk# z2V?k$rQ{NyfVsHzyM#`{Qg-hB0}^7)!^*^ZDssgjUl9FDhv;~oZf|mPY}gYtGoRH= zloE8OnGD_0FY-)SWheiO-Rypx6ynYDxaF+Hbw^CCPzl6Jj4qDO$92i;Y_P*)$5WT`}w=`{txsMOAiy}EL z^x|Kg@>M~FbgQW941JyxnHHmY6p4FGnjrIe@b>5jd-_cpXx@?TZWO&diOij{B&(hZVC_bgC4UJVAc%1uEQVX zq$N!7sO*XGbfQ7Qp+C1u`BkZ1QRs-b_b(Ha>NeOGUX6+UUq$b(Bi)uv6V+=8yZOY| z0pXKNeaEmEz?eFQ_#ayHoc7)tfBf#6HD0ZP#iOayRb};g<%=)oubu2{Zmjl|w{n`qntj2bDi4>9dPOFzw>=$xy(DErU-OERkPg4|UmVK!Fz&7d9eArTPsYZ*V`#b0pn{u2&9 ze!{`WPdNDa2?rnl&VE;k6JD~7C*$YkGQvkQ9gi=sp_}NyHe!^7S3jOJIYVxk>SZ3$ zXY@3`gF302bcLfOm_BXp^E#i)pKYGF;r}yx|fys&47V()`s!hVEGDUL}$G&~w;~tqV;D*;`Lmzjh z@Lv+1(Qml89_iTOq8!t6B~Kt&{+E$7kmx8dg$!k7w|m9~wr0PoOc~@y7E|ah*CqE1 z#)V;o?%^8NF2AMo2lN3VpKEyGzz}Rvv|O!= zHmK?|MmNS=t5>-So%56^x|AO_*RVrvv?!6*qRECiz8O)v(dBsspO8TskLw;h(RTYI zq)JYvQ#Jo97f6mJQw9*@a}7@vcn@x&6kOMWL^!K!ZU8brx90+$WM?@ZXY4{o zF+_LEi_57v(t9skxdz(@91Tgm?f_(5m=SO{Zjsjyy#s2=)-@?Vi~hOsHa zNkA!Prw-1$dY8{-I)tG#oR1Z}xXw(Gj*M8qao3;PU`CuUO%vD3M8+fqZm4^fqSH_r zpj)@ygQE22)L!J-D-QQ400VJhjb<5-ttJ8bs$oZ^HihiA#l%S?atnIF{9M4(Vp#)) zlsd+Ys<@(jr)e7}NXb}CTd~{L6Q0BUo8ubFf_6AQTKA{sG2W7jRz_$%p~kTPvBTGD zqvb5o|MO{Ij^e+9CNupBgYvn67ugwkq;30WOx25Seu|!6q8h>OEFyio8nHsAoxjIa z@G%_Myxc`K=H#=-4caKFe7FGR=Y?+3Bv;rf2^M0+BI~7$=2z9+nW&F*f9^ythvkuA zdb_x}ZTqZ_pQe}9`lWon7XW+TD9ovRi<%B;9F`<q>?KYn zueP7^8?IblUO|{V-t|)dwe5?6@#UbfuZ8x5S?4^NM|q2p&1i9;rsreebG-3i18eY> z0H3+QX6N4+o9*SZU$?8s+6_X_?5_t_xkjE|S0a9MVcUf8fb zIYyE}-cJZ{eZV2Qcr@&=|I+Wu5_CPCv^BVdlb#Wow}(ik+?fdyX#z9+arODit%~R(5!L#j|ck97px1DyjO~=4}=J6{qLJ?8!^L$W$%()gEXd+x@c0; zZX<#oxJ6&XGPH&mNC3wkzjbor=Q2L0@$q-W@=2a}dhm}oF#Hdh1WZEeewSg1IG;n- zKD$s?my8b^s$kEHWS+FCD_q`oEvki*e0E0e*B;*jg4>I5iD8oD|OuV)*E5eb;8K$ zLsBbHQBQjI6v@f4CRY)*ZsPY?$ycL0|GCSD{*rt9{$>3drgN)s zoI*US+`r3vF&B6#$>!CXAk@&t?}?`P5;L2&ZJb-DI^&a;gllus8E#u&3wHVDRWO?9 z0^UUe7&kCe`1djQOS60Y)a)KVHM{3e&F=YAvwQy3?4HlSS`-iXf|Fh-^j9U`wHYQng{EMek#+acgRGJkPmH14>O?wi*h2j&N z^_Ujyp#zTi_o8CXXv>%RWv_hx!*h-?Lk{%d2-P6cNJJ$ha>K0bOqH3#wLOIUw|%j* zMK#%8%=WzQ>t%sFZAlnk;}d^l)k7xfLPR2}DDH$bfmSH&Q3};0$>4p-dC)fVefwt} zugF@WGD5>KWB<~+#+#?T>te>XZcf}9Bqq?oGD zNX##GH)E_1HOGtV)*QJ({l@|yWPL#mo(p-U+(k8bCJJHh6g%TIh)Wa>J>>3)P&G*i zt-dX4*vU{ayl_@6=ZUs-^? z7V$WWM;ftfSW5ZSN7n6dOGCSA0_)lw359J}QdikS4`p`{*zn|Bs-GB*5S`MO)ky(p zoBnUuGv(;Sal@4{wJQ{^Gp2W!mS(&CkB621`Ra1CKDlCVxyj>jU?NxPgmgD&>z1Y#R9@k*5+(!rdU?2J5bt*!!#+N)-URpldgk1g(uJ;8kwSw@|q zY#am=&zZ0g=QBWdyW_7IWgmY3=GsR>sT6=Er)xmhj|9=hX^f<4k1s_0z3w%O2<3 z$fm|V8X5G{Ov35%;A#$^grX%vM*G4RPhB;Y|dnmUN zS;uXzG@s1F!QSbq>O*rzFYu2N8H~o%^LRx-&98Ie?eRRt5^PFpUCA|vNI>EKMh~S@ zXGw>z0^z;i*f|sUBdMDGz=PJ)3kH1JtB@Xfe6c~`{X`UbeZV5MC09nm!~Fp^CVgQh z>&pWNKHn`e0P##>8z+(vvp62em&|G@_W%sWA<;vZS!g&r$Yg1)Xa`^<=A%iJmvV=i(ZguyDqPFyc%Wu3G2Qbss%C-rh1Rs2kBo+ zm9&pB-wwNcDCzBZjdHiEN~?JzuSy2>9H7)f$HyQ4QZNXkt@oduqZoVSj=lFw?#vW3 ze>AH3xr%4Ayt-KYpoSD^HAY}$ma4+|x~3C>H%RD-P^bD@Qlw-(8-y->yGMhK!hMg? zSp6~n?6M0KvK_EIuZG+3Lx@%0JxKuJ-x)y(L?qyqIhkA){y!; zV)u_=(1)Q+>~y3Q4_PG`45Z|XV{Ny0UjwXc)AQN-YL}0{N$ZjTDPsQRuKdw{Z1dw0 zQ<3|pUT)cEoUPXT&uxEp)Hywr&pPfdA*q;tjT`)42GGZq;k82g+YWZ)&Bqamj-3_Z ztv-R@0_cLd+nW=6{?sX-KXuCIFP-u<{L(4=SO0xo{?&h9mw)w-BpAVm{Se`82YT_A z@IX+r*6vfqpojM-aqar?aC6|ZAv{G`FJ0tIhjC_)KUG*YGE(SCVWiUo`PLUfHj*K! zXgoTOY*&*sX2L3p{kfR`VRl8ZfK-Od$E~otUYRU0 zwcU^CXU=y3x-alLL8ZnX!N-?w`kPKEC8J6;h6@WJK)X6I7-LAe-7nSh_OFjF8YYBk&lyf9QX;km8fOOw}6AfBhP&LkxydskfWSaWA z0jjXu;S%);60fuY5g6{ToAETeLJ;P7rpoG)G3uVZeMoC|y1df-XWe5dxJFQ3J^hvl zPgbIu;=7=9YMo<@n$~V0xhH2y46?AEPntdAKW3T|p!bZFUvc*$ejHv;^ea|3`GM_) z2$QVRa8wVQ`6x8^{#GK1z^fZHwKuH;XRNN&AAGq*0NH(S4YQoXc-RD8cSV22>b19!M|B~I zLyDbt{vBgIbKEy)ke}JpvXsf~fkW6jF|MOQyd*0m-&#e^2ee*=DS7hkyPaDm=hI^W zuVmdZ{woGKr@4A%<0|owNQc#w_xECmOa2COs0>(S{>cys(zzD_dW{j?N_lb=6v~zj z!ZN|KdK6|%`16t6DmM zQ0Xn42oDTWem~m{a%!)pFd3!zj<0v%<#TnYmYMb)NB7XCt3YsASSn9P_I(jBZ<&G>bxTz6 zmM+hz;l4Rxx0oYxB`oPM7{M;T--)HqMZ7df42tc3(p<-_tBrU@C2ePkHuAo0>_*nO z0qR2w?oHyM2Ra5))o&XxFNVLK$8!1HLPKC!V=1+LZft>1{k_p#*Lk#!E9WHD&+v`X zS;nieJ;@;`yMYhY3lfXZXti53Xq|HHF44Y=v;QPKXj_3d;o2NEa!Mu~g%7&JT(dk) zdAv6X#)hej!nld=rj`gaV?iHeCDFl58K3R1cjIk#)s9m1BS{BiF|Lf8+cBx8Lugn# zgOhNNHP$I>ZR%1zJmaWKVjw?smNpgiNzRMI*Q@#+Ka26=7}%^AlLu8ZQ`YQ+RkqO4Z`?&I<;j_=cl8$ zi%+qaT*`0WgSXnfkfZR?#{T0ed0|^pt!l*YfoamV14aypi8q=V2Zn(z#R#PuGPB8cvk2PT zmeJYr8Yva$Wv5val$~Ax&bcphjY>wd_apoXN|*Wob_OyvPW-a{*;bC<5b*XFi(^H* zo@)Mz?nOH^as;|;q1kPJCPgQad$e)O{pTczjENaP74`SD1*v(@W&%^Ki_>--;S#eN zeXa#BzJe@u831=G(($+1nNdGa+{k}d@obKrDCEi#cUx1`-zpYROXP<}dTGe#oDB^A zVvt#y>m*9CoH=D*els_sF%@sfzUDJj!*gQz!pZ(hHf9~QC4Z$YWhbU2dPWIOA| zBrtYcVUcs{ckCNCtX45y@j6LD?dIvmx|FnY7l5b-UP{0Sy6RN7L+8tRBqFS(bJq=l zLEj0PFJ1JKFNnNYExZ3YG8a@5bQzF6GuzL{JDShg{%RO>tPLv9wzQrgnGMGkMImP&BF18q9%#I2pILp$|Yd ztpMHEymrcCq|00t4juGei|Y<}jH$=kRz5u!@Wg?W&#Wz1C0DOLM^3%M8&%RZ8zOWH z#_#1Q7D?Rt+qFLDi~#PRwo1&*NVat7LDvrzej&4tx}}QMYz^KV74;0Z+v~y_&f@U1 zVtYPBFB}+%Wq#6XB^r_HXw0Ap%h|Q;ANQr?C(E#1#>xms##8joX*ch^jT6BU`RbAk z*!$8BG3Q${cq!0g#GlL8SndW` zEU|3gJo>jVa1s`uufK+`U)PZ7@D}mIr_+;7HeBgyN6!_e^;v_q;(k?v?i@_f=4Y1~ zUN6EE2wswNOkSPgS@lzv!@rS_)P8?k&m8gddBvbsdm=SW;VH;;I7^vf5YrxeFYj1G z2z@;tvmtWS@=wMJ!k|!mZw37^cp$we(bk5(*6?bWHM%o{wAmQAwisW1T7sgLY~~tR z?}pI+WO?kjM{S4^d3x(o1%nn>as$kzvz{cO#7dY`aCdpen+lH{FtmY%aRX3E3pCQL z8rYvpc*%lyXQ7PiJ-F+Aw%~y8>6y7zRHoZ@B^_-E@ttebJBen;y_nA+I5 z#q&1&MW=ELR-{l(%>Ck!i^v>LI$I4}UE3V6F30g+#j9Tq66{psOHksWC0yw>ehsZ) zxW7YY+I#XJyGiICy4jY*x2;4Q9kqs%gNhneY)f+ z&J6WMIP_qt93oqWE}D!f>2&!j&%N~w;{d}EF|G(V8dYr8F-6$W@gMf}x@GpFoeMBB zX-R-CX6NuNrfh5Z>X+F#vl|aT+R5|qvkG;A!`mK%kLfQ#h-^>~3a0UH0fb(~fu_Cu zLxIK;YFN9q7X;Vk{we56cG@0v{!_lMNzJ4p;FPCuxSXrih8zuAsrBwGerc4)pBm-y zr$%}DsZpMOYLus+8s+JK=z|q5L3G-GXj6>Nf>43`sTR*aj%FLi z3CDx+t5400d%I$7@eeN}G?e^S2ukX{`|6V*rfn1C)CC@2fw)we|e^KBO zLZ}=cE(+JTv(*&-TB?Nc%X|9vRP>Av`4{(ZCxboi7ZGV zm*?wyzGT8=JXiUcIHmiY)&r+dnGzw`aq!5*_6$(RrFc8erG4c0Nxhos^OPvD zl9xzEZ~If*b2by~LO(BXbJ*qlY{y>Ur96%!zOYA92e;>1o}+1{;hxSXQIA#f#MT5s z9kH#as>(`4XPz*3%T^;dYRq(WoI87t)4`Z@cPUR>ee5PjGLHVTiSEk@A3w}FD4aVd z8c~hKBTn!`*JBY+PV}t)SmJo%!dJI-4i}uB&bnA?V@#b{q0BWPY`eLmoogiTl(Fl+ zSx_y3!ncCA6N?w&9fCovY{(=Ynr+;=!{O<()gXaNX0i zVyIVl8Ba_dn?moohR69jMTCR3Y{*kdxQ0~7RV$6gQtC^E6k4A~fI{N#t(b1Ev6ftl zkuW80L4&m?k-19OR_~eWVyIO?%l~zts!Bh2^Ag8cSL;BHaW@fAh+*bF>u5)Ymd+P-9=J=?4b{F1*%~{bcYHo@Sk&pphv`#F&)0V{2K$6ltvDxE!9e4F z+=hsU+QS=#`11VzPtWL`d(VzhtN!mI6-7S<>wZC=_kB4D+w}+9;hN_hq`79I@@emH z6%Drskk!jrWq*W%TIKA?g{N)wEsKaRXvaNQ(+t5u&g5XVXW_Yq<+Yy@MKPXlZSGtK zHthl!L?lWcmH*y$&{}m*ba}<9ahfJHk8Zlo*fZ>iNILhj$aa<*jzXrOQ1=p~MHy#r z1dHV}ku!-0-WCGS>s))a!CX)VGDdRtqe^{Udj!`y4s@#fmqmQFzloZ&)a1ccXvM$< zD&xIYMQ-N&NWrPfCXg3sm`+V^u)ePPFmel((v z7P6ab#HONcOleJOqhiLbdD!#xlxrZEa)~Q{yaTHc(tc>z&Tzh~F3~kZ?EFOlZoeUk zlXqy$eZW1k7vV4gM>BtVuH)Sfr`HMHb}Ng|HMy_|#>>zx89fKNPY0<$J?oNBsA(t1 z@!qk{B^(n`T2Zst`?e<)nRScXSg5oIz;I#Y8Mk#Z9tkw*0L0=|`Mvt#F|3n$hVZIX zJDu-HE(!?Ys0oo#BgC;av|e-a1UYNsvX#NPy#qiaEi+ z%`!B^Ma2YGX=Y z_9M@D$J6?aZea&sWQm~{tIWIEj7iNt_jrVDe_Q+-52|===jSt2^X7hn!RGC`;XbUg zWJP1ZM=EjmvCCgpm3;NRQe2O}IhiD99{KIY6x*-v5j4zkQry0*zzLHSu-bu`vuDv{ z9Shy017a>`E-#&lKH>E6tz$MK;kf}|bf2CJ`Kf9Ar5T=nYKG^Zn&J7UW_bRo8J_=5 z0H)x}gj=*-ZMb}hM*{dU#-!2Qwu5aFqvFA?DCgzRgJ+r+Ui9#7!yFbC1cK|T|3Q0Cxkmg4nG5=3WbSrxxK&M?V807!ylDti=3^2z~ zGlrT;vnyaxW16*KZ`N|Qc&8f=wi>E7GX8`d9n(`Uotlv(cIZ2iW*z9{k17m-20WH) zhYa)cYWqIyj)i+K_z!B-Jl61 znRp{9ZF|pk^IVWOkgh6i?_(RB7VoJ&1ND9(1u=6{!Qw4ISZXVZ5N+7-Evm7GXPX+RHxm_nqs%Ux*UvocnjYRZgV2vaF? z8asA+A@QlkiFbXCkvRqeGcdi|CjLH1sl0N&q|zwc2&0DLJumT$G$)?y%d|gN@Puno zxz_LnVnuzEFK71e5-o_G?#YBI)C6Vb(K6RFBl)I1g)99M8pnNI;`CB|{(GM(T< zrXwLn_PSEW3q^ha-MfzFbA~D#I>lp9Hox0c)-G_))A@f7VgUK)9$zVr^CfSG#co4*#jP^r;Zq?;s4s(&a z!k~LCYF@!a&sQsQ^?;v*L(W!Z87qZ(O0~bn_NBa9&M*)5J+q;TR>@9CqNBH$+4Nk( z)5Uqy9}%x3l`cys7b{s1r)PZTvicok<3&Z!gt_;5?i7s>52<>(Og!P_N0=m2-Eb8* z+c)ZpYAfPVY8qu;Q5V6K2-9atD$Tbuku^LaTU+-*;cGNfiFI6k4d2++nCg~0RmP!l zCpt@D=md-zJ;-#g@e&9)vT)~1$tNZ;4yNs1nWI3|CDAX5QJ*U@I66MIaJzo>J5AgI zp2xF>nEbw-!Wo_47j_AweGHGZ&ZYK5g8NT9_gSWnsKP@WadNs85FH=%_I4kL34IEa z?9j#7d97`hQ#E3EA|i&0-D2^e@=&s`uM^>o)}l|fF3^)F*1Vb@dcb1{`(x>&EDmNn z%TacXJ&?-uVA&(+4u|x9Z%jqP=g!ouj<7xU^R?J%yII_HshBsmxH&$IJ#&M@6$5UdAnSHw&XZNkz zmN@8b_<1FZwo5tP=a{Lj!2qKGIHJG;Z*(4^@aDLfZr?p1#x`DnYa);Q=_i~$5hZlW@aYuY;A=ev} z29Cd!d{5-BepqmP&7Ny-?}*u1?L@&sznluUc}qwnSt=YDM; zvU^Bl*0ueK?~Uzrh(ky5Pz7y|B8XAJ`Ja@PXlS_m8MF z#Ws!kh=mgyKd;!w?EkFer!MZ7?sWdCJ6(S2PM4p$)8(h`bouU1$3Lli9);ahbC|xS z1ltyx@Z~|j*@KtABhKzJ3ecg7eryoKPHqX9vVXOwYiveWzy%#dy#eh2Fac$ic!t`# z;1u&nh{Z2$)z^oJ2AdNn9vi>sT9&WpdO`VdGH_$wKZBcgTx*@iw2Vu#CDy;|>0gAD zOt(XMd)RIC!VR(Gt_Ro^6#bOAS)<8`U2(mkgSnC|7YF`dlWX-&QiJg6U6d%WIpAqi&C)Gdhp` z&t|T(;rOvEUzUUWJ%H5&JZz9H<9WX7d{=E|tMo#PxjSE$`0ZKn9E{zbpJl|#T`U3Q z_aB4l%vX~&bkvpBbPZ;W>{U7=Im^P3*>kq)x}P2!Gc&ea^WHN!SZ?tn*f}?8eV(g$ z9j|~!)eNan5hQ`!?T9(z@H^JrG|^Q%yNrzqNRNTvrFLS6!C4DwXdC$kl1RT>AsW*X zIMsz&l3`U1Ja$s-sw1VUvnqr)5pgGi?sFB-?w2df618-4Whx|=)#XHYIQKZ&q5XA! zJXku@)|ErTn=lL&R>w!agspfi5jHQq;tpMJmU|lj{C>e`-g1jXE0%2)=Fx&u8+q^a zT*BjE9pj+}29P08F3X}Ocwb19`fliNp!%}ePD?`Dv67PT%MT8zDHSleR_&;Hl6f}aTa)?A7zWtswBvqVR6Hy9@h z-xONz-1DJrS$bzb97>Oe&n9~3(4DvL_^vEj_~e`fZx?5fH$rw-&tg@ZD| z`zdO9Nh4A@ApzBQcK2I7mVVshpj!yY;SjXb!+%$KG_QTgjZrEbEQQ&_5HYOg| zwrb8p@Nzk~q-5=0ymheKEBdWIN8lFAy%-P+RDU<8y1107TF&y9< zcC$pZ^lAF-BuB;gO)+e1$B{I+wXb0dGb2LVq9SvP;IS3^@(MiBVVk4w>3gTna5iKT zw@cN19?xCr1=p?_r7`*N^4FLt%!}2e#hQH-2+Emr<8jmjlB}$WNo95t#hX8HKWL% zAmz`_JHK9t7f!pxX9Hc~C|9i^j`Ax9&v>H>nH#Xg2h9dUQigmsfmk0tQ}B)2j(SE}^RZZ0Ih=grx~iQv*z$ zLd?f~vzzkJ8Y^HJX&-e@R-YWF4%4<9Of|(p;QUxxA-PF!kTQTJa$gF=Es{LBxa%W1 z1iw)nLA$5VmAu+u^tTg_1s|svV8+c?px2Ttg&xK@W`u9Dy%u+HG;DW(WsBLm>{oKN zcR=&cyP|)vMwi94?DsAWQ}48=71NYp`Tk|+$w|zUXM1^`*E_=8Kk3M(_ zI)M5f&w*AnFTsNrJJqemOt(smVxq3#{ARQ+sf=0Osm(qJc}fW>SQsbW#tnYNdLXv> zou!Qy8|B>^n$>e5KQ)ZMG{VbIjqv(YBfS392(Ldi!t2ZC+1ZYuvkJxj%JwDn;hhQ{ zy}H%yZ;U-EOE$<#Gmi66J4 zx`avbI$$^P8M*(_KNt2T)un~Z(QI~H6T}hwl+)Cyx&Kg6(oZ?^73rUBVGb`sd*~l% z@oOs@;`}E4QVY}vq%p+T-k!k5ZY{PiiKXL9&`z-0jWj+d`?*sr%%jX-zdPUKk0UlKWt(W!kQME;8xrD)YnY+gJ0i|$WDsdx*88}ta zHP0SAXWXkncYxr{RYQD8hu=b=woyFS@$7xK3_;8?rU;7eVxL9yxll7~NAFUx{6H<# z0-sE3>Xz-KZ9{7=z-rW_g$m$_s$vdRfQ#)MAG#X52#^3QEvUvtFLefwX+x+o=EoXd zy|2U^uo)ig(AOZA(Qv|ps;s@&yQWO^SaAX^UgHLD95dM>al0$WQ?qfR(p509=n4X# zVEacovtSagL?8^hO5Ya;-Q*ys|sAsf}sTcBopbrsqi-vKwLM7FVa%Fvb8qDpppZu`&H zSKJ73CCm`}<@%x6BDlg3soYV>=UHRZXqULCc8Vh%hvCT< z%6}Q!Vsb9-m|Ui_yo1os%ygDLv4GEa;T_>Slf@8fuF-s5e++aK9V92{a-|XVc6y8^ zz6srVe@#qIJ8j_jrCXm8=rV`Q*hEE#v5yzg-ugBzrKsvt&Mq=py&Ep z#gnOwxk{(X4XuA&2QS_gDC{UhO0C>*rZ;PwP`A&8%IFvq4qlT9lch~3hn0O6gD5U& zeD>SA_x%%}x5o>gFZEF(aWhFV3>2PmEP1Zs+55&0Qq-MM!N=j&$YjjW3UjIa9FpaB znc413pFO)^b4&!~7j=Idrju04l;wr@;^jzgooo(5ax0(*J6)3n{GE<2UqaxqkdX(^ zxxeK5&n(?<|CN=ffpybWTlv zC4`ydlQw-9@Cn)#%_y3#!?U)v-NDJMJ~7MNAC-{aaiMKEU+CldPamucP{0OY`h=Cn zo+2I>=SL|%$^kXoHTIo*F41Vilc)?t0H5e9cg}(el7kmfw z67G2{*GDi4j}yQagU$C+z8c~4&xM=?&V?UZKDIlWH|A3^6Y8g@Dqdr}W*~FJQf5SP z&$ADm>z(3jY>dOkWxd_?vJXNMQ&-@t-_}US-xNQ-c2`jIhROks1&vUv_@n-FLw@Ok z*PpuJ^`|a)`>6}we(Hj^pSs}fe~^{!`P4^F-JVbt%?qe*EYSAe!B*bG>ERs2{l{uT zWE51adTSXj%rR)t%6%fS1V@Y^!*okfoySBu$n$Xd>eYlXFp%|@wT5SXuH|34G7E*U zpg?1iWdBds659pUZgV@5*649I16s(B=%$ zeO%VMwY#pdktRqPI+1b`%@E@oY?;rv&6xmb;EOdaUH2Kq93Hc&Uv=xe$B?~fzK+jW zjA;NOJK~xn2s%^ny|-_d*^hz&Yy7(h4m2wPeG*5MLfUQZoAW6}_I z-i8ae4+Vak*>L`x+~V>&W%Uq0O{o-XPewA<5J8FbUsBaAQ>G+nOq}ZOYm?U}@)Y8M zB90S;&KXw;?0tZ?+nck@^aSyP0p50BhHEA;hgM~_)t|CWR*wh2Qvkp{dTD-Ztz0RR zB9>>n8wlk~Wlds0fYp?Q6PkuZm#_OmnMy> zUnkGzL_$ct?^e=EaA~*J4cv1dK*{2PHlrxN9dVjQ%_Ij) z*~G1$Ar40@ipJ%68vJ7{6?YoJrx}4>KgD2LB!hXX&k78-Njbm(mz5?oB_*uA7%N}3 zx`c!klir_hV>`P;;S@{G9VKVFyF=_^Y_2_8&z{S5W*lYcWUTaD!K*zDAtkmbxe)ge zGvWSXbUJtYJgXH>CQQ7Vrq22$Kwt)d88G+rEI|Ew#pE0%*f#&rUegkkOy-O?98y|4 zD%ZIT$`G(ZdYGY4&lNlyQyvO1ehg}pmhPDdPhtB*U|+T&ga>=8DKvRUM?q66x?Ms) zD$vev2q{fPjmobaGedQGGz?RG}R$rgS_=pEw2uW4Y?V2*#0~}iW zs6zXkJmE2Zh^2m?u9P3P)yPZLwe!h7qfBfM$1rrP`%isfY0LANl~QbxO`196T{pv$P0 zVq3Bf6k_)e2g5aU3dnT(GS8L#)V=-Em2N+ErTb4^>Hbq!y8qOb?%!SM@n<$MB9R|? zHotDL@q#FJoV%gZ2uza_43l`Zxno)D8q3NZ&u!@QFP@%spma6+$0l3}b0ltJ*e^ZW zDZeWDI7fm%zvSh_iqdnP`S76UTK?@yIry9j2p&)J$q&FfhYUp7?j?F4(Yo6>rE{HZhxD@v-2YMDav)V-M;+Nig_g`zCwA+@*tH7i2twnQVMQ#52R&whPo_q9{Zz!fh6da{aD6gJ9L>@7pKt zFF6v<29Zn^1go3nMup?Cd`FF2#8Z8{#NcVNU z{p}KtsylLy-TKw_buIFO-rqH*(_4aVrZVbJB6Wba!;j}e1hElKp-!aCrKo=G25bKL zYAvOH#i*W>V4qNfv)_l)jciQrt5I~APieri#5NnpQR z%-XGjLd;lFOmT~kH%p@cgh_rlUQ2lCZ|MZ6!D7}}R$E)B1E&!i(%bc`QRd<9CB(N> zx#JLJ7Ehw1M9hI=kPpGQt@5bMBYo_470OEul8{r$lpF<$yL-7gWkeE>;V;h5H9Q%} z;;s*VvPSq7v`L0;a4FxX$mMg|UO1s?VUMWVs4qZ(%h?l3+MhS_JHVZLMab+adbqIR zEA`BzM52)7nE>1`4TFh9d7s95uMO!R{q3?Qo@tJ^PX*-4yTL0GF*cUS(^v=72>Ydi zl(rP@z*xR+Zxu9>J{noHg z9Iia93KanRF%iR##q=mvH>eYAr#|1l=3qRr7)VuW41pH%=omr#us>JuYHJz!MDnxD zAIA;Q;l>?_OlzrxqYUOLBHN}u74d;!3(K1UjxkNWpxNO$=wN@;VW+LJ8(dZqHE;-& zMC<6VxbJwodzyNxXXRcWJt|({VUBcY5HIum^7_4emBRSMuNBH|#f0j%PrU5^HJ5z`DO{PP|ErLo$87)+t=f zGxXfEyiiO(&}1;OOmn(tl-%kw0aoWXm%)axBqd!AcV`&SIOSq^bw2qqtK=2IESBD_ z<^5t9PoZYyxt>1Fu|VtvN3k_!?FfFZ<=@8kfCkKQJtwk1{%_ah4YwxFkvM(scJkxZ zpCl=T((e9#+mZ(vQ}axTE|6O5AY<`t4}Gx?I9J5nE|J62{Zs$vAjv+~J)NPDq%E0p z^n7Eva8W(+OA^O7PA?nrQg(m_H^hrpQCgravx^BFurhU*+3z4)Gm&{dHy8PaE{Q&;(=8}7-SzSCMV+1aF^K%K$NS_73&JF~i*aUN*5KC#ynY-W0^}KAPHBICBdbJ*>ADYw7 z#5I1{HLKMV5sz$%xGnf8=EEm({dn}qlNd2EVBsx0)kv(p?g)N6NYXUu`r(0gKVP%x zp_}5IA>hnINOJu)N{F#VEkeGI#|ob9DY_=;<&5@ty6?hD*ROZSj@AZ{%2<}@(4CnJXddXu^ zx7ID;Ls%*IA2Vh$jI+F{uxV5?l{>Q#8{z%aR+WSeH5lu3uxn4ClJN~T`u)>ZP-=K3 z4Hq2JUIN81%Gpl#ciq?n9~wSuL^{82!J{=b+MALdCxyC-XFhCG;8otpRjHe-LcF10 zY_m(bJZUhwI0I+z21090P2l-P8M%Ilt^(X`mu0W{-pIlaO$1eREzjrm+WHV*LezdP z;dxx1iF}bF(AtE zmh|Z1gC2FgGlb(Xz+b6b{SZB`xjWSTZ5_`wJoPyo(dICuyioNdl7bt7ML)h2S~ld0 zQAHzC*Bmf`b^uw(W%Ypvr@d{-@Mfw(;%O&Xxjld_%dU=vk=S*O{?uK<X zyV1)Y%0huC;qi50;l|r?6l2$I(@6M(`E>~63ZR6$9)!v+K z?HkUMOHHX%nIU2d~jC=2z zSZ`pMOIchxP{8d~TsMn=sYVO&8POL^a=DLA?KW5?8(&E~Kg2lU@~tJ7CUo?UFphC; z3zx0EKBUUWyH_0%$gy7RHfK3>;|y=%k|!ai$EdQ>oilezI6w!$BvJ?nzqu+^oeb#o zQj$>X3)hS)G3oEDolBF+_MGQsEZ^o1nfkX3_{H*a*?KPJb6hWfU^XPz_78A=zRZFc z5mN{q9_D`*N#Drp|;1h^O z+P&nWFn=hnt?q=0o8PpLn%>plSGzj>;fkFx3E%L5K7a1iOE0mQmb;ZG9QImg5}js@ zmZH9nZMgFKqihO(@^=Ho^9M`?1bs< zv2=X5tD|VqBhCVIV2bYxCwmD*X0+%u8~+S?m=97G(KY3_+mAhir_i|}8uYqRPDk`i zQFde1-tjf(oPgtbKLF!jVCM5oEO2`T>k|k?lplMt^yYt7@>5^;OTT*j)UTdD^{eMk z{p$Hszj{91qQY*&Ls()}R`+)eF=%n;TY*(JNFPjd{M$oZQSdX;T)uzh`PV*2<(lNV zF-9-t&~)uykyV0WLW)RlHmle16&5w(omAT%khalzt=oUvcB!@AAw2mNoozMuEh}#N zh-7Rop`Vq;8!7`>ZA}m6()|&XPrL?Z%J1p*hJ@Z(i3A{H^3ROnzNQhH5 z85<52hN&m^AX|yy;T|nd$(}1c)ldbHzq?!?Sp;WlxLL?cZP7I2UR6@bKHyQ&sC8I zx*TB)JtJ6S2U+yw5N@#D+a4@h_P&zsDCFI;#pY{bfMadUOsQ)!A|Kg?lL9IN!ns) zzr0JX1$ZI1@P-%T<@-ru^QFyUI$h=+V?4Up36tNI!N4TKP>aBIbA15#=exCCV;@cf zwy|z2_baT5W8^V&_N#4<5bS+G;;P1OH1Ysfsl@C3mEt4T&7^5BSM3WkCj)*xrvsjJ#Ix1YRd^Ew2K& zNjbI!jz^lGk|tflkiovShp$6HeE-yFX|S)--&Xh&Bc?Of@Y^sK7Rjs^7sK9F(oC8Y z%@@n?QPA3b0b~)33|;o|8E}FL=GiuXvu2Ma1MK zMeTlC+7~}#rX^RaU%^DR`U;m)m9A^UAX@8> zaRnxKm2^_6Zy+IJ9+Jti$WkNYBZzAF0)>ie%%vjXCvfJz_fz(EtiWu?%lf(#FNX?p z_fh8Rj_FbCFwS9`b2;8^!|V2tTg)iE|9g2b4hDdk^jssi`-kyBn*kqGg;g+7NU{i{ z655JJ7_V+n>-=U-Jgw3?+xr`V3nt9NXhI{UF5^u!n5-(28nitHGb0noW z7J$`IpK--A)EPpos2_7#SA%OXKP~*hWt%b^ExrqX$1`SZ@fVDkvX1E^p7QFe?de2) z{sX^;l#Io(4(zr%#Kgr+yXGv|Kd9^q)*sE>RUzHdsJ+{fg*dR*&go5brv20avL?1T zRkL$uq||E7Tnx=SWX#pSGdJjOE+_E_Gw zhg2i%GX9NI734?!02OasSNFSB@ZOpkAX;rx_3&uP0FN)NJ_uB4~aEjm^XQv11e zd&BX96UJEmoJ+STK>U<06bewMd1lm0TLtS^mpqs81Yc#%vU3?!x0U>fY)5-S+yAi! z93vU_sKki)W>zi1n)Jxg58o%4{Vh!LgqGiBIhd8^BYL5(wjQquD|OU*ej<|MezuL_ zf{9msF5+&`Q;IG$>+yP^9>*UtsLUg+O&Qw|J~|br5dW(# zxhMad*9smj>MEIO@CGAQ7H&r#Gy>1# zs#?%K&)SnD7Uir%%|qB97t_8yXZOp*mORNt0wae0!)c8v$K?%teb)>EWB|ho3p|x` za5>#xl;c6Tut|B#u6K=FFx@@*5I!hrRDm)ya? z%Jz!Mb>7{=dWU4=h#8fZ*cXaO5H%qzltJ~_wuTu03;Ef{*8(1ArD=i=kLCT|9|F2u zxK(?Brcd2U6uBjRP*BF*^_i{?7|foR_C9R&b|ih4BiK*`s0CIy@~LHMeeXMJ{J6Mm zy6kfQZ4aD)EO!bh{anCP?Rq)EV61bTD3xGR%GdBs=dwh@!;WfRFEy9PmvIQIU)>H7 z!hK~y0ER$$zeS9@*wJ;bwmH6KZGVV0N(YLsAOrwsGC%H{80RcA9nQqh6}*VSUe!Ig zPFESo<7vgYk7i%iL2!2FDB(R~3F zFpwPX>qm_kS|2Mx&bv8}&lBy{oF=K#uCEoC%RnkF=320f7t0qFCz)p^<-bR_r`$|2 zC=Oj<>lFQM47=LIbL?KtY|bbcrZ`03OeOE(;SASz^z<>Vwb~dGsP93IHGEFx<8Mj+ zZ$kP^vA!)|cPKD!*14BGcZ4IJ6)sJ^Hzff_L&ez|%E}8Dot458Q^LKQ-y(G}2x#{V z(e{2nXe8EzxTVvrQM|{K+KNN!vjtG7;JMyt<-~FIumY2v6z5Z({ z?^qu0ZEGsAW!pO|a<+HMiO>G@X)8DI@|aoaFnzp16LNmgEi2G^EHY*FsrF~T_W3EM zW2k)Hu-AxY35wCKNF@La@pl82lLgJ+O6s+RxRj0#9tjwG2Gd;?WboPWnl#}K8hGjr$S2Ri%rL;qfyReFt{bMy0@m` z0=1qz2CdIK@?sLhiCnJT;_+@wkAUJ(1<_ASwX2xnjB#nahA+D?9xKM*5!ij$@l)bHB;+NUW%3#G z6%n|{?*1G7Z)YOM&rw0Sub;BvTFC!sP6c29#SXE0`~NR3`1+hzbBeLN+;)^h#W=8C z7Z9Vsy=bS)-?8mihqMWC*gmkYa9wheS=8zMQ&O7siZtCjiDaYOL6=9HJ?lL}xQ!t2 zB$}W1`xV7h8hxu{i1o);b9$}gaRxf#(4jbKP^aG;`hE@R0og})f(+@|Sumb)C9PTP zvQ60%__J+&jJ6yh7hkc$W$UR)hZA1~$^0R9FV6S;XqYn_B$DM)0Jjofc;#;vo+mfrf2~D8Vd*z(_MQX(mLTv=}xNILl6*ZiB;&~+WyAm z(yTCvR$2BWDN6h!(p6*lj~8{m{i`ueY)LFWO!4=-vt}U!q8q(s_X~o^p@CXc3*KK! zu&cwIYer=vQ;n_BU9AzA-!-;)4h}p@^}_6^>4irfb9|$E9LW|QUZOERef9PAA6@AN z+b38cEFEw7L(Mv7r(kM!RAV129j_&V`<-y4_>sUWtYW;2D(wZhV1)H9#j;@0#e_t~ zJC(w1WC(vm8EnpS54!Xgdq8P!L+A7BKU>lyS7U@|o(5xU6u9eUJ(=*Ut#Yf~ ztA%_p8Kt*aVFi~QA$A@mPtTx5@f7I0Z9&g9ygO0@s3GF3sU!rxSQPF85|*`lz_V$( zhRfKA_j+yivHnry_j647##Nmnr_3d~ktaWw z@ZFGdp;fO9c@n?PQMSuua7SJk*B+n*mJqFw(C^B;aTn4gwLjdm>CAdqRPJF&7lZ8cd057R3aZ%tl%Dy z)3$cr)Mqfb4=xI|J;M-M`&3rF$NN*5D)Y%IAUx{i>lus8Mff^tzHG~5aizb?pIrS>MOqs;2iEaJt|*AoS~aes-irtF!Ee5#O_GRYjRip^1?H z6wb*~#K$Jsu9{4jVO=wjKZ?ZM3h6UN+HT4utGPN-f*l`ESF}xE4Jl6!ex&PH?1AaY zLH7a$VH5UT$WNWyf9^=HfAvF0I{nm|(@!1g^lwLsv$N*>G#RY@0OyM31*zWo zd91OCsOPaHSC8cR=WNQXJe$lHFMgL%B|Fc_GN|3fpon?s zWjiI`o<6qoLxsB=FOJC(E|OC+dS#OsOU->BG>!ybs?^u1XK?IE45W1@->m0lia&q@ z!`h!Jcb)HMJfNFvA{;ue*Xo zmIK9TDGT;>Il}*j$4p~4*NKbaaTS(@Y$iN*i2=1o?`}bOY>1f!td5_&oyc0xcqO2L zb`Sh9b7b&G`+nQ`T*V7=MbI6ST6mUc;T~O;gCxYzqM33w#0Ol`kyOLA$Entkgs8w^{HuhJS~I>a2SzQ4AFT?`zI*s^+CwzeT*Z5>o1x+9Nq6DU?_L zTDO*EAww-zqtpD{BwvW@5(}>A`Q{4ngqLzXHt;x$cD5kpo#<<%XZP_ePZ0TGSu?C0 z>z|)owux8;5Z0oSaz7>BaIA@BY$ns+c)32%4dyB<3}$Z6um3a`j?KnxDOOwjg0PTq zuyso-d;NW|y#tMV%(2uI03J49z5wG|zna~cTF^A}W}`CC5Wq;*=f+-NUxmDoEqc~V zDmx}!ZWKI-clrGOPjg|;*z1CBxf>bX*Cb*0zGLi%?h2#;=;Qge{PBiZ=&iqhAoY6NNBSY*7 zrzC>~Drf*;PIa;?4LQ>57iCF@&JJw;2oC6~Kg=$14HO1`h@gbzVDTJ5#Szmm$ zwi9GaWeh3-+zI#&~v4y&G1IdD*1LrwE7xGgJ_)BX${nXmdKee{=Pp$3z zQ)@dvWv$y3r~wf%iKl&bfxV!!q?o(utRr^tafDL1FdrzNt!a-RrAe1uiu!F?)JM(> zxlilSM;&b3p&7@LW2RElUg?O+wDy|a z5BqEt8#c${J3Q=@u0?##-{UVnGv44Soc=H1Inqt*AcXsHI@E2mE(fouo0c=MWvL2} zN~R+psQAJOWJILvbo}H_cna9zd^ShRNJ4qsT*m8K;@m7#_(K=V`MHqiF`Nu8OpT=X z9otOpyBQK9}4P& z5&|Wuv%2)ruTCd+uJU!6_UA%g0dz}@eig=>(L_}#v5dI%bVnJL31D5h)+a-~pxGoH zTjCyeP&a+vlh~>zl`OvWQ+JHSHut200!c+#-0GM2o*N5VqM?dP_dK7gc#fHO4!ibX z{HeV<)-khZ*vQDgwzMWRQ=%V1qTSNAEt$-hGtWt$)>9BCVYcugo}lGH+$xnR;?js& zD~$O}wBa5Z{Z!?aL^anIHDKDe*D{_n=JQOjfQ(hrz`GD;j}ZA0LZ=xQ%ciE>oB@>3VcTA>^01lSSJ|9*UTCm!U-R62eZdt`(w0tG9%< zsm<(4R;BI{9>YrM-#NeJG*aB>TmK zI-AAc)jZCo*JDYFXHi-RSP#x^>eG^(&Phr^v1r?0K~E(1(QA0!w#xp1)zV;Yq1sK; za}AF!dBWsflxMuf_M3T$R=y`VaEgD({bi$GS?Bm0@AZnf(Cc(b@%yeYvz(5vH9yBj-uxuap2?mu8LlYtuQ2k(*wahQY#&MNnz(LteWA< z^{%yQh=&;dp4FqdDhYK9X=bnBU}J5}fYG4l`TgG!Ji0i^Tqb)Z=-wm9-iLG+mE)zr zLYFr-+`6;!VyGA_TEu<%VR2jY(#H|VvvPvh7<*Q4eL)PdPgwgNO!IBk3z<8!>P z=L%l776cUStLf<0VzARz5*_nnh&Mog33zDK@tnX7$40n+njl$&v8krR ziKZf?LWn!NnfVHqj0oP7R7*{`-xcr0=H$78SC?!jKIV8a*g)@Bb4>)fk=ND@6;(>i z!=*W|wa42i%m9aqGo!W8CgP|`Al1DDu;%ne}q#3k^7 zV$c7GWsd;-EZA7Nb@=xX&<-g8C6t_bjJ|AHV-eHKA-OY945XB^I!JIt*vw$4?W3z5 zGDXaMr+bLZWIOwns5_07=*31m7RTme2vyHzyushLi|%L+hMgZ`-N|#=!>UmI1R0+f zn<|meJqajw6fqr%>ih!<^R^nm&(aS1Z=)I!B_5X_Oh>nmxVPqNo#oWPb!0SzS`6dX z_4!ym(BH{ZA)0dXVO8-T5;roNBw?#YR#*n>{4FLw-+ITzY{I~9%Bz?$0;WDw!BL`R z^-rUr*eov;7&d%0!wW*QZrr9;kx>)V)ENeC0JrVWXX}?1dH$(Io_}hQm!DeX<);>T z`Kd)-zFTC>W7Wn;rsZ;fH)K2W6P6D)tAgC3&X)VAm^QW9^2>YB?+b;(RA z4ff9R8;v{doWSQm6jM6VsB3X?23MyH)<~rsf$Uj9QC~OB*4;W4xp7A45x`$;bJf<~ z4)y)n)-G?fcM^rbR)c$b?L|;x=tSZammX%P2gflr!`ONZiklgLn-P6y@2+U4ykPc( zy3_%?Um~DrNQ?9$D3fq6eZ<-|DYC^4Vm4?`dsd&Tc&5p!a-CrtHGhpy0dHJ9F$lLR zJ%%J4D-}7tR%gNHE@p|Xx>p0-=O(RDjG9Gdm;J#+GlyA9p*{30F^qO}^>*5rdUOkW zFzJ|x443kFuHxx%%p8Z6hdOzGL@QkdMaRCUUjAER|zV zxw2p07}qJU-I7#EYh36B!lDSL^>T&mGa1nnuHm3$IQQ2}`8YLKX2XbayLR&C_O(ty z0lIL*`NE;cHLqRbXU57m4a8u78j$lU%r#Mg_(k-oTQ@q5lzAg@(s0~0AiG=p+d@w; zR1u1HPS+!KaUAEz65jbc#EDehaFn9`Qcr`sboFQF_NhEvub9i;b&8T!7y_2>RB#=G zIQk#B-%-$ow+RVGAE+U?AGw(cu3QKv?&ayj`-HYOEqGvl3eG_YD`Kf}Pq1;j5rhZxy9W@5X?AiNw365r|-G6!&~VO5)Ay zYfS#g_$c6)xB1h!hJnoPW$S`}_@mbv{t9cm{=BA)##%Z~+3HigFl1FwtV=0lHwCdU z<&Et4ra^<+4WU*j++6rQ|Jvi))P2VFtF0p(4S(|Oo}19KfsF_45yTQ_;O=XbghK2% zLQN&$T;$og8L=o?>)MC&%+OOW)>BkXvI%rV%T`~F|6%8*RoQC{;ZYXUqvaUEwplC zes**pl}$lT(Y)a5c6+EjtY>_KZ78Xmq2h*;$N^pcZRc($Iu1{pn7An2sw40zkI>WC;IQ%ERv|>IP(;yq@2R?KR?ZXK+Rw(NY>r#*mVz{j1N>y_>eP8<{iy zJO2a&Gls$;U-z=^S%GKd6TBn7d}|#CTrowteH^sdRN8jO7;?W_mtWf0<)=1w`KgUv ze`;gbpW4{jOR*$#!OxpLy#1++&Lixewl7XMCTOt2Rmom++&?}3c7wjn zj^xa%J`sDOJ=ND|C`e}rOKNoue->}7nk-u|WzfwuiT+pqN>2JuG*l~|NNNG zv*Fn4Ue%)8n`S3=w=(eWmnfKk_nC0D7P4j1p51CG1JmT2OdLTc`ikwLMqB>@dSmhv zPs@bEU5C#RQ_6_Bm!oK$Lweh`FJcvqpA5J$%71)du0%y7TdxUd+pme^%43(fgPceZ z#o7;)BV)KF7BE%x4$1pKykTPr1*@}Uwo}yPDYPdiw zs0pIIBVE7CuMz*zUF}ZNHr5lYtVCN>Cr;5n^t0 zN~ahfOL(Kah7Iacxx5{vf?%!iTBR3 zzt-?xjD=0MMB=?Wr%C~mMAB}^-Ysb7#CWrC-Q|pY1nk!!2{%9j zMd>(3{WMJ=U?CJ*8 zEx038383>_$FpUQ9rKLSrNimPAV7osMb5(1{e$Dh%dSoW-B>0N^z7}Wg>w@%^r}5n zBlb?-62el)5K}wJ(Av!%xIri8NEaO*#YA z3-p=xs^nX2iF>79WNuZ}A~G-aNG!w0Zz}HU7!(qHV7Vvd2DLU_7e&&r{kxJ^7mZ-z z*z!KceL^ITx{Y`U<>;GdN+OG(Q+T_fHJbA%ydT=CmS&~mI{Z)?T&f0pt&!^b}@rJ4K^CDm3*Fx~=VMXBEBPk>i%dE zDaPo#W8zr;S<2^(*m*x0v6mR

9$i`c=&osOH5TQKBvDW4T4PCzbvkSfE{%4l@9@{N=>x^D&4Bs4bWc%;nhI`wP8$sezQq-1<8<27q- zubpx&3M}*MyAM8+bHp}v#?D&v_QZN?<2BO$@YjPl`HLjUp_$gV^BA6R{(<(fyXebS zAkD(k-uk2LtWS$<+o)-@?ukLCnPn?nj>kft?cSw|8n4Xb@q-X=l$=tys12s=Q?@Uc zuhhb_D5J=1m?)K%#%qh=3|LXg9 z)uTfiqxF-x#F?p$!0Li~gnXc3Stw(GG6w>F{;0SB&h#yyQPk zoT5u1ZB*i2BQ)N&-fV;K+^ncK+a^#eSN_d335y|k4XIr<@hMAE+-piW)7!FJP1D!y zQz)pE1P3oLj@QqnJbS+R3crDbY4PeKJQW-b>_5ZaIj3Hwq+RgdTWdnl?hCquzBCzH zJ*;MmCO$H73femJrX-;roN)K$gGHJ&jxp~?bKCl(aM*Al#LMxJg=|l$tn@6_#+;3p z@w|~3P#@E0QMgs>t$%C0&|-Cllz)4nP-sKg=e;r|)^_->r?}>}yMa7z7=|yz;;yVr zHc-D$X+2O35c<6Cr8^(jCS;7!kuv5!+wd>cFH?$g8lqPtxqr9B z`rL%dwPKd$ekiG`P&#v>^x%}nclFQ>Sa`06&m>I_+% zStplo!O{1R+fm2Bjk&p^us#CSQS^_p`IjiDN(k~pfX18@fk&Jo{;G+dx9AsBHetn8`$?udd)W6N4;?I0+G1Q$-a zBd*qSAuqUd2@U%Iu!02c!;dxr>r3$w4s)Gnh+h;z=qok)-SpHUZX=tPJN_K+CZ*VP zc8PDq{tPS=$5^v!`PIO5UvnML4ouETi#M}xNA~z&RqSuXb4vU!aRr}@4)v`WImoUz z%`4?5z_G=wjuZ-GdxIo7q_Mq0|D?=;+J*yutVlg@Ppb4El0+-@LKg{}duiRGC zklA?rWPbbfregx5^-RN2=rdnGmp%gTxs)9nUp9TjBO1xteT~VjNd?9jh@u zzy72)?EL{6lW81t)2f{?h=}VC?(z>Vvl>4Hoy7?f3vWd#u2sVqi0J|L){DofCkvmo>1WN)Y3*Uc>*Y z;ThgCLL3dL$NC{oE9YD$9Ca(U_0mM__|i;5s?Fne((YsYiKgc({_25|>)8`?oZO2x zl1_xLO;TWc7i=3&h6)yB;q8_?;gY0qtA@ezLE$_{CR|!G$Q4SZ(An{0$U;YY*|Uo_ zsk=r7NnZjMU&iN4@g@hi=ORewek8x5ZZW@X@*~Nx_ke&keb``Qa>Ki5PgbCd2)gXF zj46?%Te3EpSXVp6OX0j2adIi|4<6%N*iH{Dy$wdvqTQ zZtZgIyY&%!E-}U|(eZN~Pvp}aAf|rp*&I6mrd>_F`H=jU`D2(nhEYMc+j@eES#2+( zIqn=s&~goSdO1m2p&==%eCCH>Z3~At*7Wn|Ar{kxC`A=mpTJ92qiM4`*5^j`Mm~v+ zFqUPqPTlzq6=n_oYHHo>V^J=)7zlcV?#InZ5WRv%`7r+yIJqOSi>q7qyGm(Yjn|K_ z?va~X2f6RhV+^%{N!l3S9osDK3J?6_U5>oE;AFxHtT3rxVo;bA?r6nF&+hjSf2oHaS$;(U*AJ8BMs0=I^Nklj7YP`j!w_bbu7 zdO=_*mm-M_pFB2CnP5{aK)d01gBL6>kX>^n|5?WIRUCSbaQ;oSm+mV=TlfRXnhV_d4!^X=BMKf7K-^mfj)W*}O#0?6VhjrY$Z z;2cX|Cjih8QMU7O)&K!B+s-na9b@Z#(rUn=7-NNCu>UWZyZ_X_?mxA!`%mrb@l*SH z{M5c4KeeyN%ic-WB#VPBQRwwFUX%@U_%)8L^}r}~B(uN?_G)AkT0bS2g!aGQP0|DS z58Kfid(70*o)f3_G}eP?AjUF;A;h#THBwQaNvhydx2&(p((wd_(L-i&=4rl;`+9XTtJ4e=`D_#*c;+-;O3fQNtQMImn z_`Su#8AIi2UDRk$(bG{Q=~r{?>qjDKE@{k##GK&K0IX6Hm?7Kux8t9cJdaN$2f05x z_K#;V_Y#y@iW&V%pIRHgE7uc5+RH2o`y+z>u7!};YDjOmzn2Fvm>AJ%51df`23+$3 zEbAWkjy|eQS87J~&kwHb@os<_`OqpwPE&Fo0ej13j5^A`IQodU{h`%cpqno~vvx*2 zXB=OSPv=Sa9|HU;^85Y-jtiUlCV=(qU2(hjv2Q%jSjJZ`H$`^7^77gqI=bWC{*o?o zErCIw#mj<#@jYsF0q=%hH#4E61>`R_e1JH&0*`bBWL1NPn2;#@HCS_1`dbvXF4{7G z4KK!o7cG=%Wrw8!30fs>a~r4UDxRd@N&U&|5<)+h&rCaFV&^)kV~?SFye0Vx&PcQ7 zs>s?yvd^q426Nhi;>`FFp^hLQNB0AzRZ6x&&+j{s8WZgUeCxc>iJV$B6=R~u8eXj5 zll4-RY(i?MlGE{^9=SGgiq@JGM7<^f|&BHNSx zT*K4d$=qbv6OA^OOF9Qwd<5>ss`RppZubTohGuE1mlDW)#U6{Ns-2;|spG}yVa3)h zSut>v8hXTb_P#PFyQH@KNj_-F#bB5K;eB2%E2!rpo{jGwJ2M=Q;Ul2fr?^fq*VT#^ z)fR-Ai@f5o#sBW8**DPNX)K_p3lh6?=5jmzsdC|4HK7F79~AMV?nW^ zixC|9RMQ=AmnVBDciD|mw)=g1Am?u08zh&GE9JI)XJahPge9er}= zP_UGeEr>;t2m85>ms-|oPp2qbrkj?S23>!N&E?sXa3PXJKxjqX30mBQ1XhUf+6@DZ zx3jyny=&|~lnap`Mqo_kDu$MtlXtxxZYvL?s7|NLc#Kl}xr*=HA94)YHz`;4FZNT| zD9KnFi)0N3VQIX^_M|^0?32A|B?EmoNR~dkVNDfK#-0xoWWomdUM-qOm;~q6uHzNNZSY^j`E>9 z)rZ7la}`mSc}@NHbjcE^FvmWuKUI?Hdf7P+F3bAbsovgC3i%BcuPv*` z8;@b}o#1>2$n7$4jv)_$CPaN{&JJV$cU91kfw$sN>W+TwWw2LFzaQ@RT{n9)i zKQ+(CPtEiBQ}cZO)I6U*HP7dF^NbH61`J3j`|1lqjLXSRg=!CVbB@1^>q7kt_Ho}{ z&QMHnC$4v2{^wkK-C@~qtp@MLPbc4g_x=pKIZp_^8j6r3>RVJjA`-1AzjQMX#?SeW zW>(1A&RUnr{?;9A`S#q|UevI)OBiR~PQ$Y4`nNmIXoyS|+n)0o?p)s|w0|T&td#ba z{&R6(tuT}TH**(Ya8@CsZ6_Erf|!m@6`Bvsq>%QGP9DbL*|dhL1-tnAx5mYuz)qn( z-sm;C9zDj)1AhN9EKhY}+Kj+8W~#p!*225+$EGU+_qmSeiMlzo0QwM$>d~Xhm<%h# zDRw4j+Y{(Wxy?)NtTtc|$4l1Ex)e)qjK>Y9K_j_Ja7W`tI@&OudtL%t8s>&cIUTy* z7o&_@p^0tVUB>4s9-Xj}C7Sp}6rRg;#a<{8ZrAs8x}+J%5C_7Kq#BIOsYh3fXKKr+HKr|_77~Bcm;N2j5F36XQZ5!UB`q$dk!p9(-$d`{|18~ zl}NXZ1a@y@c&5otdcCUe@Shz~F`hW(@3^rt^s;!aEM)+gU zQ(qqiCRM$3%rc{*>~>D#J{H&w=P}+&d`{8jF<;^bnatpdqcO6vOCcK$_mu{9E$P9T zppAFW6=aLW=9$>y=eK_b|Fo(Q7g$*Ky7jErG3hCzaNS~XbIUoystf(=TG5$gB*PDG z)b;#viPLmIkB+;hA$DVGelcsOYS-HSmh@Vj+Va_zf+P5%JpmrY=S%zw{#nP!THCg< zbgwwY44JyJMe%=Yi`N7s>Grr1R+^F5AJ|CYIoE|Af*7&maw6Q{U*aNqkPk0MWcDb* z5%~a(H~W*~HFCz?F8y#QKi|PWUh{QNA2rnU1$i+L$ ziww^znNsG!L%)SbRP-dX)BHTm-gZzIaUrRMG#s^E<_H1<0j_W7CMT!n5cPN~_j=9G z8FH{ztdCw!rhww@@2$3xZzU>VN+^gtdKHtr=Newfu19^5 z1kZb@1_n^s0Oi`5sw~_OlRh`-tigc%36x|Mz2pvDKgF3oqlh1|o9`cLD~~9NSts2# zcaYREBX@^yjmj{gT6dbLjN`#)I{)D{BbG1VfDjI9Y;uLz&25*YoG)}|hv+~|VkDfM^$9bzNQfe=$hJ-&@aHvqNmzW{h?gUj zw;7G4T?>T79*sm+3U^%+5On`?IJd^&>y#a+*Fne&^Aak~+5L)TEKqKZxuVtKLbTEY zB2?@(AsJ(jZI%`hc=w+)O*GqO3bpLdWBJ|SnqK89OM(BSC9nBI2KuIm)n{KVsd`@j z+o=VVd9q&_9&R14@N$YuW=~1pRM&0`XL~!ZVRkUANdKg7I`TgFdxi~r_$lUf%k)^u zS9{yqiTEJT&@CItr=3XMttdr#kLT+C=V@Yru`2EgbhG$9L3|_{U!XkOPqV(A`}6m; z2&tTnBYangRvEBEDKH&N+-Mu z`?~zAZ%e36EOX*8*d=^7xI@yj__UvwneG0E+{oZ^&g8ZHqv)k#ayKS<=j&mJwW?DT z)uIoe2C6_-jSPs+j5Wr1uTr!hjIO^v0&_!R-D)4+pX>OXx(nFZ?DBAuh?)DaYlJm! zVgT$bbr7)D7n~6>>el17M+%JCJ{eUqVX2FF?;%OX&8&=q|M>UXzWpJT6?B1|TIvv4 zWws3$P%wAfpV2(gq%~Z$F6udP<3tnS{m#q9l;MwwL2i;%N?{|X5n_|1wXaC8UGsAo zXEMAAzlbZu7!z^)x%o*8v5cqNu`oy|&o#iU@u!|5JevVuq_&|oWjD6X>bnu)?GmS=4BO&%Cdt-o|-{@La(d86=phyY7jPUw>vg|7OriKxO{8rEaPc+Y(Nig z*c4Gi8GWuHM-JO1kgPvuSfEzeBo-77f}$lt<%*E(>4nT!G0wKWbIU48lHd;g>O{dg zPLK$1vKl`lpNMnER66RW=Ng`7$LpBL6m~4;!&RNGYvgABcPU9d;zH@o4%bhtsCMO2 zjKeVrNL7XRdJ7*GD}2f(Y~j(=;DK!?m~uu9#VgoI8xb#_z+&5}pt*Ly{OX z3P&x&WLlkceY=CH;u_UZYnXXUk7YoCH|HLaPD(7Se?)ST3X6MscPJZw7xHK?b0NWA z26kyOB#A2S+sJZq4s(St|FM8)e@kc#G>b9Od9%EACB(54mQ?w9xBbukY|nBebz6Bl zv1wa`g|A)VyM{$CAjCNM?)z3+WLoUaIo&k?Vj6AzN*mCPD`F9)tAH-%Wk({@f}puEw0i58Cp z_pamPy*Hs95iQ=&Afyz5{>aI3yjJjNa@PxC(5aLB*Q9C`ON$D!h3s@c0~Z~@ByTK~ zfz33GpOM&F2|sue7ZrwBp(2yVq+au2*&R*yUt*yTI09hwRtR6OeKg2=dW81){*NYi z8AJb8xH2TYo4M)Qhz?x+vyTp99v!rKvf}$r5w?VC+3wX4+UaPBC9}VhCFU)+3bz0#P)oVGHtP)hkLw!c-~tRWzcQizlLyPDoO|(HR-&^+(69Y+PaIiB)&hnX zJwR(Q2|u%yB)IhYsps&HWSKj+z~BNDwa312=y_%Kkk*0C$<E{2efR|Mk>zq~ zC-bV&uJEtkR?Mfp$!BF=| z#Nz^V#&>k4UWSQ{F>9O` zMgNRp4*E{hIsUVXpPIlQnp^+shvs(tskt40YHr7$n%nWaxou4$|6MA&)&nj}307rY zww-XlNLyVckB`ZQOy_czK6bu1vauYW_bxCOS%93Q7%P-yO+;OL?1otX9VNWY*lP%E z*$VRFPU~&d)l)JbUk%v!4|dC*&M1wGd*5I@=9HHd7mO*Z7N=fZE`|sf!28GgPf6ry z*-{Cuf1EP*xcQr~U48fA&1}_J+;I4sv?cF0hDGx<|Fe*nhXxc< zIqZbod(5@*mwhKmgx$Dziqf8bQVCqnpIkPks8vEF?ww%!ojEnk5{#`|vrp3{^DqD} zo)JfwEe^=yevghbLVl1m$zj@l@Lb71J@H9o%`v%B?=fuwt$^5Y$7|7!x0&;jguFUp zQqP=gD+uWL3jxKOo-sU>96h%FWFe$uia~qLaq&#!j!Bii^`nmsJ=-eYpO2Zz`0j|A zZe_H0gzr)flKn~Q2gyjcYr)@{Gw;KU>EVBK>WneAD^ukYNYnwJAKtXB*rS{iSo%sN zI4UEC{0W=c4+ig!(phw@d$L;hm~r6SEo3xCELs+E^H8t{CEih6O5tK*f1eZyLQ!J0hHLLJ)-vgEVZEqB|;k*qOn0@wKM5ZS)mCw`gw7Ao;-n60b zW--sh_^S^-{~+3Xyd3F|z5;XNZ*7;&B^qO_$!;8JdUa2}ysQm{Mtp2raDOOt*lWx~ z?HFAW#xMTNP@U!D*`)~*u@C;|^d43ICc$Gh+%TPOm;AAkuSR(L+ZYv+nni%W-PQe~ z8bNM})oCHRXx?UwnxNw-XpekqW>$41p7!pJqyCyNmit~HAS1Xip1%9w`7e4iH9eH!`zf81 z!Q+20(l@_rPXZ^y3@K;<%7S4uNgiWiN+SM+6RYIzvH92=I<`7OSJ3s0qPIU9jG5;u zjAUECKfvD9-sN3l=%Y-Yo&w;&1_NnIW?-LZY>P_}X&2SW^aI#Dc%?ZVZ=I69|7PVD~>U z2nhsKYJF$aZW6{R#I{VeYoqY%aBh|nal~E!T(jaRJzhCq40&CU?E z_`sujXNuol#_jj-#-sp|dq@z<{nM2b&~)v3QlFlycpRg1zz-Qgj_BSAa+*pijJZhp z3vK9pD}~3H&%M4GgF&iOC>E;t{Zrd76*0iGEWK30kgX_y_Mz*U!DvI^#&$t#_5u?C zy|eyTPdyj$>}K&BF@OP=?OfTaapE$?*@X4b{g`P@<;Lw7y|oImcrj;mKUEMa`CrN^ zs=mTexv?O6*~izTJArr-AzLU4d#@xEcrh$G+MjBb;ByI&X0{zmTVf;eyDQO}^+5En zgh~}XI&GmvBY( zUaW{Y1Qg8<)!a9M(+VCpP^?HU90BZh* z^H8wed_@_$KKoIL)k{F_ZH}W?Jx5b?nzT3T6$El$8OFGjKbeAk^V2NiNoGzJh$Ksh z*L4R54y`|ja+m<$-*(O@`N)1U_Y~PtbQ5adRJ6wtD@ImtoRjMX9m$BKNiqx`ico2S zYJi4uQ6io=JFHjE(KI|#-7MfqWezRbxe)h|j_(-_vVs)8d5@8Fr%ukc)97fciKi1n zA=_B;6bU6odc4NCC3abh<~=rLThbTq>oNu-v=R)5+I;CD7)EU3r=DlqTeX|S6Xa_K zkre`VX|E`l=W;G?k4F6CT@;zR_d^gr>CB#}vg!+*3=0jt$g>N*b!xN=;lJaUbG?hv z65vmrF_*vZY@|#}gcmeM&lNm-+(b|?)j??Qi93s6H)N(5H1=m!ylC{E>?iIgMnylz zA#d#wvXWep`2f=M#}JU?Y_I|-Ycb+=IhXQP7ErzSnA@lxCU9+Md#>Q!;37PUYC=md zuGnIZ28Q81S)3ELe4ufyO-$ME^9N;yRK+Z_>xHiFvDG+EyRrQ54HCF~b1&#~miDL5 z(3@e4U7#<24ew}Lg{1T0COf6r@#?bHvdl(sFjwT>w|=69kiwh{ z319Dy*{jX2y$}$`qucy>jn=qPE=+Pdu!v7H6Qe>IYC6wTBIT<~GQYRh7tSk(jUypb zdw@_C?MB@bPOeFAm);tKgI^F0ASCtM7xfP}d+dgt-lPYtO{xNESlkB!r!02!7f^%qBL0P->f}U&aGzi)yU_?PIr0gj`=P>@@w4PIvn=0>TxQ z8#fKxzm4wvk5ZS?(T2*5=aWl<&?JydH8LOl!X!X7b~Ui&KF1pj=Io2Dg_+94c!G1R z2@q(XUSMG?ljB+?vgqs`u(O7uhk(8?-U&%DITQ(y`Sv@ukjG(~;LWyh{Rt!LyQHDo zro14h>fk2C$uSO}A}B1A3SV?TlkPp2f`h69)kl$i3}yc^a~!q(%f{^au1A{eY+d9~ zbr_D(Z6vW~+Fnn`^Ef?uOtdO*9{#xxkJFTCxMP1#Z$00P zwDxuy?ZiGz|9W3Ac2ezDWgK4v>roi}1XPBw&BeGCACeSeDR=W-t8g%y5GH zigJiv(<;_07PeUqq%XiIMV())3-SUJMtb ze7;*h0z);zm8`C)dfE6F(*#mCb;|L8l7OC`E#Z8A|97Lyk3zA8MR;Fr z{z{%z(!HUC5!`!dh4fUuVqI1F*$TED0r2`vdiPDNyd3T#H&23qae*_Q_=Mw}GW{-M zZ4u{_cMZchgC0D;{qfnjznkNTUN1!C7Y7UZtNHE8E5#@aKMAY?_&(qn%cz zJE7c3AHf0}jLLgo;oKGx%B00B zEDb3hkS^=Bn6l<<{$HZ&$0A~I3?v(1q;THD48&|!KT?(28F4OS<5S3%gYWeOJsaD|P0@|cNMr78b&TbW{oVu8CsL>_{C=nIX+*rx?uyXRy*qql zj=OIfqV@t5gK5l+j=}IE73Tg-Hu4n3tih+xL5iWl!W=>7c)h>RqZqd~%nvNpvCNuG zAXi02{JTGzAk)B5Mb^?pxAROy(9U`T$kcoLb|4%K5cXuS-zT0Zu*6mC{XZ<1!~!3e zp7G<_rg?FA&j@$VHN1}EQRq{`9@Ywh$X~iR(O6=Yv)TDPj(z^ynoBK068r#RD8&mk$UJud>yFD*Ak{Di$^)6j8 zQy3I{XvRXuRdJgJ_AujJdOtXYkCaemufdt-3LP5lQ4UFAjl;#^i}n0;c|%nnJmt!5 zKIpg}zT=OwUoC9RY+J1J9Sc&4w`OfKGJ~W?9mPa$VpR@elV2426J2a ztp~`MXAX_?NUZtFLhjhVaF%xaP6PBUI_++6MO-(;L~*=ElIam zJD7v~dvc4#JjUq;v9mo8#gjL8k$N~o8>SbFdHILMEO!8*X^d@TPX{m~S=46qDwpa& z14%9kzikC|O>hDz%PTw0@ym#O!^zu?j_oTot2r;C*lHSezptCvr8U8CoSBAtqU{3< zQkiXVU;kOgvlX^j*A}f|Ei!JR%#;qoKIh)Lz--#CpQOF%ld?BmaF~(TN0aP@7CPYo zHZ8wY3)BW8XqI%xU-|-7>1fi1Iofy7SuQXUQ3A}K%XnhG%aXoHYJjx2DwT1N29Z*p zs19AXCy=_E>#MnAiGs9&mzl@;-Q_cNf}A9Rua0WsltpP_@Nh2~yo=|lUK+}-(Fhnw zWuWGncuY!`H|V=$rl8nF``)S!Y>$WbFebE}l^~FDIZ_;QVYxdd4E*z&q}Nn;j3em) zz#|K&3)Y$ir;D`G-U%m;W=!_Rh=zCnDPTIA?};q5{rYnWkMkF{Fh=67qbV_Bd;aln zFWk5g5+N9z!eG~Dmws-1!&Z7U^54?paR}dZw+6I@z@hn~n4>4ob9a#BB&t1=tUPw6 z5mpH4(v{lt7+)@L%PNY!q+Z}>-ICrgzR|*0kM3RIn&+a1&T+2o_D*X;v_it%s_(MM zk+CK#<-0{G> zQV(yc82i(xeIpwLPQe;+Pba#Gs@Pn^pJR@%sEe!+2yqzy-CahV-n*Ui_7~@ z$+U<;D8=!;N3r@1A;ZYCN@id2Tw)Tn(6JT^T}oL>x^fzHG06?n3kc`ydTGJfd_WdJVdv5=zGwZYRr~K4!&p7@F(`aPxcP%UmjD| za>OH%jjx{e30N=xI9E}rksCWghu%4EjQ;#N76gSOv($F)r^|R?C}ej(Vmd;4I+sm5 zBG$5}FII|_^lRNN5gp0sS~+X&iQ`vjHbU}N69exkdweDc^Fy1w{G;n-qJ}gs9&hQf z8PbhOO+xlsx*hr)G663TgoLAtTP5_AaIrO2UDbMCAeF3jj2-1R)uWzYTq{9M^;pPz z#;JtAcM%)%h(Ym;y}vK7&FP!dEE|JD525S3cWp}(%ZpmEoFA#+km`qk!eFD@CnG9| zBUl)ze=uD8&2%JX@tC`o4uyL+NQ2-^&F3MbiMve9c4F?`HH!qd4deMmNj8z=h4^s%;sIX=u1)bTH>drP(=x-0SG z^09#D6|MHcJ}k=95Hs~Dd@>c_x1sLRpvMik--)^Xl@C=X8kdh zoM8zrl(vMsbXivM1tt}uYuWl7c%Bn!&la$?Yb8$+B~OQRLUDVLZ`+bafuaH?#s_J2 zePhB315AJ=vx&QYBZ5ScopY6{vC}2aFfMH2ZezHFA-7`T4c&GWyGQSl0Fj}$!W<7Z za@=aVl1ii1gmcXvrF7RB# za|CT*rG5b~ZY2f=vhVSJWm;SvvH*@Tp0GN^PwJBhKE71~zSgnO;wc{1A_)llJ!ztF+XFd&Bu3i+DvCsZHQm+>fe3G2ozAj~{4_vNlF$paNT0 zh2cW`xL&fbojz6Nb|2e3)k-8PEjwdAwN_Qvm*M8m57fTNy=iHO*U!l3tcszVETg`-&Zi^Vyq~D6qNPi z`cVKKCeiok1NTH-4OD1v^=k#scGxQ>M9-Yj0P*hUG#67KUNu^+Yrh1fa$h=uJDfo+ zgRgg%{u|j1iJP;3*}2jvOX>E%492d1Pkw7Eo6V$Du@@hGh}`Wt5L*Ay^sduo{eI5f zk9OXe3YbAlTuU@!47{ldJ&l;@?C2BL=E4sp>g$Y(4E*=c3OlS3Dq>mUjGkC5x zN4DR4%#V+~VvgbkZnT$B_d+Bg+$LHmLgLu#15WXR>K>o5y;kuuxKhH|UB*~J7AwnW z)Cg*s`^cG13?dLWNxGQ23cyQ)>B+S#BS}^P=oi}FwK%|Yo*0d>KCFaFOA^FHD{OPI zWW4FfZT!QM_3+w@UX3uOmQmkkieL?Bv#06aKo7foab7P&@N*1a+tbl5Mz4K>zkQn`}d)s3yO}tMX}fN!~$;EzA$44Pja|`Y_mFJ{F|dW-=n@KxcX-? zKQ)ZMG{WmojqvtUBfS082yZ_%!rONv+@7=}W_jG|XW1HMuNFx2vT8?qyKkoB*4$}J zBt6|*!L4S2a7-x)XI3)FM z&umiwEC2L)x)=?dCNOIFt@N*Ae>|euK}xC494)o&BRk5~)Lp*D;c~8PPxIPmKdijS zcBn&O8b#n&X`_6?RNwF4_74?$R&FSd)A#q0p3)yi7=Pem78@5TIL`QHC1YaybEvL_ zysP%<%To`?JDOLXF=C&t$l=ANX;-JnxtAB}?wFXt;oE>cD8zvS8kY3-T*&i;jr~5$ z-r=%AuASBxeUBP(su}@fM;*7u2Wnlr-nE^@eP3S7LS3tIRnxzYJBzidV($(%fNS_umaq+Gh|~b|(?XG}q`++8_hC=Q^Gz zZ4LnW9t^sx7Uba%oZ$pB_~$!f8W|B(>ze9;cH%;i8vg`L<+ z1}^245rNdAQS*A&?Z`}8u|8+N>2G5c}fchIBrV^j-7rG6IP*+!M#R!@^B9u9g zF5o&~Hr`ZTqiY{6VJ0M=RBu;`HFNQJGlt2~Yc!JLA=KCP=s_KDf(?Lxp7&@0wpRzN zcsH*%Q>I6(RV070eb?2rr##!x?(A&d(=r~$8OHIz(A}7nTp!Sy^&QsDI{7m-3mKm! zi>jjsfbNXWk5Et3vfXuJtkS_mYr3ZAA|8FPeCKQU6F=M1ypaLmjtRIP_YSy7$udMR zcqz(Z)E#sc*M%=K$By`^kmqt!boBP3!4s%7_a5D`C$@M^7SwX~w30Q|9ZPAi*Zf?= z^xCC%(sz#cnQq-LCZA$&3SNIjZii_QbJ&B@tR%n8aN7$R7<}lL@ko9Xy=p>N>x(fw zM}j-k3EaIfgTjQJqVknnu#waO6O+ib53fbc&!=e?*Sa8d9BbL8>rHdXqck7NkO(iF z+3l1B*yF`eUv<(4yIl6`zU3Y;Q zH)@pJMcm|TEyq_ej^7sd5dWn1?6tlzS%-VPY^XWzkC+mUs8qIjocAwpVZDe+ z{PeHwll}E}vv;lq=ThIoWLUSruMlzIy^^nv`TRpPvm2SYwl5QuZ~9BDmyzR&H8j7i zfM7W>gAqN^zho*1JHUpibAC5Nj2bZITy?Q{|9qvN`omxP-tDKpcmJvH-GAzP_n-RS z{Rsf;4_GA1nbYWg-HV`}BbznzjjhzZast<+A})ZO{c+FR6F5c)L0ykB_CHjy`_qpK zj%MTWWL=F}J}DcCxKLY$>F?F*oPUREY(Z79OLy3nlBhLd5svQFr`rWl;bajWr8j83 z?sa0bcV_KYpV7`N2BwgSV|-~O_J5GuBcLSFBK{M5N4txZ4uv>%%$E_B`M0q>@gk#@ z`^SQ8k~(ASp4N+=&CG|MpYdzwo*%P{CTA(G@|Qu?6shz$#v0^G8@uo^(p=i4e-`pe z-JJs-jR`~g7(s9I8GaV|Vt32HT}A`6DWB(9=K!*4grvaNW9{r+#xbL7vJW493bx0@ zaFfbwFOFdQ;4zN*hZy&@3rX$Z2x2(A?aS=Xl|1`bw%Eu#31g_18(B)ghJpp?SR?o) zv>$ktk$p|piL)e0ZZT2phJ*VNY0DS`sR<2lKb)Lx`L?h^*v6H#u z912*NUn_aadUw8t!Uo!rzf@;D1$5kzX1UFkbCAOUzBz_EUEQu~%j>za{VwB-C1%EV zs>S&EDT26LIK=Gdu2U!Wx^O1`MfI^Bbmk%0nDXeJi+CAW#UFHw_fOS7V_*aPvNXn3 zRD(zW6q%WhJv+-k4JMa-*nQJ^ z-OX%LA)3W@jlu`Chd?vdPjf{R>CCCE20FlM4&yr=U>DYgDzFDjnTH#%!kBRG0X}i> zx*j6%#muj!J*Kbw@aSF*gPcLwyuI(kbl!~!H-8o!p@5l}<6WUyJoQzLSOxUq=dn6F~EAWJ^JTJ^$5+NP5u`G@g z-oCK&!7zU~(e7`pubA(H_%e?0-9}=LsiP^T>G*xZ;p%g1a>e_Ca4O0N5tAqD7Q^c?+b~GT+wk*LFh9nQu0t$Gpzzx7wG_IiC>9%yao{ z>~lmB@UgLa$rIIO->=}trO(4cM?)9Rh^Om);WQI_2yMxIY#!s7Q=3;jko3Nl{{0qw z|0wl?j>&j|JkK!a^*X=c-1#zm->`fl(my2AfMLt|$i>lrDwe z{81StJF#te3=ftezL4z`NaAS$x7gsm*YUt}XAK9I`uYLVTVF4gJ+oW0x-R2Pwn)b6 zW0^Fs7@=%L%s3#g1qhEZ_ukN6+}NA@=>QM+*@?1!U7&VapW}K>d$;7?Pk%gHBM5^oBoWdQCY;14D&mF>3BDqa7c6WLy$$=%IA>B1=j$&h-3HCRD111RgNR| z7o)@psg^Z`4Rfl!xXhG8l*VoCPTTB?xifNCIv>)1S82^;or$iG2&dEFLUA)4|Eyzw ztz(F>&<1p<^p1?$MMWtDR9E-!>VLpxW9IlZ8#Y4Ob5JGjr(mL8cJZDWY2`%>*H*lQo&BqzM=e@(iI2ijn= zy3s?$heo=^y|!P5))PzaVy(E9y9OXv@ft#M38xY?iSE23zgCb?J2Mz`4+^^W7CnmU z<4qF=Q`5}jH;8$^KRJitsRl~;cJJ4viV73*R4skac7{)PpH#KBV$j%zN#$H-9;z$? z=2pH+%cxs4#z>ANb>Mnb!0@Imk1x=5K0em*!b#gZXRg32cVD|(v-3hA)971wK+~UR z4Km@ZtRK@y7=fr@?Wwu`ICjzq%bFtLzV}_+*Q$@ca~K8 zEr&l|y(XC6i61yz``>2?4%-d1upE8jV?xh9*Pj|Yho1=R)ZU(PsQpAy;-1`OT7qN z%ug2*u;_O?DLvhuC!WVq1wW6MQy3GT)D=C_A_lqVlw7%w91bOn+>!ZwR}m&54H1n= zRI9}v$xO$)@6;UgRlro(I#cs%o%u)OJyg%Im@skY#5(I!zjjO{NQAAu?@>Fz4mk%0 z9Ov+b)U^j$+Y^#uXTvaqgEg5~mP92^4T%?GnKKX1UH65XV!ML{A@1|uznRG%n|PFy zvr2xKc1bR+&brb;4_w<5$35j(e%kPv0<{1)z6dM~N>-35%B zwT0;|ISW71;*Ni^f*ADZMoe>h;H;jtZHoh7S1DiDqj5;;3)C#Pp9fBu9$=pozQ@3At`D+PDX9x)a3a z(_puQw2ZtKRh+z+_Pjq=@jS^HDH><^9WJtb#FHr?GpJD6LyZbX+b)d;4vW6F6JAZ^3CP&obidy{mYZhyQ*YYX zGrRQS$%ZZ~#>#3NGM5kK`2*uQ-yT%K#6tgu-d5OVk{CGV&hqn$+B&6_;G!Fv^j#ON z5?Fzbt)ZWa%@{8w(Gzhyy8B!(^QPWQ-}sd_5Fmw+j!kb>@@|j-Rnnqyey-t}I|RZZ ztAZo%r3}>agc&!-GVm^drpweDnX;REPsxr^TQW8(_>3Msuju01eu8|!VVMKmpt26tbG9RBxu39&fvo>crg9^m zM+WuHL8zHO)y z)<*@X=d636DrN_>^O3oqErO4BQDU9$p}E(Z!qTkiJPXfRCRvisfWqG!yXf~e7=;gUHyyUQX3@1NeHx=9*@z(rsH6$IBQJv=2*VpD@%i-69Yjre39nCU9k$uJdaF zPt`3V2;VVh*>WSx@yRrV*sf53`>Q4@cfR)Fu`fVKB!T96u=p%wbt!?v+yDA^{8?c!Z1KN5|BAo!R*%^%;XmpRtqMAlZm&(}}U<0Fd$dG30_UqyC z8D)0$gAi5h5DbN*?h2527a5}1t4BP96lE@uLQvz#lBF_}v;kLx` zj7a6)U6~Qj5qC^m?d0L|LOmzxSLHf4-88q=K=|nSQVjUq7O&%4DMT|(h1hijn|*z5 zq%Uf*?zr9VfXY-K)gqG-#2*#`cq#rjwxc%RJ3rN2p>>2YTgH^^+z>75sv|#} z6(?C?9zMdGFvIoajEwG2$m5=@W{jMod+8NHfwBB7iUX3J;^54SQVfGJKLoH#=+2LyO&c}e}%5K5``aNT$WlMcEL=wkbvFW7R8Z?SG| zI;%uVrfx7Kva%@-?B_){iMJhWOQKy-iUL6paPmx`gFHi{lsu*)g5zp4GtUa^4plZArLn#^bDys`_?muE|zf; zqr%g;KO%M89^)-4*!~%@JXF4FwZ`W{UYz8Evcj-c$vD@{IL?jn)X-ve-$KRH#OrtO zekQ{XJq(kB#-PlhIRye5jMpr+i$K?8lB=uMs;+TmnKxb#&{~Ve;|3%|e$J10Cd`{ilkyFYpJZ7o*PIdrV zkFlqzARGG&2Q!Q9>|r1ZBl0T-Psi}Q3D1U>{9=kAMzT&l9R37&!O4$;d0*Kf4!#-` zr&`7A%<>2ZV;chTn-*t%LW$r|_efzHCkfNwPWz}J0vrRh#_c-|6YGnbtdVF&0d^7x{9 zW(I?o=jkYkC1X0?NsN0w$^h!eHIxLb`bw~21{P#;-D{9EvJF7KlV9=43_*^JOBH|R z_G&*@@QfRp4d~({JVjD-{d8nw@0{2G7DaeQ(Oe_@`!cZg!VY_Uu9MezKXpqY)sgVG zp<>4cazeh>YrM(K<_VIs$Uok`G z=~LshEt!$yWlYm!d@iF^4dUFNZ&}q_4C8sw)Em+oMaB+o3xSy49VZ96#I}%7cEYa< zqOBKvzdw9SE#TSSqRedCg|-RL6?Q`J&EC5`56r>m0){U?)gg8dH8{zj7P~A|==FZ+ zB;#aS8J%^1M^`e6_GOjlMZGbjkr%k*7nI&O{Biu!kpsx|ooQ?huQ**DC@OFJy|vpy zCA45?QHJf>2|ZYFV?3~y{o_sCHWcR~OR(B~q$0!b2hA4b@P6=_Yq0<33Erb!jmO*D z1>XvAeXlo9MLp^B>q&aqJ?6E6EgwVd=k6b)>Wk-L?@}W)mzjD#vBvKA{kwuR+R~sr zl=#J4My@(^i!rh;=}AoE$w$z>YG}K2fal_HB<7&*{6$?Ivc)-wp9}dM)7#%VT;2`z zF7sD=D)wfIg@R98ZF$>Ya0pglo40xV?uPg5h8vMV?QZOvj?eph%6&>*e?y*R8EnIm)ul1gj!Tj`+DBN%hp^O9Z9NI*(Cir@;akKNqeqWa!?Y;_INV6YUncKOCQ*l z@j!s5&}fh)V>8&9$CSA6H)D(&(;Z`gO^^^;QK^i%#mQY)36D1i63H`8rc>;2wz@o| z#S$Jy&am58FDwK-x|?l}Ob||zNgPyN8d3+P3uao1*q$jrh(ue9I$lJm| z-ebboU(@qXse(NS?m3r_!gu?Nh2xy*7scy8fBkJbaqdZ#M`bKG8nWPMOj~oCM2gS% zxwa|8cmu|XlBy5r=x@fjBDI%5!sX{*90H9c#h=Mj*`HtO3B1b6h>l->b)SL6`xsPf zoKLH>(A~&3!X*Q&bp6=Imw^i--ez^|hI|=kpP7T-6$Y~JphpT?)jwCJgAP;vWA&~p z0u0i&ljuBO*Y%0JLU~4m{6*7Tc#&C#P@&A>d(<0!k69;0|5=K;wwpNdkF;)kMLF@p z5TB>lY};u4>Y6|}!nFL!`*TgmLoepBSGHKfRm_Q1jIFjgo{KnMiy-k$@xzDds?6K@ z&7i2=oo%fIL$gGz+T&s++~xY1FD`H?QrZHPu{=>36_KSDOLqaGNP7I(#lTZs^^a)e zx^=VzQ`{i6EG5kRT*DiB4UManIm}tFOQQ`nqA}v_&boxIjyCb^XyJEvaw0+bk@1yhy-s$u+WWUL4p(8I$XkryU5zfVWd5(ooeWU#NkOk+GD!!kHUO>1Fz~hFX$AD z_ZvE-K0DL9%U_*)(ali0O)6dkp1xB`}Sn$(cBhPPo?P z<2EfuETx3p&C3B_#=PIavG4zk!qrHLX*5`<`I2{5bAqw4l@+_Wq8FX|XJ5)DWl`c% z`U2VZx&;j8Mus6~U+r(-z-5vyh(>fCa}6Z~+{75uc3C#KJYhw-;a2Y7hR0U$=uj8G zp^Mo~uaC0+o=LorK9V$j|8Qe7MVS=Gzw(=P>Y$dQ57ouqmC|cMc0Ut=HO6gi18+~( z)blN-)Q#ODHD4XO|>&Mz`EN;P_hZa7b%jH51#os|0RV)~c* zmsgI>OZ@y$+H7nP9Y6Q3<@U$U3=qqrwY{FL+6Q9#7aGy}L7pSLGgF`%e}4UEYZ}ra zkm`tIbni_`+_#(-M}>4BHYQ{hdv)<7fb?=txVTLP(=U=fhB%J5pI4qQ0>4r;$+_L! znT%P#u-;>=`vFM2bJQ>ip?)smg}rW+0sOh!zVkVJmSDl8yym?(97;wBtI?kxb4_Ya zIu98x2c7)=8eWQ!jd#c}l|44AXGYqPJ+sz2PWHTC<_qOyjWw>-GjU^3`CP%fH629t zF7VO0t3O1IX(?AxQe)Yg#pn^LW;orWYnLfOS@f?{cQrF^LtJBsvUT&Z?M%$`gub=+ zFg$Gq0cEsTM`aj+`lN-kz;7?ba}6)Y;{-{mQ!;e>(0gK-iNj^4cYm=FddVr0iEj;g z0i~&}qFyUR8S&q_4rb_qhxRMh{0F~E=h%HCcm7xO>AdM{ZV9(bg}MRGo`>>3mdCuv znQSP5mvZ`Z*S+MM+3EBV;!yYdx>K@z*N7*D4#c6#q~hCAWlXYilrf?GRrSWSpEmr6 z>v<@)aB)cboQwbU8D{QR7_H2X^?5kIb+QV$L}%k=FFm1W3TCq9ma1pN%=8jMvSffB zg;qtrJ7eW&aL?i(+meurC=1T=Qsrs@Uowf^w(<}*3&d+);K=*kR-#D`p%iZy59VD) ze>JA-AE5yQ>0Nt0eX&txkVyuRvsjW?5A}W-&VGv+=f6GL8qPJqg|pBqqxf70gs4fU+5;kuOLwPk8!+BQ zD~Z4`_eChv5=ON{%y<7aPLmOsYuO0`n{i0738HJ&*Wj$kC|bZ$CF59Oyn@Qx@dQvOR*af zY)Q<-)4G=te-)0gdqPVK%Z0CKN0Hs9@`V%|6lIF7 zg?NrBvz9J_Qz=~XBn!VgLEbMKT>6skP0Q#>!(qQ4>olGu8nB-L19VAHTymWJQj6ve z-9Y3M2g0BB+nw1OULCHgO4Jk&`pTCWGo_ruTTbP8R|MKtuBht8YEdVLQKCHA4wa%+ zTIRyQ@#KJ5Kma9{@ilH=nNjW``?4-#W6`_DgH83e$1P=@U$@~IZ>uJBmaF!Twa2l{ zNEV^4ExnFSZ!tOTaBOe7D3N%QQNz$Kg7}ukZAs+weiu3f<>MaCG1uwR1uNuX6Uok- z@6xnAnY#^8>owy`J(lonaY2QqMx5G@O4!|au1+Bax90!;0!%q@LL@QW6{INyH}NHk zi=&o59;xZ1y!0@dNEh3S)K;skE7vC@1Ug00BNc8T$p?s<8Qc8+_D^at(Y$9vgF60z#0O#ptT=Eg>N?nZBB@!^yjvu!WMU|kb7Xj{fd9DBm?^{&U}y0(%9{_HhG5k8B@ ze%0v#T5z}L`T&zUgR#5|_eQc9xdcgH%cWJ4=9$zGo>LFuq!m1w#p$nD2uphCG;)E@ ztF_I;UVf=kD#;^v4OTJoI3F{uxg47+rih!;nlvO<43&ifydqd(B0mpx2~amSMsZG+ zZK;S`0qa3+qN;hW;7Ki3BhHReuY7p~khEqBFea&}4@6{X#7NGKSZba@9&ug_hNTCM z9$dtPC1Eb!m-}$|5Hz%Uxk$*H`O07jZ4!L1|Iib9PJQC`x&tr$?U7(Uq{1+l?_C?^ zoL3uo?_=165*BWn#`Ek5w(S=A49T@R$%#9fQ;|Pi&4OtRk_6Xw*`u&(R0ky$H!N1p z_iN0EPqx>3##QaPhF6D+-nfgM5qVa}J$l>*x{Xw#<|NZ4M>5ek=l&*)$rcM_v;+0; z(;$}FghyJ;`YFppR)(=gnv0>Joab{C!<`~yQ;f6&!2$H-*jvMkSUj3D(Mv~nRITV3 zSKULKL?Kh(c9Ft2IfU6m)uF1yBG6`pHy6d)aM`Iwg|Khk>Ri-J*lk<-`1^g9Z8q=0 zdAFlx0^_me(c44GelFtK;f}|}@<=dX&&I}f;mu3X%ekPM(`zbc;_sJBHX9Y$=@bhb zGSyMFB_TXXHS6a9V{zp!Ewe+jc)B73iSrDEKI(X76QtP$c7GiV-@&$wukoOw9$vrw zo*rI0HmPE**vwQ)m1P61n;>l7vVt@-g%j)sKb&lXTg`}&b?~DK}Gi_zU z;f}6j7HhJtQ;g&Em5+6NHMbj(m(y9>%pydqHkP{?x535SrogiS3kfx(71{I9JJ^%W z$$?NvJ5;FaW~%DiPTfPN^+BVO>AaL8!(Jb}5%iigx0ZP+t>!F>Brcn&ci#QOFAebY zQv*Ex)Bw*vHNf*v4ejVX5B7F zj2u0;*(n{_E;#MJr%rbs=XOBD^Xtzg_J<;dKgL?ekf)11N!w}7X6oc#6L6cxMuqoW z#*Ychc+08Q zT(On9xRHCetQcZ?C^1eiRi>p$1d7 z^=VaCCSdKQet!QaTFX746)tQhmoKPMhS|=RZYzN3Q|`X-Mxu)ITJjUdi`t36tboztG0)0Eaj_;NEt-=x0V_*B*2TFuBEEU z1JVCMOmG+=Js0rAYPTo=c%pIZsSS0CRGy;>jH;}>PZ#D))Y>waV>XNMi_BtLaIGNz z=_64d_DHb>@I}V>6i;)JywAA1IUKjo?OP1k)ODgm9H+@I(2yN|`5B}o{x;nlzy8Z)_SWi?Bp`}tqIb|?ipwi1CZOWclGOm>+%2Evk> z_{d>-eX0W&S%)3Rau!2~ZSiuMQ>?v+<_4t|11vrf1bTjR>;9Z?ww2_F!+5U}W=BK$k5PBD{B z=(hpKQK7wd1#$qG_EPeg)GhJU%PU?5VtTkE`Wo+I8Q?{fZT_r$T|ORPMoPSqW2w@O zSKLSplePtti>|L1`VG-)?(eDT&=qY*>ViEZ)wVD8f*Aq`kC#*Sepzf8WX*{Q=1jj9vvUyxx+J{(7>bKIGB0PmmQCWke~MP>b0O62Pux8# z!7T3g?v77iUxL#ZhoZztpUd<8_@$Mde`;mtpIX`Fr&f0Psg+%RYGs#qE4%!~MGh<8 zomj_5D?9)3R)Gl}iF*H7Nu5``4SwwSjoxb$jg%NvOxug}yZr0=w8f2KQUp%>`t^FZ zm*vW?2}kB=U(-uXCdf^qyEvU(dgg?r6uc1g)l7)E_%%A!e9H1cExKFDEF~5$jUu z)ZSBT@eQMsX#c%l#u_4P@ii4-~MQbO+O8E_Xbzo-27XoM0wMSF&zy z#Dd0;SYwl(){RrC$_&u1wTxw2K-_D&zcM6%}y5S&

D;atpvO1|s$3O3Y?To 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�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

)2GA7LEW!wgD$o79M6E9CtQi{(D27 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 literal 0 HcmV?d00001 diff --git a/src/test/resources/edu/ie3/simona/model/participant/_pv/it/results2.tar.gz b/src/test/resources/edu/ie3/simona/model/participant/_pv/it/results2.tar.gz deleted file mode 100644 index 94cbb01c529e0de67d5bc3af710ee5fde6b068f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 330969 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

ikF@!2!Oe5bCN&M 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∈4e4Av+>){blbl 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�PvluvcGL>2}ddusBg?oS_X*nTf8*|ImHkt#zX??wKc5JBm71o1e zW+oPCtyd(kO2+8G^^E;Zl%KtZHB`hSX@E2=Y~vvsGH2E^Iz4%~$)y{6y8BeP$8}Q% zA0zc$5&?1rN6_A(CZh;&e(k2JecIX9vwiUtey!Da5$nv0Urs&TSlKV1`SyevEfO?C zCl@*px*^dgTuP2aNyS@#$QZ8Q2gx>m6d;J8ww@5pgOZ)Y>VT>Rt{6exh~!fK@Z#Er z%-6;#g_!|PNxI<}Z4NvU=d7ELwl&7()PSx-o1*Z_*nmpdWwiu7$84&Bvo7&H(^_WA`Z{g0_T9SgNG=zyhcIs zz%r*5NwxY+TgKD&2c%HV)G*e`aS`|}0Trtr+;9Y17PO1NzlB44TrN)h%PDK`%h!p> zg_{KqynQ~lX#3)Vp@JS1kR2=XVD}U?_%!DYtI^F2MkN4~LLS+fK2?EsM`@I&0x zGT;#*WC$d=!VbND0G7>t%{M_xeIt=j7BBN3%JHn#xIa2vlqC7F8s}2a#HPj0*7(j2 zUZu@iKqaK}*M#1|Mul?!Mb{k9(lmw2|2v?fvL}BH?eG(UGH4ixke2I~0dS+<^@t zj7NPLV<70}QI^8{N`qsc4x+hfXkUSp>681*i{*~0OtN7%C6!v6vS5(wTn7=B>X%48 zZCGOZ%35j2>DJ{KF-W?cFPT_@Cs1p25a-S^0xujS$IK+%&DMV+T|E*G3XA_&Z;j6B z?3`>f?N*XSG9GEmoRq5}AIaQJi~s&)I??P+vcwTetjn|Bg+WNuAUe-EqTiSWf2qh4 z1HNK97yh7HJ00OTY11a4W%iV_A7?h}6x8F!Oiw#EB_g%=B~j&;`w0d9SgoDI`RCBy zOBxZ8z$24NrOqUDNM7WswY#mm(E|3&w5`IE19{?^y3LV%nIqN%)aqvlDb#ri;@abT zU?*CaEjWopipu94?`5a(>qpFmJhlp-H+k%*SURO#-hoTBvb3dGJ#hTWTCF?AOC%@= zZc=*f>U+{Ay7WL>e+1*FB3&Hj)ivNDU|Gt;Wmm*LV=cl4=HK6H7Xw4+bLJWYBU5w| zF~v?1w6`(%lMn$&X~Nq)g&LjlOb7)s3KmA(Zqg8#AZiDhE*&VhV(Y{BLxk_vQ%djp z$a=;&G%Qi^G@6i`4<7*a>ATtLSPj@r_fCp&kS4Tj_n?TVHp@REq)%CL4AspKR9P@n zq(A4o#I)@(nlQ3JnSP%Kj)I`rizfJfEfjI^F_kSe*354Zq3IShJaC&4We)8;mfK$rvgR>sd*GGDqO7_YA z$G45-rfI zSf^0+XVl)V1IlzM-k7r$!ft$bju?fvY70e}P$B3kpt*%=*Y=3P&(f)0)AcwfF+~+p zc^9Iq8E0@Ld(dqogJRo!7{OZhKAq0M{MjO^-v;JSdjx%lfL<3cwd|1p-y!EMo~qym zpWu01zD{d)qm9v#*x3o;iP^SA8PtVy>fA-Bb8r$^c5@#M*kqxlx^}ID4++z+E-kP8 zdAsJ^fe9xxwDV_o9IKs*q(8Q_A0>RwygztiXO;+!j0R&&_yNPie~A)x z3b1gl8AVOn%aPs)h<>cPu{wgkSAIKra!P2o6ZL3E~uYpncr5*IbWn{F}OtekynI z7U)IthXq}o^)3)6EjchXzIoP+g_8L$# zu;wB`0rFGP5UBW35G8GD67aI&%=0}Z??q9dP=f3ibj37z>6zP9$q#;lvqTe2BI(~B zIzCe16Da2eLKbL!-EWwtUuA)e5FR=iZ?PGPFZFM+8|>!4C%N5EVA*1rO3sL;)J59} z4>3NKeo2s{AR+NzKG1;L3g`r@qf67$$WHx1&Lf9RVZFNoV#-i4VDYC|eqbU)h8dqz z@%fRjWDF^{0$g2k7q|kecEN*^4j4)4N{&!4w#CcK6(KdoNYot`pkLP9_Mk&R+OZ8F zn%>N(>#mwUJE!Bqx_ylCfyQ;)Za(QV-);tcYZt#uF&U3W8uaAODt1iBrvZFC@-XOHD&X7rQ@Ms}P+^nT$K%Zd5%2Dx7JW z?Gv7+;9}%?eOE)5I8#k6`z8w*6=xN7=7C7i8JJWO&;qj3CwTEv#*M72&ImhwAB~rW z&mPcumb>weN1-htomX_32hu!exaES~rNZ&%Qs=XuFzk|t;-9;Ya=`i*EJr*1@}wXo z(QucWjMMoikO`nH1kUJ)_A6C%jyAC1HqtL#SWaMOz)!-WFs?Lk%a~Ut8sTCWkVd?$ zZtOASTkE2uS55MKAj|a-97Eg7EY=D4r+?Xm76}fT<@z)v`N2e`74vFM$CjaBhr zYstGN3B2X^M@F($F#M7=h!&1A3+T#HlBSB*&?eqa;8fyV0*l+aS;~)GG>x`xzuRE& zFR(LMdS<&IH!4OcMT6-QLSCix;>gyJTr5vBiU+Re*yjP&aC9u|cvs*M@lzuTvyh*i z?B8UDz62i2Dq$>&wa#ssWCD@BAjj(jIO@k5&G0^Wq%?sWF?Wp{9ylBmqM`OjOK(7} z0Uyp@eBB5glmj_V&dlHxFyTs;csC*r97S4${CXm*2_7f#^@o(lPWLKge$k|ju=4xc zea1(%RJDseo z7#-U-zqR)nsdqLQY?D+l)G@l6+mSVRGD6WQXmUw-+{S zb^=RP4*;-O9T2}xdA3M{OvA*r(W98cy=Xu^j?t=ag)%`kyXq3HyY)gPkXvvo*h1fq zXghJuj6Muk3;~^X`-Mh0B0x4ljdnpo@;EjyE7 zsF@wI2`11vr+`_q)D3I|>jCpz4Z^_zV3k?LO)+!KQn)WYhhrb}j}W3<07W{EKbs4H zOgSubSp{Ljm7v4pHaFrlJR+x)UVcyBfi?#PmKu{>^!`3m>Ce^3hlJwYp=7^}iFz!$}L?MQ{K zV(t&Mge`^T7AfkY5TLd*zg*PYk2&{YJF)lUHzC)Ou^i;twxkyZT#AfT?((D6lK4xt z!d&bp483qV7!dSYY~+`>^bJhmQ4Wz2hyQ!kY+nl-c~ZKMpKR+;31gS|N*m`RKSY_d zDmJ(Y&+*hCX2cR2wz<{vY&wPiwh8@XXJ0&BuJ62ZXdXWH79Y+;!Ho!>Jvwh7?uykC zOcPqbS_2Z1N0G$$v47CFR!*Nru+$M~$}t{r+`Br|5OsI$5b*==n^Fds%l=wB30M-N zHEL;3tq!?TMn6~ZJBnLA|4(XvQ?a~~E;*coPGoL2%Xx>OL(RVtez0AoACfX!s+u-- zel_>on&cB^3a7~&*Hp!p5vN&BYl6>F$yI&!WQ{JyJTaCRdJ5jUMR^-FJTBs-rSKMa z&4}ch}T{DE`J%QuI4ku zyiij!g2$dEXz1xQ;}3Bj!clXg+l8C23yUptd8ZozJ!rWzeoT0GaY@DvsgvQYFs zrNX2q(FUmRQeU^V6t9Jo8e{H1V_A-ZrLNjI5u>9;zO-DF$=UZ6RA1^UeZ|NID4f4- z`;h%>Yz14T;anIVGrS+Kl3^E*e1@J<=|pt3Sb)C}2kQuupmh@Y1CH~?)G$H)OUrpp zc}<=v<6+z>2h2YAQ|+Gw_}+knZ2qUV!pL}1L;?E}?d*49Uv!0(eu3?=nz3`p3(ks8 zy|EyYxcoXEvSKZ)9YQcN!zt8AjQ5l@LW$Om>tV^!6;yzpQ1S&jva{a^G)>j+wXqa{ zgQj0KpvH^b9!KmcMze1zpG-=<37^mKDjw+H*afr9Eow@2DrWQ@k~{}fx8Jug@2^lX zqN2K6jX?_362g)d@Z4iESPUdfv}Q8Zs-KyBou;w}zQuByYZfbF?~O zKYhYZ7M5)XOX-L-o&X?Cpucx(OLwGpJqz(9J9AO-*F~LIA&|JC zTAS?crDKE$8T+xGoxlW>% z@6Xra)Y#(!j{22CU{VxJ4w&kL^(i>kLWi7v&~4$2a`B?b*}rPr)7t+25Ip)ILRU6Z z|7jZq?=`crFJ_R?s+XbulBjhTtU|c)Y1TUxBhUqhU!{(*Oo{qc5rsxqh!^;oWyvHy zcl#l^Muy-ZeD$V?>_rViO{1`J?8S`&h=a`iyD|RlWq{~u_|fNoN9-Tskwwn6aay<4 zoocdXQ@80v$Yqs)_$>z`1;1FM_$@9YK7WJGz3}WD{OP*8c#;5iwtuxDW=`ptn-gqP28Kl;6sE$ z1tt8LNv;N(G<{owPxW6#8hd^%+lkW3XWuz{{ze#u^E#oFcS!SLLzgB!+>}a{6;L+t zr%_M&n8)kBIL=M?c^0od)p=zS)X5p5#r04EM&(fBoN%w|VEN$eM3k!Mr3&_d4NrQT zdNw|6b(o$Ng5PCf^7+{4P(;u)BsozHcN)|~!ck!7zIEsrA*a3=%Z9j5Ie5 zVJ=%O;pK=aT{2QBBueQ{RG4`HHr}OE-zf5<`SsJwiMV6=!anB|!K%TJ5HOL@L|$Ud z84sXS4r`xim@ZW44?fzGv70D_P|hJ})!k||p1E^igiad%zJ-0c{SOi} z{BU1-qB#Y%>2Rt)XEH9k*)aMt5bQ`Lw||45>t=Cukz}o>HQC{7GzaWER5Hw1VpcE{ za9>;09mov|XBH+Jo_Vut4P~0Ln*RZnI7Qv;0Yr1mu5A^6hK^e)-U0HT;;?GZ>?U_& z)=$g*Znft64Zg$V$`vNz?T5$~z{?N|`pE-6Yj=O%($ze2QBzUTyPZ@XeRz;D{KjJ* zP>I9hgS@i(a>3GbAATWTHOtuBtH@aoG_pf~f#DE{7MJn}qbt0)qZ~jW`71Q&(-sQ$ z_Cgop=M(fm%bXA{rr8|uAqP(bGRSH$!ohO=K6Z!3hv+Wz-u^=KWd6CDG^?M%rqWxh zlTbKx{NQZ#(IL9CwTLa}{##k(3jQ()*f1}t6 z)YLjOQp13_X%=Xd@6X*Svsz*#eYoc1(ns(Yl>Ul%D)#@Br@;TEmz_-nOCkOU59AG? z#Hd(OYlb8T?Sv>9_=+T0&1s%RvN?R~-EF@A+=yCFv(&A?m-*)~Zk8SRTnUSjo`o$G zw~0GzHP>!+6~zsK1b!6kC_&OnWcN=-GYPgtWX{#8$|R>z=OIh>C{oN98+ja+%B7J$ zq|B=R@8s(nI46(G=mN7>b_KrGJ$csCtM~Si4A{=2{qE6G@N`upDdL8%Sz)?ml_h7e zH|Ko^S3`yTGK{8OR7us7IdjQu$oIJRv^gxm-sQF@{(;#y-N}6q$4a) zPusGn3hD5jxpxmO*4;5dp({4@ian2UL)A>_!L~2KR-{6gTQ*wXLD~nWAk82IaMGpz zTSMbP;QzVib^C5n++(>@nP2(SWq9AiiKSUYlpWQe6j`t9}s z_l9>`Jgc>QE+Qylt;#~>Ai-G{At(Eue8S<6A7K}=!(IIzF5NdPACDr`*t?3imC>0< zr@02Qe!7W&vsBP{YBsei3QfX1ic<^(1g~ErMv^%-Q7+J!nYJA^j zQPtGsk(0h4-Aj#Z5xXx`zM5lKx0r zNKky-tOzq*_P%OVk89@F3RPnOBhet|Hv;J`NW}GJG}qSe1$Xzj1Q>Vbk;E_LqlJ5q z$D1GCx(eNc*ZjWydaT}WxL#525D0pS1q` z-N))^?EgjwsIA-z7{yVwM!yKoDMvk1a5J9K97br9h3$KvV;MsJO?{W;BK*?22D2^D z{6fF{B2$dcm3#1{@6q01G{ijWhA|{q| z2Gmwyiq#0<13N|0JgM35?iCl$#^>WJGru%yu>yK&T)R;ybQ8K%|$Zgvwhfs=ymLOA z!UD##^Y40N82an&*)0DI^E;-kNI^K`9V(=feCC%K1@G@?Od=^qlYE_zf63mY-w@7~ zIL_a}e8CK6D^5Dr%l`}|SIY)M16SB6$Sdq(6KqcQfl;uAW$nb;^z79FMP&^mpnngR zui|Rbnp%temkvXagfYJO|9tj>vdMj^WgNhPdz;8T0$7weCkS}*q1X6-_|sXmv%>p|BB;g+UhqUI z9>+^?oD$yT-cMrr1KTOXJ)RECzE|*aiZL@%!p0`8+?%g*;t&c{uQ1XqOIJmB4iLJT zVNmLVaPmTpB)a1=judO;S?)g3I_r13*Qn@i@LiTY3y_u;uGU2`0J)9I-Lu*l97KdP z#k4V}e!m#>Z|=B&{ESHqNIhTzCecCDAJC3e^O9RS{5ZV%-T~Tc`~%n4Br~f4;bEn* zt{pt625N$arAWVy9Ov}wErZgH#0{woh!}g)&2)T%x(Dy}uz!)(U%&fAg1{prYP|Du zgD{iyf1|JdJJ;G9-9n~@dcF``nnyN&Qn+)PE(h1QS_s!gT5kjwX;nb?KUlT#jAjqE zkFGF|Hxc)2R)UyX7z(X_4>J!c#6Mf+O?9|rXS?q)+I*gE&5Cbvp$~LD?|9^^x|PoO zjl(Qyh5zaCE9`!&C;HW%$uXB#nEaHtD)G$F&VPus3Ia~{^E*5L@ zwe&7oVJr-l@fYGoJli{wE{iM6nr`Y2UjD1~*f`TWi@TM%xHfqVF?*p4a+HkKQDC^g zV~oLX8kr)zDZn^)R2o@u0=a&mrc(>yE=a_L$t9$v)wbhODjC)7WhPG5`Yx>vr)g}j z#l;m>wbJP~j76+ua_xxs`$spJSK1hhTBIf8C`9{86-BDy2SjZ_!LfGu^p@&`>hM(K zC$Yw)3~hZb5jpQc1z0EtJmq}KWFfxu1_NvyK(YeJOi2#uAqzS7zU-lf9LC;zIyU*6 zPVvW}9zex|b@2F@X7KYI2>vcUCwWRNJ1(hw#iu;2_;)xssQNU+U@@~YB__0O-M0U9 z`{>AspQqDJ2AtZtCOCTP#P#p}9p%O(8w)1}L9V1YeKz_TmQk1XY-JHbBH3zl5!tIL zl#>ax``C(0b5uQ23GFun;B9!*Xf_;oH9YNgUNLjOgl6K{d=bi7HWY)zj8Q*eU3snk z{MQ&DoX{cV2zIAQbxQteI}dI>6pAiU@J!ZJD!th9gZNk$xTFf9Tgx+}ke&}s1#0yP zbWVkg-1n?kgVD{btKg0fbv+eRH>c*`2u1Nu8Txs2D6MS2*9H*t!>&iZ)Ff-?RFi%> z?gn*!?~g?j(-D8E-;wUH&yDGXOOI)`iFmz-uMG?l3AMzZ>8m+FB0$?mskytVw)zO8 zAp5NQD7-;M^e0r@#~%(U$*>rX`iBK{n}gt!OIpA3?lW>Y#>gXT-1u@6H=U&85cK~a zVdkosU>iFXMdS;d63se!boNMsHeR3tV0ltui>pzKmv58^rl?-RF3a{fyb?WSUy zm96f}5=`*f6tXlBm2lM{dg!D_cbzis&ctAy7oY`PvVe0f1{jR`O3_eY-Zeyn$ufBe zab4@oi=x`~!3d%nOq|L5NmcnUXpNz4TAC$XWt$US?UY@B53aB{) z3gN5#-c8?zU`h(TQ_GY}rydXrL%5u9iKasYr9AXBK#in|+V3?E3(vXy)oaL950Pgd zT)bl9w8cuOV*V3~+6(tf&8UQH7>fPbt4A9~H5rbUysY7kN^v$!Fi)dNx5N!eBi z@;52CWRQ~RiDwO+YF0?%b5K{viXdn(u>KaUU$v;n((*HQKG$qE=Nya;BW$9d%>=cd zV}k{C^cjEN;18@^m=$|pTv<%3MfRAI+xShaSbwog1V0!)u5dbrxpX?;Vp!wcd(NS3 zU4_#ddN=2>^&$jIQEYPTBG_gv1=2q1VT!d~`S>Qj@7yxu5pEx@8A$h@lf9ECJrY@G znlR6AUm$FP>{b@^jdvh&zB8wV3RAR>Lrd*)l?5}DIt=mY=v5HSkS-Y#2LNK z6xQ__2fYa|q{t#4mMh^|u(;3d!5FVo0DV)4BrthBu3;c-imy~VL3AVuWS|CK-Sqm4 zN6$5jb07ONgPdt~P?l2I{ z{&$24@;st>(PnozZLxykHcYoS^3t7`^X(}3gc(ZtOP^*j>%Ug?p;zca_!nar?y#ugeDg0q?U?#Bpc zEkpmk`*y5of}2-^t!gGW(+`V@0dlt0X&Y2hZeEw^oAT7Yq1?ce{~euP#ffU zD{_V;bL~*wFi;B*Fc{YE7lTr!hp`j0v-oTnSK$G6qIZiN%Cm-+ECHfN1-3s@bbcGn zE@W;t@5KlXt=|*b`3Xj?C5IWrkdAojVUq9fO2>A6uO`{f^Nf{n*zBb)mlyhC$hx1h zFxXu|d*Oo@`2g#0`WqrW=-b)zkBus*PIS?ImY;uo#pkUm2*EpT!n9HD z5N(VeLE67Xi{M?pMnkT~$fr>Xe`JG+HxP;I=xMuP>bOeHsDRRoz*+#XE^Sa7veVCn z^VPg*K2l9*Gu4}8*motB9^*{;3EGFi7a_lH?|^iO$M0I_q!$8(d`K zGZbqW+*IOaPlo&j#D9faUZyCki-o$$CX2;f0ZqG&@+-2H1 z!PB?f?-4eQ-SZuY6Ye?ik9z`~zVT59RCTdifOgDI>jU&4Or-Uf(74A42V^VrtRbp~ zGVfQ+4wOvnTyV;i+|AA64O`nx77gRrq{#S)@d453ze6g7oxc7%5CEO1n?|Iu55nr3 z^{0Rr_7*p`L`dL3sZQi`Xa8w~Luf7}(jK#8tvD*?Lf>IaS+(H#>>ul->p9SSws zBZ!5qtvjUPYJ>SmIkTjJA0!RX!@-G3lDzSvi17)?NSsxkQ!K`NYK(;>W!A!dZzZTO zX@s}(E+nTy)L5>1`LD{MVUcinH8vgSlK^_h=RQg`F#_=`BDJ2ujY04x90VRgw+IH7 zcv(B?;4G>xi=rd0)cq|viqsNzm~7@d6i`5rpT&BP0;A`wu&p=&+LmmbN8|^aE(;5$ zj_M5L;cpc>ej_=eJvqb$dc$Ck*~ARv(*{OSQR5eo)&P1F1qF5A-pywe6x6-HdmJ2< zgGNR#FDH{TDl-KF4xn%*JDLuq4`SnamM@3D?mDyMW;k0S{+hrwA#dSv3go&QJP!oDh}ICH#bI zZQQI0TIu|te9^i>UwmbSHlZyy4=|@mCBIkmk9;EqH%o4V&j9{@0n@V)7jAO25c`Qk@uYHHPgXj8sBHJiC) z%!uPsyl+eraYt%k8)8e8lbuy*=_KdI1m?`PX!@6cbeTV7i;}+4eYOB|`m%bGyOFM#s||Jf2&TUhD0>7}74ndNIpe7n+z0mGJO3JRHqZ z@9Lpl;Yk9?i9LUHrzD`C6nS&Xur4r!O~A%+ylh)dta%sVRG@=a!VIKVCuAUxuacXX z;XA@$q@__H6k9*g^_nS^2N{?8lb7*0r!}}c?qcy^Q|d-twSI0gx=0>6kB~tbHC3Rk zuRgQiVaK7H56%rsBTe-ZSb+uaP|i=ib0yf$KD6Z0Hok;{Ht$_#e3G1~sh`=z)gS4u+wwwfyO9Ug4QVgAdlFu?bv)R7QZ-^&U z$DHs-_X_T-Z;Zc(c8+W6Y*e^XG7ufaWEAxEZTBqPOK2SO4v)O;tR%JD)zze~UZd~m z1xRD|IU=t}0r}BWT}J^wNitTLAWwRN8aDzK!A>CJ_^LbO3Z1}C*S7(xKQT*rp=11p z%|#eh-_(Wy2)q9RyHrO?`%4TTgU34@MRe!*mVK3|8gEZwt|KUjGzRHC>(h_5$)yRS zsx&ugbTaksBNi8$(+QF7uiK(Vs__ zPi;%G;)bLw{)%)W7WugDCvv-zRyd^|Mmowz_X=yb;iaSPXLkzztlR3aNH`Z*P*1uZ>bB0=QtbIjktCE8--3UJ@#uBI0hqJJTm+S$IP0OK zmVEFNdf5?~ax~*E_2N-AT@sR_dhBX64D_#{nzdNy zL-hbWr!ap_j;X!Il&zSQpf_|O*JX?btZV6D37czVr1s!0WXCNwd5q7L=GC=6U(JK_WV~(U_KkTj z%aosbC}xwXC*G|W%)lybBQOX%BpTuhBn?0h42lY>Z#02~^j%AGzZzF~CN#6OawiK9-%8IbpjA z{;YlO7&*1h_Chko+!EgBL-D7*bUShFkEHexasfr&9td=$^I<3WZ(N>&EV1S)h-&xy zo7>t#KRYtb`mJNS=t$B-xRTcJBlrD&!<7>EdJpP(_5OI`a{5XrV$H7~dovuiwQAB0 zM`iJyQ^%4W(<|g1bCgyQCi*M%o$Z$$8*DxfKsd$?d_N~XixY)m`}tByqUo8AW)A({ zFb4le(}qjEiNP$(L{YNxywd2~W^8d!gkATSFCVcqUOv-?*}9aw+-K)kRcLE>AiV2w2KuLafY49h%Kp0ZcMmHN4+)AI zt-hQL0#Lt1G7-)LN9sMh>z`W_pZ=5GQ`Ntz^WPst%P)*VQn%YCM>RWdZoS37)qhY4rP`Dd5+4xI9yw#GEYkz@^T*G6tqz1Kc%nH_(BgFl4ktC=CM3MmCp`^ z+h}&r!u*?_K@YfrHZCM9Jfdqw`q;m-bq8=4MPpiumCE_!X*&ES$IzH64AHH-m}+gU zD=h_sxteCB_TRkhOUfgShgmohJrghPA|gj^?tDz*Vk6q8N8&I|*bnzKLrl z|M_8@enPb?#uZA4DZGCtl%}R&X~%E#as=rhB*GncszWKiM-tW)^@8rFBVzhlSVmgRgf5P-UvU$Bb z4+6I=FdfUTmB?$wrgzkTV6u{fP=n+`N4#IyCUe{DL)J0Ydx5VNbbmUrm4>Z=F#DMX z-x&1{@0Y2yo={=-;W{-8==mYnchzrdy@`*>)jIrfZ8qD8!~`Z|LCquqv;A=72|Zmu z4j1LPY|{1Ydh)$ZqK5x5Pb3UW>eDTD@#)T*C8S7LnxI4rJo@-osR4jIHb|zyXzsk- zpD&(~du3bItd`b9e1_WjQ)2?ZR&shJY*bly z1iZEQ>9*oHR{qvYWs75fMBG7cv{3`mfKDAJ4hECEeb}O0X+??TFLnTU$xi)EAUSIw zgl`^d&fC#hDEm=%TYDNAH$a*^UbX*=d_H&~x0VEP<1Z^l2fUORJwNZ-11ot*n!iaP zQLIt3+578r^Hl6{+nirBsVfouwP0UjPF_O;+BC~GT+Lv6*T)M~Ft*_pV-U8X-^fhZ zS>Q-3@I}w1r@kFaAhV(P36!>NI2gC7v%c&~-_BwteZ~05Xi#Bxp-k3-2fpG*-PtT^KM6dB0LJyppxH}Evl;x1ME8JfPDMdOw!UirX zZUKFS{oOuR!_u((^h?{L;aHN|3Mp|hapNbYdYRmJU1ln%BnVuYZXf3~cbCAkUQJMX zl1Ga45vc0W8QpF0?yPa?Ilx71CwOo0JTomLf&-BIx{cozgBEl0b zj5`?$$&E59lVWyRIojbao^%~@1)0ks@mfmuHSYltcX9D!#^nJ{PhnicY2zv0x5~}+ zJ$C_wKXk4NEvcwn1C$=NimUp{p_5pz#lnfMj#Idev^s9IDC_=r=={|rWJfEF7n zP_p_dsheE_vL+?X4;>w1{IS;f(*9c4S}O-hyqI_!?^l*q)pVh%Pxiid2bk-s3@4BmQxae}Yp-h8r`l6x!nKgAV2ClSp$=#p#!fLWHlR&exAsECPr9V5k1X|cp*Uq z$gNwY)#7@B<(FkARxA3-xo-&hHNZmzcyc(@plDhXG$O3}uig11Z$_x({_A~ztXrRX z*bhaH=fWBv2gQzWVRuxdeiQgL4(W}9T&~gx(JCaVj{=SqUO7B#JLbw?J_MaXR`{TMFFsh?Cdv@mj z?=H@M6O{CGQEvrD1|1tbV=@!Z>h&w@(BM7{}rP@HGwc=s90bC?=`{TX99}armj8?{7*VC#(ApNeedqMFZPdo;{)KcN=95} zD7tXm*URz@yppv`ui5Em9h6f*jg3|?D77}wc0cs6$(!GXHV@s+ZcwksUuh7g&jHpl+b&>4V2x5U;QUeSYys zIV3~(V>=INz7ItvyD=8C(P#!@ja(?k;wPL(8$c3g&iGJf!^|h-*D%q^4tS zN72o%wJ67e@{14<@Ml(!nTB>szM(m*^3T%p9bkc>48k5@S?9-4hqeb=A=RBCz|*)5 zpEkk*d7!Dm$Smwc#`CZeY)Yybl$dc4uEy16IeJF|JL{Z?1*HOcBV;x36WS*KmXK%H zTR-jS9xaVZ6c0Tmer^?J?DyOTkcu2TahXG;NN8)xYeJW?X3Lz4Lshc<-bedcwL+d} zHUP#b9uz+5I{dw!KuuVt<=c(n@#dI$-(2>P^OWAu-l1lSyl!?Kf)!O zOy&#(@b8CmVHLPXq<9mv=-txFTO9P4Uc5zBS906T7is)hm$ZM}yMm#oHR>emLA#7j zgaD*+6@5=*A*7vG(!CWSCL%e=7yNDzn|MqcY-_OS4+374t zmfoP+-VK!jIRSTw6JKN6p(r8{z*ghGOSy>D#A^v zBcq$U_0kmxD5x4pz)c;x`co;hI``}`|2Csmi7jHUgwuVkyHi@&DTQ)^-4=F=!4JZP z{`fjVmEu0|E$*)XON!(b6#_x`7 zu8oXXH5dX^3*u2mKBO{y`cpQPQ8Z~U+sJlaH^tYMxP()8Ja%*$W2JovgekX5Zv5Jv zXD9r-9D(vOQM*HuiI5}I`T%#dIyA-j3vbi|T;-abFSNuIhkNqCIn6c0LU^Ts2e{~g zkl3!kS}bpU+}53@R_(*gDuwLU18uq-T6J7-cISJo=Aktq$m&L4#{GK=^+C zaEG4Qik(-o?Lsxqk(hM|?!mPC-3Oryf9Q`R1#e>9R3zJPpoZVAIuDl$q!$hT*(HX3 z0%l^|51wE56^clOllNj2u85+hn^;B8x7v>DF-rI{2JTc5w$Zj#b7~8pvBVG(qZ94= zgqcau@*D4R(WM4MBIYG!*f!@uQAx3D8vuCsY$A8M3Z-(E45A=#l6CDh;Jo@$bBD=d zSA|bX z4Dk}?L#BvHGE)E0oh$n2V}t%MLEO%>_QUeu6WmLAT3$5AYG7T4_^@gk0mnNuM!OR) zEWoShQYBH@4%IVRDIirZ>2SnV(%}*KV_v?y@)`!R=%l-_JE$Uvqt3>3Ny^d88(LBN zhp5(+sS=f4b~tImu}0{aAFganTK~T8{|Mq%n5)qADp~Q^vV2TG6D2 zD2^YFDY~gl4z2tZGCW_(Hkhx(x5I8hI)V)qs&}jg^qB+}q{7AHC(>y_c|#l^_Zg`* zn!vtH&U{F>KGRxE0igb~rVlHh<7=OGNcJoQX(ooC9ydhr67wZoTC>ub+?gSYzSl*; zPlaUyE^A{cj6(P?(q`bvE&e10TVJ6?kt{e34&26|^Dt-q#LHX3ap#g~zd^CU9m80e3emWhFb2h;l?5L@o>u7<0i&&!OF zA>7RFLHuLAz_xH(v<-41Hw{r_^am??B_3q{`^gF9%OAOjs;!EI*Ypdu0>7G;D{hOb z!Xy4hLS?SqvLpOd(p){RMKU^HW&7dmgaIO1K1IrS3QBIkm39Y^5ffpG^PEb%&V{`X zPoJ6t5N-I?Zg-{7r+^e*;09@@x`u|Bn@Qp@k;Z<+=_rEZa->IN8BhY2{0*u){#uUe z_2|><+HsQGo_<_Te%zoa(_9C+b`EJ9z2_Fx`W4j$cR-2l{YU~7dR7+-1!edTW^;?) zzhGxS#rJAqukmJ~pl58<3c-nNh(lJA59Pv!DX3rF{ zC7l;vq3whR3?TEFpP6k0V%oA=uV5s7oDb><@h`B@iR>GEK}tYK2E~exg4%IpKAHUf5acl-vhiadExg`u){R7~%R6a9HcLeqMMTp zL2JXm^&qLRTFp}p-JcLix_pINggojqfg)Xu+}|ZU=jzxq4Hr&N| z>1lkV1_IXL9+_AR zjm{VSaHff|4Ih$7ol`-)*}}JkNMjdgMyB8Mwo+z7_B+e-3HAzDztp2Z7`l%$!2cfr zF$X(Ytx*35LsrC@KoA8zc^XbOC?12@=|eqJg*5-IY;})~+|uPke+utCOF}4!T<)Fy zX(VYg{vtUIZP%4`b~QGX&rcG`J%x>Wt2IlCN@~}q#+`96M(}&Q^T7uL#2(?ii+|m` z63gI*KN+gJ9h1qOumG#p!Z3wWG9%t~pp6+${^=qdZ8mSL%^{GRD%tbb1?Y&T9%gTe zh8u^c>HrbGFj~ifPfTmT0s*N_eB>Q(wVZEwRaWSX=}(&;7V1n)ZHugrOxKP8gf@}- zn$8y<#DEWw;<4idonMNXos>_$<+oNCa$-WQFacJrU+8T0>s?e2Od%HZUmqqoESU+P zN-CL*nYpEDn`CvtC6-w#fdXh*&LkR>(5O{ecrPiG(phYg!J7H*$E%2>jfKG1>II+?U-?X52&+#>wK=UY`O;7?S;<3FH@YeN zp-VJ?Pv`zDn$1kixM5`s-P%rodqzP`8Pg>51blTfbxmGi`|DvpCf;=gmzL8LS7Q&Z z7$JN^FFm0SNB`959>$x?yEZeLC4aNb-5r79SC zd{OH*9pr9=hlx+Jjb1Q1hjRWY?{w>?l|*~2cidmgfaqonOusJ|wn!NE*lH|{osTS@ zGUSxd;pnYp-%=`O+hp4Yuzs#&W>L96;MdCxW&Gx4Zuhs(t#om0{W+8MC@NH?puqA)An|% zitpnbc=l@r_O`m6ntFcvQuk`h%%7}}J3}u~tH{;2W9w!Lfk3i6c&Ke^bQ=NUq9xY} zOb`))8f5!B_u+f$S6D3(;Cknf=9gs`p$7_NXoFI49-i#hg6k4}<>{L}0!D;~z*Bj9 z%kYg^7sP|8C7Da<{7|abQb?p6$X8q%wUoqu?*!A@4%DgTcfovVbw8C_*o`fjAz$MG zH&SgbdW5E=lK1Rr1j~B&#wECRt(M;vYtr>(K)PM!p+Uqr7pXmQlWe_S=e7yu^c;*ya=X-{E363Mf{$vnH9_va06qfz)?MQTEdz-r3@_WF)I>h= zG476ojR-MbvVQ|R{PtNU0tIOmm$Ucb8pbF|zi$m5Hx3G3G+=G1b0-vjc%d1rssWf_ z5XYNNV9x)G(@uwq^hBJflYL@Wgk#GfNiw^0n^TEZq(D(KSmL@{R9%4oK4w8=Db2w{ z6YNZ2cLVHP?7`gmnw%o*{nGYY!n#eqS2nd1HSA zSrPSi!g{_-Fgtf&F8u)tm>@$g3K!?6ErZDIQiNyiT@UMoL|=_uf?m}Jy&i5TtY#oh z|4}4`ll_c)@UYHeKu%9t^fS@p&(h=`fl+AwMUjZua86rqE(Onpb=%NmZ*3fds>DLm z$~X3)cd!5oMayNy5WbV^+@CGD`}7+%(9LPDuT&sSz&Fa~bG}ZzL37>pi|5+O77!VQ zNz%gt186LQVYaB2@PWcX;n@n%N~Ch;U$QUz>tF&9BJ&TR#Tn(WMWcAvF(CEh1S@RL z=JJ&<}VCR zZ$&_7u&xDbPJGf7FgnKaHc)h?s$P&XxS*f}d~|Y4ld+?iKce0+YXx){kU2dDq(zI_9i0?%9hp%Sf> zNG#v|iKF$B>bvp!k}iP2h}A-~G+obpx(Xq8YG3aABAzZ6}{k`J*UNj7qZoV>x!^O|A-0@8iQQa9R~&pNWK)5JeOT^#gQM#~zOm;w#y9iO*j`@wPi? zELyAxwv6VPr8appD9P<{%B`5yMWey-?=K=EB%hs~)Ro*!_DdSnEZS@y0XSgNLs-1AiX*#I$|+09S#AmZDIqu%zFQq(@eOIUEm zt0puKvdUsJQ`3;~JnWCd<2Q*XeYqme=5N%zwvKer0%!yD6Od3TW)ph_NGj=D#~I@< zK=n8}370%!p2D23inAC5y!$hlxoS8ZJnT?NZ2X`@9A74P)`)92=nsZ!KQvMfN@|UM z0-x+JJe#k!l8i)N72oaA@5|PaWivkWmPbEmus$rL;h-qxRq`YX1uDprlEy6F;BLh0 zbb$UX=7W!P&J4S`)&tCU^*S`d9v;iThO{A{m0hK;R9YSYj5^={J#1_vm==n(O`Af? z`i)2*{$olKL&93^S~#4#E>aAY2xPQI__oixxz=!=l8xlbI6XSrzYBT7x(tQd)PJh^~egVPtUUEq{_<*^^tfXJWB`n!W$Wn&f$Tf?;kl%UGS;0xO-~meTy6 z3#C%8hyEcQ4$s?g3ACnq9O??&_M+A^G%fhZ!+(%%1(qMWdT#*u1^R7qBwuT8Zp+S zxXpOjUOA)>m-uo$_L*Tr!^#*fVID5g9a=j)0G|axQ9K+QBsOcs#7x7LH=o%b-)Y*_ zDIvxU5?yejiQ0EHov@9kPnf}dW-du^OE zx|wcIKq%uObY@64eydlz=3aEjDZ;lUE}WAzb{{o+`-BTdgV~-H!hkP|57C%l_n3kw zi;(xa{;Uw1+>{<|!Gr)X5t2+KwI9L|f zNNcOaqb`l$#PVZ*f`&tJnwBgGT*S`zx7g)<|8q5saS}N%ShPFTttBQM`b=&v$Rhg)~|xr!x9i;E2YdBE|6pm2=M8gXtA>)M+9;S@2{#mPAj&PFm5oS z{~#^M9B=(JlFmypRmvSL`kS|$EV)vB%ni_|v-19l4udv&*2D9HH^iHWw?Vg`bg$^n zyiqkQ>toj~gXEXw=~O!2T}mEeddIP0LEed~DL4M97yF`tuWsOt(?S60G$3;kPxFyV zS7wGwO3qEKo|OZ%bt+OCgIkaPoaPLVY#{v$N`yz7NSzedf#V6c8II<_{~MdK-85{0 zmV7QdMfrlMVA#T4$cf&t{8QQj;sX(Xl?3gMu82kW8&$uaJ~W2UnlI-?B%H2rKoGHB zf^!7}f03NuOQE>(9PHdvEv~l_5=8D)h+U->Ql0=OfPXQF0g)4I%}rW`!fgW3%3=vH>!d4-3|vy z{VWT9Urod}fO-pbkUB~c_8s5#8%WKV`G1VPV~lRywk=$?ZQHh8waTtqW!tuG+gznp zwr$(C?XTXw&zIbNPj+&X`Qz!c{dtnn(qhaXuMjpO@IS zyQ&OPH3@GCbS@HcFRFYw)@(UQpmyhhq1*{3;ap9+Q!7Dy9G%uR4$f6UPoJK@nQ=l5+z@zgMK&lQtTGw+Z1NfB-1M>wLuR_AYOxA zpM8#XmTOE_ISLqo1lq3&5ZlQ<*c`*kMMe^NJid7Lf7eSDOErJW1+^=;4j$@KLXm1l(j7 zvoY}b7C#M1wmWs>7ODvuw&ReJ%fzrLzcYw7liZtQ{$6fFE(2pA5mm;3KehV8 z^8h+kID9?%h%wGA?;rm@eqgA3;qgq)>jC33vHBj?ui6ExhEg|hY2`2OLRG=3 znK`!zRS37Fz>?FvDa0htQ0fji3N|v>0{D*1dhO@^?y?VRNEYC%h(2j?LhM1G9@hs8 z@u&2}*7+EEZOQ$eoH&n25I;Kv>qX;Ofr(NpDDQc_gri#B#N6a}+fxDYeU)g9r_o7)*l_GRIZPC_Q5 zkvW@$Y=s(as?>2$43);?I?b3{>9xxJF1tLZ4UfvH`X&^&9w8 zf`f0i(||w#HQcy4ij4|<=*~R_TUBU+I{ySRz3H$48XA@dm1&Q2iFZ2~wMDmFSKaB)7DQX79x|o53nFmacCG!~w2Bj~gu?tNO6G?;gj&k$`fW!KtuZ}c?;k@9&j&lbs>b@c_inPN+F+tDrqDH*` z+k{_Rm%wo-V1Y5nItX1>k!7H#RrRo49oy*ZP;8Jd3mzE1cotG{?1Yr%rwwEazGAIn zrYK_1zhLw3UO)J(h;!w45$PRvqymULNWtPCH>tENsM&67WOy!wEE%L8 zq$6h*{%mXCZ1}~ZP!i;}eM;{os1bqJzsJB%+u4#|3489UmhZ8>whU)H?3Z@uU_sPa zoLaLZyAfh=YAg;d1@Zl;(Kyv+2X>;wq5lDeEn9yYAtkE#gT<7jUv^-q`#rY;Tn1Ab zZoPvD;xyL=!p0^fnuKNT9UXX>cWt#cM#i{@YqjTaN5GI9{>nbS`ms;9J({1C)9}K8 zCf$Pv#fqNv3_&=FkbqyR?mvFDGt4ND(xH&i6SKtQn)-k;w0Z?{IFc0wLB+uNU6uoK zvYzwF$KNs_?IR9uhjdApU`#BO1{VJM85mcd9J-Hz91-b1ge$)B<~oADb1^wR1I&l1 zM?rRQ&iyOPkB|c|fRjtjZ3HW! zYS6_$20r?xIi)#a83z%u)#E6@vhRE=y4SaW6n8QKCR{YM)x=TXtBmWTE6N3QJbm+P z*!{4GT!!JHyzy9+;*baNyR2Y9%JkPm`=HOMe52^Fys~h~0P_@?E+E48L?4qdl>cg~ zlR5AACza(;s+A})iqL}L;%M;?P!CHVT5y_-U$KwB>hy}5Btmv=zYHY7r)fkPt{BnD`Wyc<@H&o>Yo2v& zH^tVk%mMC;Z1|L^K)wdENPg5gLdcfvBoKJSSQP9$qL0uNZgyn|wl4x>KsAX&g4>C!1X4ux762>mv5CQ1?k?g{b9*YKRq z53*zY`(|&?(qpEsa`aL%KTTlycJ;}oo#=H4wFkS_Z2RtiKy%KKa=ut! zd6G~8%hQYt!E0&cSfM)%8K{tq$(<-FW&Y2qgAb-m*~8$8mIE|o(o!+|IVvY!8F~S4 zUj~&##8&%%UJ8=|7693u%||Ne?k;u`LrItVo=$+B=;Y_wx{cm zP+i;@Z@aAU5;w#iRG5kt^z+0R+lae<=^~2pdsOymy>6&-Kys8kA_k-#SR#WvHH_68 zWJK2KLz?oDz)T)*=69C4K~>m}C7jYToVz|mJR!ssX43H%-5*RzW{Yxo zLg@X1&wz5z29}l~4m}~zof6}qDrEj`kR%7M7#@jxkSKj&@P*EaN{ah7-a2=A!q*L18I&WXW+_#+S>|6vuBvJR9N_Gs||8 z7Z_6%)`8of1h;N>$oG~E-aHax@>2Zl^VhMh*YazJxv2d9No(BwT*`jQt6!iXx;rxF z&}8l0c|V61{!nxDQ-l$$8i{2Kkw!o2C|0$^lAUN>2z3IhR{YNd-v1N2b1vjn{~7bD zP?9iQWow7QkV8TM>+(2>9aOIFYK@|$_Oai9+^r|l#K2{qQwEU;7o`5DE0B^U)w6#y zO`?Z6?(G#~^d~FqXK|15-$976uHb@e17tS!wJk(+fwmk^KXFQ8MK#20b-~P84=&o! zU%O3OHACUCdH2mr<$#B}XGrpvf=@=N>ZzRgsdp$f&oh*sykrFHy*p$A<-Zcb-iMer zTosw)sX98lovn1l`!SL+X~7;Z^Sec1{}v`nd4q$ABg7Jjhz?C5_#5G!4-Taw+b!mi zOGpYmM35%yBA@=v+0Hex#n<&?+(~iEJGhgRany%hcjT>rhLG<)uvsTO#g4cHiaY5I~#<)^r zjq??BQHl|6kQ#Ms;BPsj53f3J*)cDSiMefExfYhf-GBDk2F!G z#xKOSR(G&tQnIYz5#c0^S1vwZKP(2@B@LaJd*V*MINMC?E}JH`3zHTD_I}iM%<7d% zyFr@}Y8Pg$+RWXEO_=|H* zt|*cM`xnf?gvQ)2?JaZ!C12fS>sLpl@%!iiEqZFg5 zW+?m22wEO7h2wG_5(<_tB>>3@II-|ryw~*T*!uCx&YzkQPiuLjhCl5pf|T9Rgn~mX z^*W#~knKXOPki1FuR#|RG|QA$R~=yihc(QhII}bf04Ax8_Grg=60i1ZV#6iaw(53+!scMExARKcI4|sHqz32c+^}n(P zGa6#bVQu5o@%nXodyI%f2|O#Ewk2t@=gFioNkBg2GOoxRKc<&(D&}^~_vO}WhW^8aGN+=$g=tR06 zJ;^Pn=@eP&+q6{yyrhFNKB9giep?L$&q*9c#8EX<&wtCqP4@uczDpA$7zGNky}NGq z^(NS6TX)#Bs<9ii3#JaC)?(D!jo5`!gHdZSXz4@kN3F)F{y(979rkq(ny7!0MWVxfwK}H z5Mf@)11p)qm!Dkn5hafU+%)2fPjrTxq8;`a=R4t4|J*ggta90Y7}kaUAJ$MJO|0Lg~ezj0)wK-;bBG?@)a#qiZxavVfJEE=7xrs-osg(=y6Remz^J6k zQWxpXM5lP=nbx#mx-+dd5PaT_&G=`i$yy}Qz(xMa2Cd;w_fqDetvy$@ZUxaipTbp` z+;8|eaUs;**->Ps3 zEO56lpMjrYeGsV_GLeSa%iy=xiB-!oPf#n+YCSqFKu>+Bf6=S`I_*F&f~ocBwE#VL z{{vccPPF!A(@2jbq-e#=XjS(bZs=l80Gha6=m$>Uv9s{kH03vF5J^}9v)R>?KBsgd z@1l?b6cD%10i51%HNEm#wDY?<=~f|0xJP*FzUXd?bG@XHG}TpQi4Uy#lZbQr$X%x+cs zU^#|kq%jJUs(*TCcn@wro4+XMdoq?_E%Vcc=CvH2An8uD(cw4R39#1cpR_e(jgBSb zyU^&itfWlER44rNnoWE|Y$QIRl(I9C@R`!a%_!srnv@T);i@@BBr zaz%ayQ%wB6-2ExyrQu&r!e?-&0(kxtlXR7n|e#shw$LDp`Iq z)RoLVB&BxoP4{GpiOxAspw%$&FJa#vp%;@QCY7@b!0Vmy8U^Ov&K%T#i(Xp_Gz zmaT(ha=^G2HxVRNq`}M%o{r4$?tO@~wfwJZYSfm`CoVT|huQ&IBcF})I(NoR?y7{jY&>G2#Y#SUVx3fJj0g`(-`GkB&sa-#{0wK zz)v?x_SI=%4B4aRDPiy*7SPFtk{1a|GDm5wMR@$OT`R|hVNos}gAF9|n;K%Ca-A$<@4^xLS-ZL)iWOH-(@+GVNnTE))>h*7&*hXZYY-rx&1>0U5zP@^qAG8?Nco6y)pQp_*K!-GcPxbPT= z#$-;m541MBxx6RLuKb%UOh^XdN6Y+Un#8U5Od@{y?rqy)pYbT}Y@nLv4A}7D_xcjV6DnD^_NdUGu^4vmrm%^Sed@#^Pncf{u?R(_PcW+Y5 z(S&l26}Y^9R1oS1lESLdYC8Rr+im;yo=p=&jLTx!BXkrvb9ix9FX|48qQyJ z5h55Dg&>}jLnesv69LRVI?~18i7*$H5_c1Aw^Kuxd`+U#_mlH$l*7tK`$ zR<_vq6MR5U_VplASqiKy)2T(xn+?H=0=<`mxu@@;aX>E@>z*32JOi}*$gx?OE)eK{ zVrw$r(Ipwu^|9$Uij~(N7lwlAtd6T6I0V58GXlrCFNyBuH zOr0KMxif!8Z7go74~i;}U?dz|vMS`sGCvf0%5cRF1u|cW9Z`>U#5k54$+f!|$6Ie( zvyszDc>e1vXV%k`J(KHu1{7al4eATSMT<;&j%=4XxY@Sw`*)6W)dNJm2S|aGAUx>_ z>4ULzw*kf4B`JIMk?1#t4Zn=ws~5pm2dL5W+PN;Chhs+zqWJ~AS-+Eer6B^p1S@{R zP^X}=ze}k9VEf-l2G>vC`Y7}6TiNCIyfp< zCAwT2toDTP+2Fny3+{(tr+oAu3fD2K1xKX#x2-pICL5@T8j79YWFa8G0^7ua{>CKG z_JdgkyAUs17K@i@L)1+0&;VpWs4zq|US(c`K&ueija|YDiVzB*5Hl`XL8K!{7a@Gf zalj;=BSf2&giAQ7DOYhcTQ=RKDO@$q5YI8SKwwAvUA+|YnZswEPSn(NL<@?^0G_;44*Xef_3X5u4nf z@VoXNH5u9oogI1Pj)QSpFVk#S_2}V%WzdK^Il}&E(qWLoTV9y?3hCP{K(TF6_-NkA zeLbKrm6H12#HJepFQ1r4BadR1Xhx{99{RJ5?-gwTF?+a^J>nSH+pf_KAmMn}>tppN z=`QS74hwZilPu>)vkR|XI(p&JC4(#}490Ak?&x?MLqD=2#ZwrWIOaK?(2}PelC4h!LGnD^3XdXVfNR62! zapw@&6iYxiD@z!47-x>N@BOJuR*mZl|w$=qa{L=s`Gh2th7dz{kIF5N4KTf{AE~R>Sn{-@w@oxg|3rYkw_%>x=pgvewGso+&QyeNC#LRpqwZ-DGKl@90R6^!Kr zdrhFP5zowXO}Fpz)kXgV*5(gw`H=$(Y)gTnbfL0GEQo@9Ah@hiL%9L~_q!&f36uM7 zK_1qRpfQF79|22Tk!<7)w3}m&7go4#WX8_s`Pl~|LsOoo6U-6VUXNse$dEXE7tDdZ zjUZ>MN@aYVdD&sgbRW*6F_sp(1drGqusOES7Sv?2v>1sUyT-O9 z_k;Rq1$E`;*mLwtKY)4|Qp1x=YOIeE(?)@uy+h$FJb7AltTRxmOdw zj#RwC7&K768?na*#y-pZQ?V@2RTObj$`~m{oa7=7DoK0gguOD7K?TW(!i4_~91JP! zN{7`mkUta1_?rV?GXRxx2_*D6Ug%O{0)o-jk4U9kGF$jU(+x5$@n!ni0>cZ8j`Day zR_M3oWu@QdcA$BPXb|?mmk<_uk8U86yJq%B;xyY*UPoqDPJfer||r)hBsXCFDAgh^Y&B4wh7M8 z@6&}7h#0JX3X*l!XPYwjY*FB>q*f1i4t=J66oUh{4oS)2SoepYPv=ATn4?-r=U^u! zy#1oF6K=3&J$c{snXU6zk`vDGzm=>ErB)FnW_FYGU86tsqi=$2)L{yim6WilPH38u z4eG!6qfO0gj><+7jI|Yw9>EwG!g@jsvLnzPPtVI+4ea9^Z6WOp!&+Y3c)N*ey#i9l zxcuQGo-bYDJb;4jMfy@i0Sy<_q{Zd&DA&&9Y@TPzGGH&*kb#!nv;;U`8L_e1;kqsh7 zX5Pk^IccBs6b)f;%?aBmuq=UEI0;f~<`NM4Juf@Y>wWP~&RaE4wzs|S8#{^0Kt&c- ztWbp@GKlhdfk|gFS)mc?6fknY!ns#HFeI=Pvnm*(s2u~PRvi63_G!F$o z&)Z@^u>rXEqzpX!l{#Db(=LV3Hm1+eE9^>zjv4`Jd&kT`+1*!^rfjL7eAGwC8_qzx zZjG_2A87KY^fvZxrd^THe0cIYye5>BC7L^J`u%kVs}DLX8JHWRU&Ew=$ke)Q3r#i( z)~utCy03H>EUJ<7BJS~hA}Vi}omRFN;M=cn)GTGHG)Om)&w~?Aq@@Q8%-V+mo!N3Q z7L>hWTdE@Zd$rl6=D{Hm#SmG^Gh7zN`iZc|%cKA6Sv!prLqxc_hv zf_UgxGY!?=gx(+u8xtpwoizXT-(N|NWvoM|N_3Q{Qi@bbMamSCK!6}XH&ajT>E!-W82A`?RmR`|S=A2C5LYsu|fT}H!MCND~YuhWl)&2sw$Czr+v zY46;;?VG}E48+E{HeeE&j(UWFy^MA3+c`?#%qGL~0tKUixs?ZGBqh)nrzGK8Kl&C9;-@@$&!-y3ez9wp{TQ2?F0 z9QrAPGpdCmQ}TSwp=v0AiIee!_KfhyqcxrB)o&-ZDm(Xv66rn|^;(-~Z&e@!19kJ5 zYr5~2>6u7N`TRPv77@`aGc*$jJ8TrJ&?L?!EqqR$iE-pk7-&z0k)fg4uH3hOB~A~C zXUS{eT+hv~#8aBq-B~)SI#`E`LMtTS(E~E*@1PyRp?hrfl8_#Z;ma=^w0JRQq`UCd$z@XWtPNs5rbWW&zOjS<{oD(Qv2n^?ua>5$ajh#f4q~$ zr4a*B!~&-ztVESXK{hk)I2my~4g5as) z>J9F#VX*r$-)$P-=0uwx9>-P|8_g;?$lZ;z)>{vtK9=d`4Uu4@`JUoXVBez=!!tt* zjW}gWBBXrji2-rtpC!uAh9ZQD5o7#ml5%balnE4rsHu#lmfte04YkGuGeIa!)5$rj zR_u=)7x~i(B}i4y=blS~RYl~GwNn-KacoqeaeF>-ARZ>Utb%Y=i1}4YiSvGlZo2`9 zSAMJbN|e%PP`oYg89A$!*`f%Or+m0Mez()4yrB^BbP`F5XybM@g~QH_0x=0!mYvOehyEE^e`w90-sl9EWv^p zv1oiqTJq?XyJ!HoC>G<_*PZI;Qb@RJv1H6TsE7*bv3+^|j*?!;B&n(#Usnp56UVk+ zt$E^971KH9o1QSI3LLYBAb2CyfI%3r87NET+vXn1td}2Ql5RWe60eU-(f<6K6(_yt z^9S4!cropeoG%YwfoXjDt(|Zx4Mivvl9WH9^ur+mNh$w?Bp^~sP$@;Ir2h&;@e86k zDTU%7aN;QUzM6#NIWaJq*6(z?KNQ%HAWSd!EfPS;;h?YIprx%uYgpgS%d!TQdp2Pp zQkigt?OvsOYU7mEZS~?Er~oz*L{&mI6^p=|ti+vN%&MN#r-U=xEmUK&7+;_*`)~h3 z{sIL?@|QqQ62abz6S*1G%5r~p|5HE@my~lDtPZcclxtro0PJ>`u*BU2fj{D%T0S)E z7%+W84ia76CIKU7FcXUBSm^d0P1utlI@6H((h7=AdXFY><5_(lR!{QD;3++H&OclW z`EBZ9*FB?;tjj^%0<~_|n<0)_xfSa8H;%pmHNsIA13Y*XGh~tf;{!z9XC!-<^02M!_N7Mikmv(*E-wx)w2e*IGakL*4g>N? zjk&l?j?;83+Ds1%Etye@Xa2E#EFQ%J!Yo#!LM)V-cbrIQUrHgxqzCT-PmZ#EfH9u6 z*nJlemqpZCV;aODMnU>zNsAwJ7`d)mxKKRm&2SUkzH_9G5^q+-UvD~lbj;S@^bBzR z-N?Ov-(hUR_xqt)=<2UB_5b{eh(N)s$ajN8Z4unpA_K=%v3;C;47VIB40y~Ry0R=j zR+j5G1p1!70{7A;5%xo=_60=F;VgvO45SLB@cRC%_H(4-XCpg*_^KmRFZsR|OIbsR z??82g^`Y%Fgq9Pu-&Js`lQp=C0zyg&A*G0rR75}_DJY*1kVgV4_)}|;@V^10FGRug zK^=lf5fT#J*>Bo>PDXu3XWo(0 zcv(dg;C@f6i1ChNQ_3qsKw3imAVA1F2&WI*)ZR3lwt}ES2!~Xt919lTzD(BBw$XGR zS*yZtB~p0DghBg^tkHXC%LqPs-ZTH-N$zsfY$OzH=lF?Ci#ykYUOn5cvljcdedEp- z$f|U4B|CgyF6j|nm>RKx-)U$4qp4^0vDF2{XKd3KD)vbBP{k-0(_PDh0ReSI(({Uk^ zIjkW$L}k!mq!WMRKFzaYK1NUmL?+74Y`9|)Bz;Xm8kS)@&A&g4siH_rqWS4xBlf*9 zRrw#he<#vg&F?@wwFqBG&L;LbN9LT;xUiAE8FVc8z6w=s=B9nI(0fYd6X16uR+wUY z^s1ITwTLf4JU0YMwHADoJlt{rwp*!F*t9+REyo6iy^)n&a7OIq*GNcrassrscxXU}oI{UY%9=Gw=Sa`c!cqV*etU^AGTVceyw zpfhxua&FVWrXaN>J_6RHFP&K%vZ(@F@DFza6HtD>Y%o%a7)eD86q5S#34M7a{~LG( z4g^AfpDBZJCJ9~^`)uGkT5PjOl)C#dEe~x4EgkF%_y8G;VLN~; z!%(3UV*F?|-fy_nJc*wW^62-4MwOA?n7iq7XmiUm1&j5-Cid;V5bObV=ztT?1qVYp z4gokzPr@&zEpLI&DO0!ZQSF7*yId#ZUHbEL2T{i;t2Lyc#kdA_2hT=r8oez|RIq5_ zUK3VY@0VJe2aOvqGocu}IMA~wbCXvNUsHn`P0QFolEK8*=XBFLRc{vM%=?1i z@*6+fNCcr|;jYZ6!*Fe6fU`M+5}NrHUUNi?R;T-+-`frm$;Z^fIh=aT+>#EWD+8}} zv%lscQs|;B&vY^kkX#}yV6yI*W4;CXt%|c5LA=AiaN8vuR`z_c=c!i*EsheEIRons z?e7r87^QCuP{eML!9AXS^#Enk)s68c1v;eE!%B!?0_@|5O+jN6vccH-wos-hZUkgk zD?2w!Tzb1dAbEVay)ch0gD`6+UM|WA*l;hN5@d3VzF(*EkxPvV-W~bb?!mMKj(0j} zmp${NP*@$9o8<%Jd^yqq+zvTIgVqYo-HSaT`4pvC1js ze2laEYR=gPngr3ccpY4`$O2~(UsaM+vpqiau-JnFP}p@uM_^Tao_&@FLV}3*Zus*x zf})yHz%#dyhO7RG?0$ZGaE)wKMVVO6D!F@wt_!1|S}&FmWKcqM$V^80t zj$7EUozB8O<1k3H%Ls;$G-CgX^qr#XBOIn-f{4$HG8(fSG?<&2&+@3pu7)YeC+ZX+$^{;d)ZmaD4Cg$y>zWh+b~bl;c-i5d*&hdB_^Ef zL8l|S9{baX%X`u#f8G9M%0u7f%4^#EE+)wMFl1ghbBNrw4`rhl`d~kl`r8`f&py)!r;IINC zt_$)Uat|fXImP{=R?v4tkC+~$@?8ihV+c{Z`4*wRQ(?|Ki}796uzrGjh|Rw!=x`3k zMt$B@a_W;cxRwM;N(n8ch?Z1DLm{alpHP=aVl23r1gfHhrYxf&&-x#My8O4tutN3W zh}jVCFvmdo$8NkhVLl*@&);;ZBrv1D znc(|>qnTYALVF?p@=nc2vona7fbk*adN8J$Wn_f5?}qHj3t9i3Ue9fBSc#(R*zY&Z zUy=8I@0lsO$I%61FZJ9uqVpH-P(!3RIQ@NQ3Mp8KUW#@v-h$=7R^!@oq^Gh7R; z?C9TeN(r+h4Pp2Yb^nUF`_@XpHsCMCeh_TJAyrsrHMwNwtH(1QNO2-7vBZ8UV5t3K9m=Pptm7@bwvG+~n>-@1@9P zC{&x-Zh3ltl!;}{no;v}D>C)0KZ05M=Pg}1o`zn%h!8{gq5ZP@d#Wt5)teDSl1X!>p4)T7)cTYm6sb7yQEhqUUpzcytJn zks$bPxL_Vws1S#1*xJS)19(_@$7ru4Z;DTzb+L$uxQEOrTe?X>(qdU^KAHj2fwh=n zF{w{k2}((ZQu==aWT?cCYw~=C&g++Dt}WLOOWbSjJLeDTk$+yezIW~GZePB~RIvZ? zEF;4=GZ9|=6%!^re{bxi%)#MvC5QJbS!KHUJ-md(y2~&GJW5Q0o zIHum#FT^y%qA@DdNdlOi21gXph@IZjYmD(mNr=?zNTQg1o#kNaQp@jf?P7vSl5oht zOSvZ*Sj$@(3M5^{D4&$7*C-f%!30E!Qh?3gRt-`}0h*!W0BpotwWm zk`xP8f2zuy0S)K&MlE$HRJ0KJ8jT|SZK0>d!Sm^{q^zFCZaZj>9d;O0ds_PBPX9o& zhLt4*{IswC7vt0pJrMhgNlP|yBy)%EwWF#>Qz!JWea2Tm4*eI*v>>JHzQ!)OjG(fO zj?FlIAY=3`AketOcA@Dknk8lr@ioNZwU9xl-r{$gW82{>6zfqoUIco)*Qj7{ zXAv79q~Oygu%|VXa!66Y@R4@rUkxa_9VRR`HEs|x5)H1$@ZfBSf3UmEJjU>srKTyk z35KjQ4IP29bE0P*kWBl>gJLedz(;t4_+~P9^gxVaF`*36WRD+Fm}Z6>2=Rsf$l(Ot z%*CM9S~o0Rw4!+otm@xGQQ+bn2(kVa4i+oDDJ;h+$E>KmJEor!3dA;Qn;NqOD>*Z% z+t+5<1cNGrgXG39A$svi(|#3&`UG{N?B#Ftrh9;CK-Q>4CI4KB$wp8@DcV9zr{F*{ z^cvV9FC`)A<+A|E$lejuviBg_(MRdcw>H5(pdk==`p6pa*M|o)S^Bwd2wDX<1n;yw zxM%lQ|GV8wp^K_c;gO1_v7Kt+4i9;t+ihTrY^V!+e)VMo_QxeC`)~xR{_SY^2m;Qi zTugfh<)?HPPe}I^qT0NIOA>KBS%!RxI)DRZ4wA%;TE~ z+^0R!ffTA}Tcs3BA*DCz0|3Yf;uAKI;fJ32i$ZlJzmT4#K`n~P^A>q|*|4TC&Qe=m zWXvR?h5y{)1on=^LMdNu)BZVTA?VL5Enw){vEQfK0aeCHdt_0ZXv_aOz2|kXI{{WB z)XxOZ4_^7@^7cMqRz1T<<0}iDtdr zMqO?$;!ektC-s04SZ^YT;IL@6k!1#&TaJoR1ZC@JSwz!QrX9=9^=G7oaAR4FufU|P zwB7KfenX*OWGpN|I@G+R5+T+<-IL_kk^@{D{ACDU<73g`JTRsuvWPKS1tCX!`Wh#Q$L2VhBA4?{1?o#bTZ9k8biHeq{9bt{ znw)767?HqoqFU`%D`RfPjRlbj`T*Xap`(ussN87X+H~4KgNMF|kGX1wC{U;gxMP@$*y zK{6ZI4{NC?v2=ber{>3BpexH9YM!J|t%)#KORq}`c$}uW9>g8y)Px)?zN-Yrz*7*? zGGC5M#yG1ebW)qnRQD&A-QxOp$?*d5Zr}#L{JK&qnye zCW)nZgtRT!gL8==lIi`B%&XZKLi#b;Ug{I19Tb2ZtujB{a9aHM&N=&r(l*Q`S8kDe zM*8kSj9(TQ)V+@<)EN&)fh(SD?@bTBu#Ngq^LP}6OvMkoM$Uxdm9fpl_iiPO65Zuz z(7>IYjTinD&N#~smyjzjEctu{bvY@cQ&6zgp(yUEs4{>1bU*8!vVZAOkqS|?V+7g z<`ENI)M7cbG)IA5-^#+hV&^5uIF8KYbu!-Ns%$SXEtJvMwv-w;b&F(eR@RR*2OgYd zZAd6P04W4D#|{EU5gY()x2wI-YRK_ti?(`kSU&s*IO4QqF2~FkHSb#eLtV3d1}T>( z_JMLK;wd|wvC+?QFJSC8KFA-*O6psl-Ps_cv_y#qQbEzVy&H4Wt|*{*5M2EFJkGONFKtQe;|kxJr2@v~k)*Nv z-U$N#h}BdHsuN5pHeNf^_3^mo^>Z)w@pE9Bwq7f9O>)V)J(>kF+&@%WAjA2GO8<^n z28{FBcK=N!yMI$j$hz+zz4B`Q+{P+;#%%_ZWbfaK9=xKTebZC)^iDtnWGB)4?B2zR zDjuAZe8=uiEyrSo8g8@S@_kZ9k@WYIXgZDm9e0iycXNNn_<+w+*YnA8?p=%jqN5q7 zml3T!QJisC(sjE@%#dviw&C>sES{L}I0qcPb*XhiN`Z9ru=^C;$y}`>!KzRm)u8k{={cMzDx_67gQ8h z%_WcjR`e`a{{w(iArFXV*!XN@(<;ib=ZRJh1N)S-Z!P1HJO31QC{mMHl|rIQb`5|i zXuQUsHJuM6^5;S@Og(Kxzpo^fj3AWSYibEd2Z&^n3K?jDHd;!N`9tIkV%uLWW z8dXd4!uduB^7F(bm(GYzFw7w1H*j@{@xJB}W(`L%ljP4@^7Nxik~RkU$($~N7|C$I z%~za(F2a1gcErH6EMk~E6~v2?mihOTe1wRo_O;+Bui~TM?tIOrk!%~r_O|$&{0HL zN;6N0FDcD`(iC%RqE#W~&Hk*uCaD1N&+7j>Vv#bMr2@qImyiHN|4T>;RDf9iEhK(o z(v`4B^&Hgh0)iXBwU$FWC0F!WH=ec%ti`EISjw#uB@tqvK%!Z{WiI9_2n}K&l}fM= zZiYQlokJwRfI}yne1S_mq}ci1_kUv;6Fa59j~rY5iGu$tv~IQ^Iik9EF|0*AP3C{7 zWJ{;yJF^sqf3Uky>8$mWj0<3S^fSr5zSuBbFnr>^ugW7lKQP!a_s@ZAo8R}b^zTDE zn>|BHvNRaz@LUSRI%*c@muLEuv$X+;eG`-~I_8^7TTd7X;Q02n!7Kc+xxh#bX{-nA z;Y0+%3MUk<&BqDn7gyQQXB({tl~&CEjG}MEI_Mn|TDzq?Vk?tBL)_OqMpT@XbK3pj z>a?@Oug(WZiiHlfaTErK(E>@w0X6zE=rB452iwcfUDYE4;qS_aspl?~ zYX3=a5R*@Mqm6Y7p83h`WISr{bU?&$gs($qd7KQq@!A$yKKO?8<2Kfg(5>@9B1vF4AI=DRAi||mN<+k1-w~j5zaQ56Sln}BX)P|mV^EWpBE_KkGwOyMqvihU{ z(8It2h`!F%=zk(Z4KyWWw;whc;X-ztc#C(%kd%UiYnq{V!{5|<8}H`Bt$CY`ugJOxlUO5?i~wTWT?(cKsu zC$4geWOQAh-y190wWk>Jd1Q(X9NVaep~1Gzp^sypC4o-wRGw=e=! zSr=0YGJ||1x&CrOEA7*}}MvUx)@JDL?9kH+( zGcpOn|4VA}LjNT-21WsR|B{;X$^;Lv(XJj$+L#%UU<(T5U*h}OOR=-Os?8hkt~rv1 zjUo8=c3u5^M@kSyZDc4pMOQDwW+&hu}JA)qxyermPSY%a#zK}*!flrJE z@J<8{Sz;dl6lo1IVfUPnf`7~PNU6V@vS65$u~}11HS!E%031y&Y3)rn zF>)zEo9R3;p);!AB3v)YuNzu(7OaUgvnj&*PH`27Uf|%X zORgs-+2dBKTz-2OJnQkej5BRdr%H^i>btYQ*;=7j0B*>IAI=LAMBD86ZO#nyAqu-! znsqV+V&7J1Z>FyI9r){_DH!{O`)y*GMI7FupFFMz@sdjKz|I8w!LrKmERa45JYAKN zW?6TxBPTtl=O}J3keonktZ`1bB(Mrld;e1e8Ed@Ppp3{=5DH8H=G!3oh={=Gp65?k ztgr4+9T?>#FM8+f>99q-$jWt<{;SD50^#6*BQC^~qiVCQs=WJg7ecqU=vgs(sQ=$P zPoG^+hM?l%+^g+09bPc`$=O->|F5yH3aYeQlEvNK-F@TkE{!{lvvFzM-QC?C8X9Qa zwQ;9$cX#*8oQb&+bMHTK<}r7@d^;jzRjsOAS>lrPN3KwgLi3B^AApgacp1^-`rOy}){y)=_ zp@*C;|1Lm^6R!!Oll_W zadAr&on^eb1BCeL4Dv1ngQvJ zIS_paeTaVCK%cK=lh;y|jTT*!m*lf70UMZXJUx_AH-2MwLoiX8hp&|INx~t=#zpH` zeS0E>Mrms^V2?wj_73KT$kP!qRDFxj^vyqsCTngN5eq`9H6pjs+XZ+aCzAXOZEBV2 zL6dn!>;tyW%31jPS4e5QDHbSt@YEMAz^Gt|zi9EFi2a5FwUz=V@2hd6FC~K__^)0d zA6P2H_HEbh=BBO3hq!RQI_5?6fiWs5XqK|-oa)o(72l*d3VwBj+2hOF=mEPd7&^iS z6MiZ*E!MB%VpN>c@uQ`=KV?wTXYXot_;Qd061&g_52b=w#7PC+8Z!-yH7P_9BxS}F zMVv2htDrWCW8PYULg3R)ATCkWIQ-80ICu|1^50Dyft5mB670uMC+S_{s^*T_zI9&R zwxB1G%S@K>+?t-iz-W6X-h!qRMy>;Te_3(DL{~bvKXrL{G{Sn-cl3?1nbaOs=6^d% zUNsE3R6*@in4EDec<+;%^M_BcTk?rX^OnD~&m__%vijXv5h`g=VI1SIH_Z@mMytF_ zT}H0`r)q@(#I87*M*bLuQ(=3HkVmDhqIyf70Gi7)P`)aQq+a3x-A*jeCKN<7wh3&0 zD{DOn4DNe)e3(2eiB6QvaF>W`<4-T_k1Cw;WIX3AqzR0;Lw`Z_Z(zl1UcMcF(!%*r zJ@w%Q0!jEgMuKTdk~XL6#Z@w({tH%Gh4Q)QyJA##Qz5kkb)=!-j?_hS+vlG zzv#mLW@^L|@|KKoqpC8jC_^el`G3JP__NW1#^YjS+b(?20(XD6q$koh$C|^-Af8;3}dp@73-B zPsQc!D__m9aRyeVk@`pXd#I6k4^!NmJq4XLORj))6&kk})##>D*P#VfA zmNn1^=4fW4^B$UO53bQ~m>V#m5Mg`#di5oqeVoLJ6pPSAE1bfOx55rgR%3B()Wb_KtE8GYk7_235IF@x z-k-_S2Ao01rq!JMBGyf1k&psR4wt%jW9F*TvRp88{>B;McDc)xzy4jL(F)Ep{ zAJ-y5<-q-w&Xf7=*B6=Icv%)pTBfArzJ zsJ|$R95;^meG%_R?^A$Z(Ieud#w4)5k^vmJIt2cu(XREx@pckGAxK@ES<}s_G1+5* zjc48f;a(#%8iH$xZ6P_U|2mUkDzqsHym;OF;U}C6GVFZT`iefPPVS=XeIHqud5_^7 zDQm*ThRhm3M*rHwJ~=BF!=Q=R38tN&Y|DR*|Dpy0H@+U1NKP6XTT06ntip8udPi6+a7#g>`jv@{z$>-EeQKV#mZ2 ze^7$|oH2AG-KLA_l6;^jrnt+U>5d^tbav+RcLj#mSZF_-l)F!#iRgsd=LGkvuQzq* ztm{4NMtU%51G}AepBmVMY;pp4g62p!FGF3raaK!aFGJ>61CU2PZnNfm+b**AaS(9^ zVdOZYmXtJ|`NtpnqSR?Z7RC=kXeiYUQCB5O@A+w&Ek(kBjo~iOKli|!QRY?tqD4HH z!N%!&)L{mc$1zt$gh)gsm5lz|RjhjZH=&vBk1k+kYlz6CJ&Ur_6)b&ShyqVq02p0w zA2`8B;e>HEeLD@dqTu~Y{bUhTBm*p2yW|jv;FX0XzgE0~agKwvG#2=atmq0TaZ^4z zPV!?&iw8-8l1VPh#tDNbwwqoa?TM#$aszfe`odT9R*{>)SaCZ_aQqLvF@b<+NHO** z37eId_rbi<%^F-N##0W22rArM7a%3lJBlrF@Fu@MgAkrNafdh|pL(!D_q9uAPJsp9 zfwr-<_-|&SinXk4HSNCxH(@%e7W`Wl{zm;}c#!EMrO)G^+inD;4glbAZ`8%xCD+!F z@K~|8U~i}l?u5jZbKtlJZjR^xr$F=0?+}Z@ATo5=7}8pIYyu5V*9PkAAQUND$(*uT zc$&HK?u}eBA)MWhZ>@^W$YBO^>};1i2D(Wz%qN)#bJz5z#{j=V(tWY_8~Ovz_@992 zOI!GLku6%b8m!~t^isa*>PNkObuhCv5963?cN)XL_)9mv{R16JMKEQ4huNfwi{sc< zabmrw_wt+(c)xk4?a;?Ih&rbV$}B4r&7xrhY3?(0DUrK0Jd=eFH#n*6E@CgIFrDD2 zUttroBy}06u&pq-Y!(!adv(0Q>iqlvXvi7dQA97p8HslDiTgiu64aJ0^LZ|Cp^z7C zCVG`X6S=UW+S8<=nTn9#{=!0g4nUvKNDM2sLj6}y9wzC%>{D>mmet= z+(sC{N?9@z`%Gowl4xn=ON;*(z|V-4V0-C2idfVIUwA*fg$Z~M;J`^%BRej-6mm$p zuOxm^q$9_`6XPh#z`}CB-L=^H6pJ|UsbKHtDs*-u zEJR=kuWCB}Eg!<=|CZ*=~?P7 z3K#4#bMk&_^LtLSsAmwM6}QMha)ULY8DPRDhgGS7@*`f&WKoh(n56GFcZ+k|b?*g) z&5lsBQdfL3fhxuR;FO`)u;AUzDdXNgPDI?m|APF5w zfR=?B(0{>fJS@R0Up=ydpTF=Je>V85Duw$lt=0OvfZ#@}y})#;Y!)ordEZlO(w5vG zzQKNHF9y(#zhoZU^x1d*5WXHkFT~Qbmyc-ovXHldLv4HSTJ+d+|I^Zfypn_y)qFtk zCx{x$DyS-c?J+XNmG64S6Df&x+ny}vYcWVc?pz@O7uK(^pxu>6Ogzo>+&2%T_G`Ag zGlT$iPx*nViH_BwGO=x>(#$JF2HRD}U~gV65SYZpvHRCf2n=sA1GpGQWyR)DWpF!- z{M^uk)|gi;g~uL-u9ByW#2s_l$UItF-_qiL14gBHS3kobf@<*cF=P{7KetrI)<;IH zCO!}SpaW3ZL_DQ!p?X4!1RedF@`i~x3WS?JJPdo&4tmq3AbxhUi$|6bUxdy;@WaPO zggR~;=9+1oe2tK#c-BWO3)sU5`&&U?5$gK1zme3iU-YdZP-N#idpI@?5omLH#-t5$8EQk6MwpjgU%=%*S0Sl+sLSs~8AY z3*KlZyDI|@R}?0Q*@?rf&5dw!giV|hBg7CW1YYQa(WfBD5;h2;TQqxTO|3Hdrxz8v)~^qE}wT`*3COy2eHa^^?L9gCl4ryBc;2lh{?B)*reldri(14 z16kVgsXWLOVyy`*YD^qdimEyu;{?%ePQ1c;IX{5--KzNc0XMi@3P&frO0h+km35T5bTuch4(Cq6omA45TYmC z`mdZISmHS$%Rz`bSV*LdWMz8P&BFWd+Lyw?yNDr<#B`nCv@P54feB0@eaRSbswy<{ zG6gJ@{|*50j_nHJ9}W!@<1K>AjDo;8t~KEd8wG7z*8QGror23)TghFQ+;OWS(R7J} z8u)jIY6U#Svb(+V{WIuTNM;3>7x%&1aA@JcgyaXODR9*0LXC?O22^1imOOxc`5c%8 zoLFud=8A?}1&B2zJ#)oZBOsa7y2E4vz?k$g5}dgO0Pj=lEZeBa)hwd0&<_?hju>$o zq3O%+8WIA%g^fs}A%DUN_B}YT3cLQyUH|LoV`-{0YDP?0w*59G^LUd3v@b(_p>BbdHA?m#W!JZABQ8%h0>d{X?K4e6%HD^XM*J9ahaz|AngB4+ zByu)EvQO#~F?)JP2V*1<9Hs6rkpVY+O8DDeJVw!_{{zPxx!Bd&)AKn?|9lm=6U#|8 zT9$nf#Lq{=p9w(2@{Ucbx69Rx7X@T01TTsJB~eR(1ywi?^zRJVT*fcv?VT~<{{AaN z>^PB!T7?O#-Mw}wUrR6dvs`*aqG1CS5uVev|EzA@eXFJthupS>Q2Nd1;16`Gt4YbN zAo%haeH;e{=ip&@cQ$(>+qyLK%!2+{7!sCltyts-WZzu*^bwuB9(DCklt2*{F{iI< zS>D$=pEfw+hIV$pI%AKM=|wuz($1C?OQ$80eV6@rpo+ck9kju43OePdH->UDf;}e| z2ON7CQK^7LPFSa6H%FFZngB@o8$HnR3Lrccw`@!M}MJA5nr_K>+Yj!&4 zeDnA*0R`}IbGbWia25ua|EJLRv{2#9-IQyA&F6UWqgw+SNKf5xwsNEXT+|efEDyXk zSa(;7@rQzOVF}+~cUHs7r+?}^q$=QlKY>)B&0=NToX~o?tEy%CaS~R6&WII-s+Ok; zWY6DoIr%S~)5sUoRp5bi-dFQ?f-F}4>P6@2-4u&@?OD#d&`Wo#20fn1k zKq`V+bkb3c44OkoW>>w2fQ6b7FeHD`YOw9}2)+msL)kq>#k)r-f^F+M!yRfmhKgAg zl$9#}i?T9a{Z-Z;Ygp*FiW3kEkP>D`zh@Mz*dK$_BGM%j?n9$56lVXhXZRN3of=x+ z|7`AUb2QHg)elgfEenP7#8Gcj2t!?(s#=s?^?)nNimZ1=gp?O6rKE<8MZmE~5CC~T zUmS}|rVG$qfl)(TT=_l{_$|4m%&j>u$ATYuY1ak1DXtLa#?CbDOXz0H0{??Hx1`uT zHE~Bt{{@`nzs3@=Dht0g3I4?2ZszPFXNUk_vli+>8fEX#J#orN!-e>b!SHv# z9;57{O!pekz!vouil%354mTzWOR@^(82>!(Q!NP5Zl8T((*Hs{AW0Ad-K)+Kj00{i zr2Izb$P%i62cp&M(=;EU57|Udg7msE9nuh8LS`Z;-*?9ZwcH$o^GNt!4la~pe@kHl zJ%>4~bLajgd%I(y7Ca(y%QLQgWNI^l{)1I=}I%J z3t{xGW7!4`yk-okNyg|>QF)S;*`}xbFA!OLh53aO`!p#+YNX)|5-_^RXuTzJ8M;P@ z8zPC8Py|P`CE3w4EMu8{#~kq%bYF{z3u;4m)aAxQ6@N#am5E>40p%EIRn8Dm1f8MqxHUD*Vfwg65&=3msO_uttHWC|VzY6X zyjeLF<~K<4nD5>-hUAuvb-{ioK0J0%_q*YfNY zDn_UnY@}Wd%B9kCRVkV?C#Tt(t)%Q!*Mi5x7Qz(knF>TNbo1eg&C10i69`lCggLjf zCCp!O?DUpqsC(qhX_P4#;sGGWFP5tO=7>k>m=LAtk`t$mavxNglY&c~qxqn$@#gf? z-`FyLGMBg|q2|IOxEz2c-cAH0g&E1(2?6lCnT2`NmSExsc0tS&atO78n+ZMCyxyKY z`9oI@_21zY+$x8B z%2{N$C%KfZf%e?m+n_n6S(mST^IXVlC;T4l_aT-hk${mXC%vEi#$T3+3aWx^VXqQ; z*6P0|0fvJqC-TZ$rMu{B{oFuwl;Z9vGW5m`)M{qQ?(|=^9xa=b!$Y2Jz5Jruq))(e zRe9?DrkwdDB~okYdpdVE4x}!DiO0E>nIOmf^dHJs(J%7 zH3>t6KsHDt+={xj?1a0-g2!+j_C|My=TKN<$`&+{2#57 zpK5vhU8WOWLPC(sKrit+ikGNh@w-0>@aTrsA(e4@of@8C{r(h3ySCtf?lcfLvX2Z< zgFgqRSw4&CNywPos1U1SPR49pFN~7*xN`d%KPcR1rbt>mIbk{FUYC;TYDAYL&NK_$fvh%+fOUN%GXQ2t z$$9InwMIUwM|YJanvMy2savD5X%AqGLwdN zbHUepQj`wrutpx8s5A*r*fm_1} z?7kHeuq(ftL+Q-aWoFjQthv|$iV{hJ@A{{N4|{U<1}KfvOvI3{%$n)9dc8OclLpIt z{hrOCV}t(aZ*GTX(gwNsJo%G8spnEsedAB7qboiLv+x)25hIY(w1!v|mS0g8A$hvI zkT0>S)ndv83jzVNe|$K^5@@%l=(>9)Dyv;OHi0gIhs*U)17V zR3IvH`{>%Y9gODJ-)0zZZjfFrngGQ)f?qYNOmKmy%bm3h$!wr zm+_!Zy!l44pCkQ`fj#8QU^1R)atrkjG!}?jIr1ItIjv9)(#hRy%xmWDzsGg(JVb56 zxM5^|Vh&bpRLx4ZfO!GeY5$6so~*w(uHjvKJ2^Np`j3;18Y26#X^x;aCbO zzTt&vI^mb%Se%y&Gptj8J>y{;vd5wc;%PHPQ})~y^Vn~2L(st@cwG(a3_Im)uSfz) zgAb4Nts0)O{kCk-hCgqyp*8|q2EB?<1X>jYcZ&9;?uOnjT70``ZneSWSA^*G>8d4v zMBsKxSjE&_9qNnY#?Iys_Iu@M1|+tMP>CC(p-u3F#@;Acr3}3UM`L&w!96rud!j+r zy4$F!u%9KoNsFeAa}tT!Yz+|e&Hs_p;xnY&sF{Ip&7ejxRNfwaS*aWo)_wwo@>)5` zbILdzzN9RuVj2HjROM`|Z*zOnwRA zQjqM_=q=+^VS78iQr@bP)rf=}VP+lp5sQ#l!o-53@KQGruKg!=q%^bvD^J^gIfPh_ zURm(siiK6(5S=gGF=Mwzn*l#D zDP2@wDMi{ST{E5UKK#D(bj)2F^sjIdK+tp{(zF^82A3hJ#g=_vymgdprlpRl*xBb{ zuXc0b ziCm#=N?^J$@yu=cCd=q+i*N+gzjXSNTNmj6mWQhd%Wg4G=OWPRM9kx20hJ{j=N=p& z%8{wxv+Pc6oE}(9Sx7z1G^VNw7rqY)K}3D*9wt}BAy&E~I8I>d{&r2omAWTV zkUY`jzWHA_iCJ-#;)r5tbeROIL^1^miA?E8_5=(|GTMI(bW5X8(4%w>p`-2V!aZJQjaQ$ZKI}IFhBP!NoaWtzeRvHH@|s%Nf3z7O=+k4r(RppEH7*yOU=8?1FWGayj=CP*OTC%E zeU#5^p_NWSh=pK6$M$rmn)gkI<}z$6WY{;J{P1gyPX^KjREP-lr?eo{(%oMmr;}QW#Mz{&h%DC88-% zP-aU1W5D#Sk+%8A0<~6Chj_o7QxsZU!nQWN!nr%y2!4x<8S!~Tn1DuJBaOSL|A1@O zbLP@uT4Sr5R(ar?Q4_*)>X(h6TJrESUCuG)3iex@(Q~iY%?}0v;=VLfy-7Jf2bHU? zGe8LvVg@Hjyq03{aHm#UE&x11yi0^it&h+KBy!peKN{DuhZJdBrY=qnwk z9-&}H!R=w>{nV<*wbl_vo#)sHoY6Dtk(vuq$Z(SGkn4x=_k2{YtJDJA_i$H1?+s?8 z7cuQ>(Chi8pU*FGfP_2)jP1}%_;+t>!3+Kn+(XMU^@xL17HGe8{?&h_Ot9bc@1tR9 zz?2O!wr;@d10YaxO$H-Rtl`6Xxkb*vj1CG4dO(>$!;Ifh;>vrC9qmPz{>eKI?3{dw&)OBHHaP3ysk?I-ARykX(S>3JT$enzB~u z&-LRti4pWSkYc>dnclpa-4x#t=u!Bm3XgaHzpwAV4DgpE{dU}34x*2OU#0+Valad* zUzrr#`WQw_*wJMysS;=9DM~V=W!Vyvfn>B3;wqUD#s3&MFldCeF)j8b=0)3;p(7#Z zw7j8wG35CBe)h8=UMPlasdtu}#6BX3V>M0b`S~stonMM$=-^2t{&0dS@hdIJ=yBCz zvr8#jC`rhZ(93IheVL6AV2JB%_!xkH39G_$VU5tbl(oZ)KyAB?m~bC|Nwct1GfFzT z{tm;bz@qqzw!@@y=T(Qkjgzc>Q4AHcIVOmO>*8I)A`YxFHRI}z06;ZWj z@LTqV|~c|H2-q3GS4DoJn$_u*s7#EBz7i|$NcwNcL+JjvtaeVrH(3*R>GPI~a!1Iw5X|99Ds>lfmRKjrmy zg7H(!d==^`lCQindx!0MZ3oDE28cphJMl4Bk2}KL2b;Jc@?Zq~+SxmI$*UpOu1ao1 zG5=SYNR@aaPqCjNJ^Donb28c~@qZ5Zxl{SeDuq`&{Pj$4p6Ljkn^(@)vbbeYx$Y6y zE?x4Td<>de)kn64fcynXBa)OJ9?O~bx&#v64ZpxR$-S@kS-onW-3oycB;f1=xv9zf z_ycdy8I923*;_OIJ5s!1_}RPW@z8vH3=MzVwsQ^9+oS;AZo8=O8Jb~)CqukzQqClyF?7GoSDd9`EtP2Q>!MHnLT6J^PguqVZb z&o-rWky1@{nNmm%5ql(&PnRfbAwB|X-ci5cTQXI_`e}VbGIffTyjo3&KKLer;jYdb z<>!kT;KOE%#Lp5J)zqg57X%M?o1L=L+#*;+wz6P}`H%nXkv6&R!WB-`cdAAR)BZmFq2+0LXdA_nVcQ96GV+tBCTArDTF zrmS%02U?JAy(!BJxERbilaB}L{o~R9Kjwrz7!x3uWL-4hP`4JD>rmb^D|Hh{(o*xA9O z$)D*t{!_WyJmN8Yi{GJq;H-2ik+^sUKs;R6fM(RR0#foSgw}QVPWY54&uqzB%&-_J zP$_VqxIo6H%P1yY=M?xORawj_^CcFeUjd}yA&G;GT1?7gR5fgY*Bron?$|%8frg_qY1kp|yfgD(j~*zy?50Jh zh~AzrDVI(ih_1DM9m>{JaGNsT1AJ{w>2m6d>bjSgB*Tynr<%lm_bM^Um!syR^D*N~ z&BP(VlM0^IV0tUbPc+NOfe{C4R$WvSJG{0PYqI@fkkxZBaXZyzH;F-bYr@gZKO1fF zLGC5xE9%Ac8aBuCVEu6o8!lAB^InM^BO1s2(uv~f!sUW4a&~Y%AW84Yco*&v{qsk1 zFEMAS7FCWa8xP-LBVV`vryoe0|H7$$S7CpMKSV#xd-x1=zfwmB)e`aY&skN8&Fwf4 zK|4JSio``(W*N#!i(&ybI;af&A? zQTQvBBg&6vM8|SZ@S;;oy`{6D?-55i)G~REn@#;l zVS~6}MXNq1z*dEYZtFb)oGkF15{<_w9^r*{!3&5kryS}PQ==ad@Cn?O5DP)T@B^a9 zvEbtRqV$XDdP%nR0+?s+9O7+`w?7Z4)EN{@hAyB6k_CvjXe&g5VF8l{RgpvG178xd zL1haJJf``^4{z9(CcNO|W~hm|46*64Zr>2u8=UVL^^g;g=WQb{tlvWCe0^BlgP>aD zoZ2~n%fij{cqmQrvdrJOcXf_&0?xF*KXTYpfRg3Ew?( zRP43o>W}3=PN@7luA{fccf$d6g=@FgJe$8*rrux1JfPx6&~0l+v;CVT04RMpGK(F* zQuIl`36ZV^V5&bgb6i`I`=w!A#!rqg+mxiQgR@t{0^Jr>XVRfjLlRHyucuq4557?g zhP!+UmkDu@SWQUovpjPnL|DmkRnV>%mpUh9&MN#jaPle5^=$C@{(8CT_xbVqxY_;r a@&0((?f3uu^!ar8b(hPV^ae3R0{K7V0M7sb diff --git a/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala b/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala index 54eaea206f..2944e141af 100644 --- a/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala +++ b/src/test/scala/edu/ie3/simona/model/participant/PvModelITHelper.scala @@ -75,7 +75,7 @@ trait PvModelITHelper extends PvInputTestData { } def getResultsData: Map[ZonedDateTime, Map[String, Power]] = { - val fileName = "_pv/it/results2.tar.gz" + val fileName = "_pv/it/results.tar.gz" val csvRecords: Iterable[CSVRecord] = getCsvRecords(fileName) val headers = Array( From fe36cef41c09e9142e1c4cd3e0713f8470ee5f60 Mon Sep 17 00:00:00 2001 From: Sebastian Peter Date: Mon, 3 Feb 2025 14:11:49 +0100 Subject: [PATCH 102/102] Adapting comment for clarity Signed-off-by: Sebastian Peter --- .../scala/edu/ie3/simona/model/thermal/ThermalHouse.scala | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala b/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala index ff2981fdfd..22cf302028 100644 --- a/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala +++ b/src/main/scala/edu/ie3/simona/model/thermal/ThermalHouse.scala @@ -134,8 +134,11 @@ final case class ThermalHouse( } /** Calculate the needed energy to change from start temperature to target - * temperature. In edge cases the temperatureDelta can be negative. Then the - * temperatureDelta is set to zero, resulting in an energy demand of zeroKWh. + * temperature. + * + * In edge cases, i.e. within the tolerance margin of target temperatures, + * the temperature difference can be negative. For these cases we set the + * temperature difference to zero, resulting in an energy demand of 0 kWh. * * @param targetTemperature * The target temperature to reach