From fbc73f82c99558e9803ad8b07d677033100a11fa Mon Sep 17 00:00:00 2001 From: lutepickle <28810-lutepickle@users.noreply.gitgud.io> Date: Tue, 16 Aug 2022 06:44:58 -0700 Subject: [PATCH 01/15] Add the XML header to the top of the cum tale, apparently some mods care. --- 1.3/Defs/TaleDefs/Tales_Cum.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/1.3/Defs/TaleDefs/Tales_Cum.xml b/1.3/Defs/TaleDefs/Tales_Cum.xml index b5a37c7..105f2b2 100644 --- a/1.3/Defs/TaleDefs/Tales_Cum.xml +++ b/1.3/Defs/TaleDefs/Tales_Cum.xml @@ -1,3 +1,4 @@ + CameInside From 177f941d93d7ae7fa86ef3ba6c9fb974216fe14a Mon Sep 17 00:00:00 2001 From: lutepickle <28810-lutepickle@users.noreply.gitgud.io> Date: Tue, 16 Aug 2022 18:48:34 -0700 Subject: [PATCH 02/15] Leading slashes in patch XMLs --- 1.3/Patches/Drugs.xml | 4 +-- 1.3/Patches/Hediffs_PrivateParts.xml | 18 ++++++------ 1.3/Patches/Hediffs_PrivateParts_Animal.xml | 16 +++++------ 1.3/Patches/Hediffs_PrivateParts_Breasts.xml | 10 +++---- 1.3/Patches/Item_Resource_Stuffs.xml | 10 +++---- 1.3/Patches/PawnModExtensions.xml | 2 +- 1.3/Patches/PawnModExtensions_Animals.xml | 28 +++++++++---------- ...ediffs_PrivateParts_Animal_RaceSupport.xml | 14 +++++----- ...diffs_PrivateParts_Breasts_RaceSupport.xml | 16 +++++------ ...ffs_PrivateParts_Humanlike_RaceSupport.xml | 12 ++++---- 10 files changed, 65 insertions(+), 65 deletions(-) diff --git a/1.3/Patches/Drugs.xml b/1.3/Patches/Drugs.xml index f601a1c..6f53daf 100644 --- a/1.3/Patches/Drugs.xml +++ b/1.3/Patches/Drugs.xml @@ -2,14 +2,14 @@ - Defs/ThingDef[defName="RJW_FertPill"]/ingestible/outcomeDoers + /Defs/ThingDef[defName="RJW_FertPill"]/ingestible/outcomeDoers
  • - Defs/ThingDef[defName="RJW_Contraceptive"]/ingestible/outcomeDoers + /Defs/ThingDef[defName="RJW_Contraceptive"]/ingestible/outcomeDoers
  • diff --git a/1.3/Patches/Hediffs_PrivateParts.xml b/1.3/Patches/Hediffs_PrivateParts.xml index 662def7..b68a104 100644 --- a/1.3/Patches/Hediffs_PrivateParts.xml +++ b/1.3/Patches/Hediffs_PrivateParts.xml @@ -9,7 +9,7 @@ - Defs/rjw.HediffDef_PartBase[defName="Vagina"] + /Defs/rjw.HediffDef_PartBase[defName="Vagina"]
  • @@ -31,7 +31,7 @@ - Defs/rjw.HediffDef_PartBase[defName="GenericVagina"] + /Defs/rjw.HediffDef_PartBase[defName="GenericVagina"]
  • @@ -51,7 +51,7 @@ - Defs/rjw.HediffDef_PartBase[defName="HydraulicVagina"] + /Defs/rjw.HediffDef_PartBase[defName="HydraulicVagina"]
  • @@ -65,7 +65,7 @@ - Defs/rjw.HediffDef_PartBase[defName="BionicVagina"] + /Defs/rjw.HediffDef_PartBase[defName="BionicVagina"]
  • @@ -79,7 +79,7 @@ - Defs/rjw.HediffDef_PartBase[defName="ArchotechVagina"] + /Defs/rjw.HediffDef_PartBase[defName="ArchotechVagina"]
  • @@ -100,7 +100,7 @@ - Defs/rjw.HediffDef_PartBase[defName="Anus"] + /Defs/rjw.HediffDef_PartBase[defName="Anus"]
  • @@ -111,7 +111,7 @@ - Defs/rjw.HediffDef_PartBase[defName="HydraulicAnus"] + /Defs/rjw.HediffDef_PartBase[defName="HydraulicAnus"]
  • @@ -122,7 +122,7 @@ - Defs/rjw.HediffDef_PartBase[defName="BionicAnus"] + /Defs/rjw.HediffDef_PartBase[defName="BionicAnus"]
  • @@ -133,7 +133,7 @@ - Defs/rjw.HediffDef_PartBase[defName="ArchotechAnus"] + /Defs/rjw.HediffDef_PartBase[defName="ArchotechAnus"]
  • diff --git a/1.3/Patches/Hediffs_PrivateParts_Animal.xml b/1.3/Patches/Hediffs_PrivateParts_Animal.xml index 8ffacb0..723eafc 100644 --- a/1.3/Patches/Hediffs_PrivateParts_Animal.xml +++ b/1.3/Patches/Hediffs_PrivateParts_Animal.xml @@ -11,7 +11,7 @@ - Defs/rjw.HediffDef_PartBase[defName="DogVagina"] + /Defs/rjw.HediffDef_PartBase[defName="DogVagina"]
  • @@ -32,7 +32,7 @@ - Defs/rjw.HediffDef_PartBase[defName="CatVagina"] + /Defs/rjw.HediffDef_PartBase[defName="CatVagina"]
  • @@ -54,7 +54,7 @@ - Defs/rjw.HediffDef_PartBase[defName="HorseVagina"] + /Defs/rjw.HediffDef_PartBase[defName="HorseVagina"]
  • @@ -77,7 +77,7 @@ - Defs/rjw.HediffDef_PartBase[defName="DragonVagina"] + /Defs/rjw.HediffDef_PartBase[defName="DragonVagina"]
  • @@ -98,7 +98,7 @@ - Defs/rjw.HediffDef_PartBase[defName="NarrowVagina"] + /Defs/rjw.HediffDef_PartBase[defName="NarrowVagina"]
  • @@ -119,7 +119,7 @@ - Defs/rjw.HediffDef_PartBase[defName="RodentVagina"] + /Defs/rjw.HediffDef_PartBase[defName="RodentVagina"]
  • @@ -140,7 +140,7 @@ - Defs/rjw.HediffDef_PartBase[defName="SlimeVagina"] + /Defs/rjw.HediffDef_PartBase[defName="SlimeVagina"]
  • @@ -161,7 +161,7 @@ - Defs/rjw.HediffDef_PartBase[defName="DemonVagina"] + /Defs/rjw.HediffDef_PartBase[defName="DemonVagina"]
  • diff --git a/1.3/Patches/Hediffs_PrivateParts_Breasts.xml b/1.3/Patches/Hediffs_PrivateParts_Breasts.xml index b3b514b..fff7a18 100644 --- a/1.3/Patches/Hediffs_PrivateParts_Breasts.xml +++ b/1.3/Patches/Hediffs_PrivateParts_Breasts.xml @@ -3,7 +3,7 @@ - Defs/rjw.HediffDef_PartBase[defName="Breasts"] + /Defs/rjw.HediffDef_PartBase[defName="Breasts"]
  • @@ -15,7 +15,7 @@ - Defs/rjw.HediffDef_PartBase[defName="HydraulicBreasts"] + /Defs/rjw.HediffDef_PartBase[defName="HydraulicBreasts"]
  • @@ -27,7 +27,7 @@ - Defs/rjw.HediffDef_PartBase[defName="BionicBreasts"] + /Defs/rjw.HediffDef_PartBase[defName="BionicBreasts"]
  • @@ -39,7 +39,7 @@ - Defs/rjw.HediffDef_PartBase[defName="ArchotechBreasts"] + /Defs/rjw.HediffDef_PartBase[defName="ArchotechBreasts"]
  • @@ -51,7 +51,7 @@ - Defs/rjw.HediffDef_PartBase[defName="SlimeBreasts"] + /Defs/rjw.HediffDef_PartBase[defName="SlimeBreasts"]
  • diff --git a/1.3/Patches/Item_Resource_Stuffs.xml b/1.3/Patches/Item_Resource_Stuffs.xml index 9a4a571..2bdc062 100644 --- a/1.3/Patches/Item_Resource_Stuffs.xml +++ b/1.3/Patches/Item_Resource_Stuffs.xml @@ -2,35 +2,35 @@ - Defs/ThingDef[defName="Cloth"]/stuffProps/statFactors + /Defs/ThingDef[defName="Cloth"]/stuffProps/statFactors 1.0 - Defs/ThingDef[defName="Synthread"]/stuffProps/statFactors + /Defs/ThingDef[defName="Synthread"]/stuffProps/statFactors 2.0 - Defs/ThingDef[defName="DevilstrandCloth"]/stuffProps/statFactors + /Defs/ThingDef[defName="DevilstrandCloth"]/stuffProps/statFactors 0.5 - Defs/ThingDef[defName="Hyperweave"]/stuffProps/statFactors + /Defs/ThingDef[defName="Hyperweave"]/stuffProps/statFactors 0.25 - Defs/ThingDef[@Name="WoolBase"]/stuffProps/statFactors + /Defs/ThingDef[@Name="WoolBase"]/stuffProps/statFactors 1.5 diff --git a/1.3/Patches/PawnModExtensions.xml b/1.3/Patches/PawnModExtensions.xml index eb7ce03..4daadde 100644 --- a/1.3/Patches/PawnModExtensions.xml +++ b/1.3/Patches/PawnModExtensions.xml @@ -34,7 +34,7 @@ - Defs/ThingDef[defName="Human"] + /Defs/ThingDef[defName="Human"]
  • Fetus/Fetus_Default diff --git a/1.3/Patches/PawnModExtensions_Animals.xml b/1.3/Patches/PawnModExtensions_Animals.xml index 0a7547b..9c69aa8 100644 --- a/1.3/Patches/PawnModExtensions_Animals.xml +++ b/1.3/Patches/PawnModExtensions_Animals.xml @@ -27,7 +27,7 @@ - Defs/ThingDef[@Name="BigBirdThingBase"] + /Defs/ThingDef[@Name="BigBirdThingBase"]
  • Fetus/Birds/Fetus_Bird @@ -40,7 +40,7 @@ - Defs/ThingDef[defName="Chicken"] + /Defs/ThingDef[defName="Chicken"]
  • Fetus/Birds/Fetus_Bird @@ -53,7 +53,7 @@ - Defs/ThingDef[defName="Duck"] + /Defs/ThingDef[defName="Duck"]
  • Fetus/Birds/Fetus_Bird @@ -66,7 +66,7 @@ - Defs/ThingDef[defName="Goose"] + /Defs/ThingDef[defName="Goose"]
  • Fetus/Birds/Fetus_Bird @@ -79,7 +79,7 @@ - Defs/ThingDef[defName="YorkshireTerrier"] + /Defs/ThingDef[defName="YorkshireTerrier"]
  • Fetus/Canines/Fetus_Dog @@ -93,7 +93,7 @@ - Defs/ThingDef[defName="Husky"] + /Defs/ThingDef[defName="Husky"]
  • Fetus/Canines/Fetus_Dog @@ -106,7 +106,7 @@ - Defs/ThingDef[defName="LabradorRetriever"] + /Defs/ThingDef[defName="LabradorRetriever"]
  • Fetus/Canines/Fetus_Dog @@ -119,7 +119,7 @@ - Defs/ThingDef[defName="YorkshireTerrier"] + /Defs/ThingDef[defName="YorkshireTerrier"]
  • Fetus/Canines/Fetus_Dog @@ -133,7 +133,7 @@ - Defs/ThingDef[defName="Warg"] + /Defs/ThingDef[defName="Warg"]
  • Fetus/Canines/Fetus_Dog @@ -146,7 +146,7 @@ - Defs/ThingDef[@Name="ThingBaseWolf"] + /Defs/ThingDef[@Name="ThingBaseWolf"]
  • Fetus/Canines/Fetus_Dog @@ -159,7 +159,7 @@ - Defs/ThingDef[@Name="ThingBaseFox"] + /Defs/ThingDef[@Name="ThingBaseFox"]
  • Fetus/Canines/Fetus_Dog @@ -172,7 +172,7 @@ - Defs/ThingDef[defName="Pig"] + /Defs/ThingDef[defName="Pig"]
  • Fetus/Livestocks/Fetus_Pig @@ -185,7 +185,7 @@ - Defs/ThingDef[defName="WildBoar"] + /Defs/ThingDef[defName="WildBoar"]
  • Fetus/Livestocks/Fetus_Pig @@ -198,7 +198,7 @@ - Defs/ThingDef[@Name="BaseInsect"] + /Defs/ThingDef[@Name="BaseInsect"]
  • Fetus/Insects/Fetus_Insect diff --git a/1.3/RJW Menstruation Race Support/Patches/Hediffs_PrivateParts_Animal_RaceSupport.xml b/1.3/RJW Menstruation Race Support/Patches/Hediffs_PrivateParts_Animal_RaceSupport.xml index 556660e..e2a3d47 100644 --- a/1.3/RJW Menstruation Race Support/Patches/Hediffs_PrivateParts_Animal_RaceSupport.xml +++ b/1.3/RJW Menstruation Race Support/Patches/Hediffs_PrivateParts_Animal_RaceSupport.xml @@ -11,7 +11,7 @@ - Defs/rjw.HediffDef_PartBase[defName="CervineVagina"] + /Defs/rjw.HediffDef_PartBase[defName="CervineVagina"]
  • @@ -32,7 +32,7 @@ - Defs/rjw.HediffDef_PartBase[defName="CactoidVagina"] + /Defs/rjw.HediffDef_PartBase[defName="CactoidVagina"]
  • @@ -53,7 +53,7 @@ - Defs/rjw.HediffDef_PartBase[defName="TreeVagina"] + /Defs/rjw.HediffDef_PartBase[defName="TreeVagina"]
  • @@ -74,7 +74,7 @@ - Defs/rjw.HediffDef_PartBase[defName="PistilVagina"] + /Defs/rjw.HediffDef_PartBase[defName="PistilVagina"]
  • @@ -95,7 +95,7 @@ - Defs/rjw.HediffDef_PartBase[defName="NephilaSlimeVagina"] + /Defs/rjw.HediffDef_PartBase[defName="NephilaSlimeVagina"]
  • @@ -116,7 +116,7 @@ - Defs/rjw.HediffDef_PartBase[defName="GhostVagina"] + /Defs/rjw.HediffDef_PartBase[defName="GhostVagina"]
  • @@ -137,7 +137,7 @@ - Defs/rjw.HediffDef_PartBase[defName="NecroVagina"] + /Defs/rjw.HediffDef_PartBase[defName="NecroVagina"]
  • diff --git a/1.3/RJW Menstruation Race Support/Patches/Hediffs_PrivateParts_Breasts_RaceSupport.xml b/1.3/RJW Menstruation Race Support/Patches/Hediffs_PrivateParts_Breasts_RaceSupport.xml index f4b4c61..cd1f6cc 100644 --- a/1.3/RJW Menstruation Race Support/Patches/Hediffs_PrivateParts_Breasts_RaceSupport.xml +++ b/1.3/RJW Menstruation Race Support/Patches/Hediffs_PrivateParts_Breasts_RaceSupport.xml @@ -4,7 +4,7 @@ - Defs/rjw.HediffDef_PartBase[defName="BigRaceBreats"] + /Defs/rjw.HediffDef_PartBase[defName="BigRaceBreats"]
  • @@ -16,7 +16,7 @@ - Defs/rjw.HediffDef_PartBase[defName="OrcBreasts"] + /Defs/rjw.HediffDef_PartBase[defName="OrcBreasts"]
  • @@ -28,7 +28,7 @@ - Defs/rjw.HediffDef_PartBase[defName="GhoulBreasts"] + /Defs/rjw.HediffDef_PartBase[defName="GhoulBreasts"]
  • @@ -40,7 +40,7 @@ - Defs/rjw.HediffDef_PartBase[defName="GhostBreasts"] + /Defs/rjw.HediffDef_PartBase[defName="GhostBreasts"]
  • @@ -52,7 +52,7 @@ - Defs/rjw.HediffDef_PartBase[defName="NecroBreasts"] + /Defs/rjw.HediffDef_PartBase[defName="NecroBreasts"]
  • @@ -64,7 +64,7 @@ - Defs/rjw.HediffDef_PartBase[defName="NephilaBreasts"] + /Defs/rjw.HediffDef_PartBase[defName="NephilaBreasts"]
  • @@ -76,7 +76,7 @@ - Defs/rjw.HediffDef_PartBase[defName="NephilaSlimeBreasts"] + /Defs/rjw.HediffDef_PartBase[defName="NephilaSlimeBreasts"]
  • @@ -88,7 +88,7 @@ - Defs/rjw.HediffDef_PartBase[defName="UdderBreasts"] + /Defs/rjw.HediffDef_PartBase[defName="UdderBreasts"]
  • diff --git a/1.3/RJW Menstruation Race Support/Patches/Hediffs_PrivateParts_Humanlike_RaceSupport.xml b/1.3/RJW Menstruation Race Support/Patches/Hediffs_PrivateParts_Humanlike_RaceSupport.xml index e0d0729..2629d3b 100644 --- a/1.3/RJW Menstruation Race Support/Patches/Hediffs_PrivateParts_Humanlike_RaceSupport.xml +++ b/1.3/RJW Menstruation Race Support/Patches/Hediffs_PrivateParts_Humanlike_RaceSupport.xml @@ -9,7 +9,7 @@ - Defs/rjw.HediffDef_PartBase[defName="ElfVagina"] + /Defs/rjw.HediffDef_PartBase[defName="ElfVagina"]
  • @@ -30,7 +30,7 @@ - Defs/rjw.HediffDef_PartBase[defName="ElfAnus"] + /Defs/rjw.HediffDef_PartBase[defName="ElfAnus"]
  • @@ -41,7 +41,7 @@ - Defs/rjw.HediffDef_PartBase[defName="OrcVagina"] + /Defs/rjw.HediffDef_PartBase[defName="OrcVagina"]
  • @@ -62,7 +62,7 @@ - Defs/rjw.HediffDef_PartBase[defName="OrcAnus"] + /Defs/rjw.HediffDef_PartBase[defName="OrcAnus"]
  • @@ -75,7 +75,7 @@ - Defs/rjw.HediffDef_PartBase[defName="GhoulVagina"] + /Defs/rjw.HediffDef_PartBase[defName="GhoulVagina"]
  • @@ -96,7 +96,7 @@ - Defs/rjw.HediffDef_PartBase[defName="GhoulAnus"] + /Defs/rjw.HediffDef_PartBase[defName="GhoulAnus"]
  • From d98a102d44bb41c9e254f1800ccf4cf764c27bcd Mon Sep 17 00:00:00 2001 From: lutepickle <28810-lutepickle@users.noreply.gitgud.io> Date: Wed, 17 Aug 2022 06:37:30 -0700 Subject: [PATCH 03/15] Catch pawns that are pregnant but not with BasePregnancy (e.g. vanilla animal pregnancy) --- .../RJW_Menstruation/HediffComps/HediffComp_Breast.cs | 2 ++ .../RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs | 5 +++-- 1.3/source/RJW_Menstruation/RJW_Menstruation/Utility.cs | 4 +++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs index a275479..49e3905 100644 --- a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs +++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs @@ -306,6 +306,8 @@ namespace RJW_Menstruation else newNippleProgress = 0f; + if (newNippleProgress < 0) newNippleProgress = 0; + if (newNippleProgress == nippleProgress) return; // Nothing to change else if (newNippleProgress > nippleProgress) { diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs index f4445f9..8d69458 100644 --- a/1.3/source/RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs +++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs @@ -57,8 +57,9 @@ namespace RJW_Menstruation if (__state == null || __state.Pregnancy != null) return; // It was pregnant, but not anymore. This probably means the pregnancy was destroyed by e.g. a mech implant Pawn pawn = props.partner; - Hediff_BasePregnancy newestPregnancy = pawn.health.hediffSet.GetHediffs().MaxBy(hediff => hediff.loadID); - if (newestPregnancy == null) return; + IEnumerable pregnancies = pawn.health.hediffSet.GetHediffs(); + if (!pregnancies.Any()) return; + Hediff_BasePregnancy newestPregnancy = pregnancies.MaxBy(hediff => hediff.loadID); if (pawn.GetMenstruationComps().Any(comp => comp.Pregnancy == newestPregnancy)) return; // One of the wombs did get it else __state.Pregnancy = newestPregnancy; diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/Utility.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/Utility.cs index 5e4ab93..1d74483 100644 --- a/1.3/source/RJW_Menstruation/RJW_Menstruation/Utility.cs +++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/Utility.cs @@ -138,7 +138,9 @@ namespace RJW_Menstruation public static float GetFarthestPregnancyProgress(this Pawn pawn) { - return pawn.health.hediffSet.GetHediffs().MaxBy(hediff => hediff.GestationProgress)?.GestationProgress ?? -1; + IEnumerable pregnancies = pawn.health.hediffSet.GetHediffs(); + if (!pregnancies.Any()) return -1; + else return pregnancies.MaxBy(hediff => hediff.GestationProgress)?.GestationProgress ?? -1; } public static float GetPregnancyProgress(this HediffComp_Menstruation comp) From 08e3a2fd51fe0bc7f41faa12df87a24a53cf3656 Mon Sep 17 00:00:00 2001 From: lutepickle <28810-lutepickle@users.noreply.gitgud.io> Date: Wed, 17 Aug 2022 15:55:28 -0700 Subject: [PATCH 04/15] Remove a bit of namespace from CumOut --- .../RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs index fc07cb6..f7cfa17 100644 --- a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs +++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs @@ -823,7 +823,7 @@ namespace RJW_Menstruation if (cums.NullOrEmpty()) return; if (TotalCum > Props.maxCumCapacity * parent.pawn.BodySize) leakfactor = Math.Min(1 + (TotalCum - Props.maxCumCapacity * parent.pawn.BodySize) / 10, 2f); if (absorber != null && absorber.dirty && !absorber.LeakAfterDirty) leakfactor = 0f; - if (parent.pawn.jobs?.curJob?.def == rjw.xxx.knotted) leakfactor = 0f; + if (parent.pawn.jobs?.curJob?.def == xxx.knotted) leakfactor = 0f; List removecums = new List(); foreach (Cum cum in cums) { From 973e83c8f186487536556d85c0eafa8cc08b9331 Mon Sep 17 00:00:00 2001 From: lutepickle <28810-lutepickle@users.noreply.gitgud.io> Date: Thu, 18 Aug 2022 06:46:34 -0700 Subject: [PATCH 05/15] Change GetHARComp to return a ThingComp, since using a type that might not be loaded will cause an error upon trying to open the dev actions --- 1.3/Assemblies/RJW_Menstruation.dll | Bin 164352 -> 164352 bytes .../RJW_Menstruation/HARCompatibility.cs | 11 ++++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/1.3/Assemblies/RJW_Menstruation.dll b/1.3/Assemblies/RJW_Menstruation.dll index 189a970c97bffaa08834d475b21c68f26d59a60d..b536c31c2445e7d6915a082b76a086387ea86f6d 100644 GIT binary patch delta 18768 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 LZs|6bw$c4RYMukd diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/HARCompatibility.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/HARCompatibility.cs index 863eaa4..be41fd1 100644 --- a/1.3/source/RJW_Menstruation/RJW_Menstruation/HARCompatibility.cs +++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/HARCompatibility.cs @@ -14,15 +14,16 @@ namespace RJW_Menstruation return pawn?.def is ThingDef_AlienRace; } - public static AlienPartGenerator.AlienComp GetHARComp(this Pawn pawn) + // Can't have it be a AlienPartGenerator.AlienComp due to the way the dev actions look for functions + public static ThingComp GetHARComp(this Pawn pawn) { return pawn?.TryGetComp(); } public static void CopyHARProperties(Pawn baby, Pawn original) { - AlienPartGenerator.AlienComp babyHARComp = baby.GetHARComp(); - AlienPartGenerator.AlienComp originalHARComp = original.GetHARComp(); + AlienPartGenerator.AlienComp babyHARComp = (AlienPartGenerator.AlienComp)baby.GetHARComp(); + AlienPartGenerator.AlienComp originalHARComp = (AlienPartGenerator.AlienComp)original.GetHARComp(); if (babyHARComp == null || originalHARComp == null) return; babyHARComp.crownType = originalHARComp.crownType; @@ -37,8 +38,8 @@ namespace RJW_Menstruation // HAR doesn't populate variants until the graphics are called for, so this has to happen late public static void CopyHARPropertiesPostBirth(Pawn baby, Pawn original) { - AlienPartGenerator.AlienComp babyHARComp = baby.GetHARComp(); - AlienPartGenerator.AlienComp originalHARComp = original.GetHARComp(); + AlienPartGenerator.AlienComp babyHARComp = (AlienPartGenerator.AlienComp)baby.GetHARComp(); + AlienPartGenerator.AlienComp originalHARComp = (AlienPartGenerator.AlienComp)original.GetHARComp(); if (babyHARComp == null || originalHARComp == null) return; if (originalHARComp.addonVariants != null) // Testing has shown that the addons are valid by this point, but it's better to be safe babyHARComp.addonVariants = new List(originalHARComp.addonVariants); From 6592c3b073d8496a346a58c6293615016980802a Mon Sep 17 00:00:00 2001 From: lutepickle <28810-lutepickle@users.noreply.gitgud.io> Date: Thu, 18 Aug 2022 06:50:01 -0700 Subject: [PATCH 06/15] Update changelog, bump manifest version to 1.0.7.2 --- About/Manifest.xml | 2 +- changelogs.txt | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/About/Manifest.xml b/About/Manifest.xml index 8984142..b40341b 100644 --- a/About/Manifest.xml +++ b/About/Manifest.xml @@ -1,7 +1,7 @@ RJW Menstruation - 1.0.7.1 + 1.0.7.2 diff --git a/changelogs.txt b/changelogs.txt index 9dbd28c..954838e 100644 --- a/changelogs.txt +++ b/changelogs.txt @@ -1,3 +1,6 @@ +Version 1.0.7.2 + - Fix errors when trying to open dev actions when HAR is not installed + Version 1.0.7.1 - Null reference error fix for multiple wombs when one is pregnant. - Fix the progress bar on pregnancy again. Also make undiscovered pregnancies a little more subtle. From 1cbe5576211b80cbad76829f8d19e65a48ccae61 Mon Sep 17 00:00:00 2001 From: lutepickle <28810-lutepickle@users.noreply.gitgud.io> Date: Thu, 18 Aug 2022 07:53:39 -0700 Subject: [PATCH 07/15] Add the breast error thing to the changelog, too --- changelogs.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/changelogs.txt b/changelogs.txt index 954838e..e97ea21 100644 --- a/changelogs.txt +++ b/changelogs.txt @@ -1,5 +1,6 @@ Version 1.0.7.2 - Fix errors when trying to open dev actions when HAR is not installed + - Fix "error processing breasts" for pawns with vanilla pregnancy (e.g. animals) Version 1.0.7.1 - Null reference error fix for multiple wombs when one is pregnant. From 5e788df7941b188e472d6ee8fc7f5c6b1f86c036 Mon Sep 17 00:00:00 2001 From: lutepickle <28810-lutepickle@users.noreply.gitgud.io> Date: Thu, 18 Aug 2022 08:41:05 -0700 Subject: [PATCH 08/15] Just eliminate GetHARComp instead of messing with casting --- .../RJW_Menstruation/HARCompatibility.cs | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/HARCompatibility.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/HARCompatibility.cs index be41fd1..84d1f62 100644 --- a/1.3/source/RJW_Menstruation/RJW_Menstruation/HARCompatibility.cs +++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/HARCompatibility.cs @@ -14,16 +14,10 @@ namespace RJW_Menstruation return pawn?.def is ThingDef_AlienRace; } - // Can't have it be a AlienPartGenerator.AlienComp due to the way the dev actions look for functions - public static ThingComp GetHARComp(this Pawn pawn) - { - return pawn?.TryGetComp(); - } - public static void CopyHARProperties(Pawn baby, Pawn original) { - AlienPartGenerator.AlienComp babyHARComp = (AlienPartGenerator.AlienComp)baby.GetHARComp(); - AlienPartGenerator.AlienComp originalHARComp = (AlienPartGenerator.AlienComp)original.GetHARComp(); + AlienPartGenerator.AlienComp babyHARComp = baby?.TryGetComp(); + AlienPartGenerator.AlienComp originalHARComp = original?.TryGetComp(); if (babyHARComp == null || originalHARComp == null) return; babyHARComp.crownType = originalHARComp.crownType; @@ -38,8 +32,8 @@ namespace RJW_Menstruation // HAR doesn't populate variants until the graphics are called for, so this has to happen late public static void CopyHARPropertiesPostBirth(Pawn baby, Pawn original) { - AlienPartGenerator.AlienComp babyHARComp = (AlienPartGenerator.AlienComp)baby.GetHARComp(); - AlienPartGenerator.AlienComp originalHARComp = (AlienPartGenerator.AlienComp)original.GetHARComp(); + AlienPartGenerator.AlienComp babyHARComp = baby?.TryGetComp(); + AlienPartGenerator.AlienComp originalHARComp = original?.TryGetComp(); if (babyHARComp == null || originalHARComp == null) return; if (originalHARComp.addonVariants != null) // Testing has shown that the addons are valid by this point, but it's better to be safe babyHARComp.addonVariants = new List(originalHARComp.addonVariants); From 0b272c1e5bac2f049f65cab126303aebf133f607 Mon Sep 17 00:00:00 2001 From: lutepickle <28810-lutepickle@users.noreply.gitgud.io> Date: Sun, 21 Aug 2022 12:26:17 -0700 Subject: [PATCH 09/15] Don't end mech pregnancies on removal --- 1.3/Assemblies/RJW_Menstruation.dll | Bin 164352 -> 164352 bytes .../HediffComps/HediffComp_Menstruation.cs | 3 ++- changelogs.txt | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/1.3/Assemblies/RJW_Menstruation.dll b/1.3/Assemblies/RJW_Menstruation.dll index b536c31c2445e7d6915a082b76a086387ea86f6d..8477c8f7e5cefd37485dd5ae2ef8c5e699b9da03 100644 GIT binary patch delta 32782 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 diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs index f7cfa17..8df870a 100644 --- a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs +++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs @@ -627,7 +627,8 @@ namespace RJW_Menstruation Log.Warning($"Attempted to remove menstruation comp from wrong pawn ({parent.pawn})."); return; } - pregnancy?.Miscarry(); + if (!(pregnancy is Hediff_MechanoidPregnancy)) + pregnancy.Miscarry(); base.CompPostPostRemoved(); } diff --git a/changelogs.txt b/changelogs.txt index e97ea21..906ad74 100644 --- a/changelogs.txt +++ b/changelogs.txt @@ -1,6 +1,7 @@ Version 1.0.7.2 - Fix errors when trying to open dev actions when HAR is not installed - Fix "error processing breasts" for pawns with vanilla pregnancy (e.g. animals) + - Removing a vagina won't end a mechanoid implant anymore. Version 1.0.7.1 - Null reference error fix for multiple wombs when one is pregnant. From 5eb73bfb2e181aac2130c858e8427c03a117baae Mon Sep 17 00:00:00 2001 From: lutepickle <28810-lutepickle@users.noreply.gitgud.io> Date: Sun, 21 Aug 2022 20:21:42 -0700 Subject: [PATCH 10/15] Have the two pregnancy progress functions return 0 on no pregnancy instead of -1 --- 1.3/source/RJW_Menstruation/RJW_Menstruation/Utility.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/Utility.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/Utility.cs index 1d74483..cb4274e 100644 --- a/1.3/source/RJW_Menstruation/RJW_Menstruation/Utility.cs +++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/Utility.cs @@ -139,13 +139,13 @@ namespace RJW_Menstruation public static float GetFarthestPregnancyProgress(this Pawn pawn) { IEnumerable pregnancies = pawn.health.hediffSet.GetHediffs(); - if (!pregnancies.Any()) return -1; - else return pregnancies.MaxBy(hediff => hediff.GestationProgress)?.GestationProgress ?? -1; + if (!pregnancies.Any()) return 0; + else return pregnancies.MaxBy(hediff => hediff.GestationProgress)?.GestationProgress ?? 0; } public static float GetPregnancyProgress(this HediffComp_Menstruation comp) { - if (comp.Pregnancy == null) return -1; + if (comp.Pregnancy == null) return 0; else return comp.Pregnancy.GestationProgress; } From e023938a415b1d8eb5bfdf4fe4d72f2ddc507947 Mon Sep 17 00:00:00 2001 From: lutepickle <28810-lutepickle@users.noreply.gitgud.io> Date: Sun, 21 Aug 2022 20:54:27 -0700 Subject: [PATCH 11/15] Add new function to test for RJW pregnancy (as opposed to a vanilla animal pregnancy), and refactor GetFarthestPregnancy into the rimworld fallback version --- .../RJW_Menstruation/HediffComps/HediffComp_Breast.cs | 4 ++-- .../RJW_Menstruation/RJW_Menstruation/Patch/GetGizmos.cs | 2 +- 1.3/source/RJW_Menstruation/RJW_Menstruation/Utility.cs | 8 +++++--- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs index 49e3905..52eda3e 100644 --- a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs +++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs @@ -265,7 +265,7 @@ namespace RJW_Menstruation } } // Scenario B: Pregnant, grow in the second half of first trimester - else if (parent.pawn.IsPregnant()) + else if (parent.pawn.IsRJWPregnant()) { float pregnancySize = Mathf.InverseLerp(breastGrowthStart, breastGrowthEnd, parent.pawn.GetFarthestPregnancyProgress()) * MaxBreastIncrement; if (breastSizeIncreased > pregnancySize) @@ -301,7 +301,7 @@ namespace RJW_Menstruation float newNippleProgress; if (ageOfLastBirth + BabyHalfAge * GenDate.TicksPerYear > parent.pawn.ageTracker.AgeBiologicalTicks) newNippleProgress = 1f; - else if (parent.pawn.IsPregnant()) + else if (parent.pawn.IsRJWPregnant()) newNippleProgress = nippleTransitions.Evaluate(parent.pawn.GetFarthestPregnancyProgress()); else newNippleProgress = 0f; diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/Patch/GetGizmos.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/Patch/GetGizmos.cs index 2c8c2c9..4c89ac0 100644 --- a/1.3/source/RJW_Menstruation/RJW_Menstruation/Patch/GetGizmos.cs +++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/Patch/GetGizmos.cs @@ -51,7 +51,7 @@ namespace RJW_Menstruation "eggs: " + comp.GetNumofEggs + "\n"; } else description += comp.GetCurStageLabel + "\n"; - if (pawn.IsPregnant()) + if (pawn.IsRJWPregnant()) { Hediff_BasePregnancy hediff = comp.Pregnancy; if (hediff != null && Utility.ShowFetusImage(hediff)) diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/Utility.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/Utility.cs index cb4274e..6b83677 100644 --- a/1.3/source/RJW_Menstruation/RJW_Menstruation/Utility.cs +++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/Utility.cs @@ -135,12 +135,14 @@ namespace RJW_Menstruation else return false; } + public static bool IsRJWPregnant(this Pawn pawn) + { + return pawn.health.hediffSet.GetHediffs().Any(); + } public static float GetFarthestPregnancyProgress(this Pawn pawn) { - IEnumerable pregnancies = pawn.health.hediffSet.GetHediffs(); - if (!pregnancies.Any()) return 0; - else return pregnancies.MaxBy(hediff => hediff.GestationProgress)?.GestationProgress ?? 0; + return pawn.health.hediffSet.GetHediffs().MaxByWithFallback(hediff => hediff.GestationProgress)?.GestationProgress ?? 0; } public static float GetPregnancyProgress(this HediffComp_Menstruation comp) From 4fc1d6b4abb7e3c0ee205cd532a022b29d11c035 Mon Sep 17 00:00:00 2001 From: lutepickle <28810-lutepickle@users.noreply.gitgud.io> Date: Sun, 21 Aug 2022 20:57:52 -0700 Subject: [PATCH 12/15] Refactor the impregnation patch postfix to use MaxByWithFallback, too --- .../RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs index 8d69458..87d61d8 100644 --- a/1.3/source/RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs +++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/Patch/RJW_Patch.cs @@ -57,11 +57,9 @@ namespace RJW_Menstruation if (__state == null || __state.Pregnancy != null) return; // It was pregnant, but not anymore. This probably means the pregnancy was destroyed by e.g. a mech implant Pawn pawn = props.partner; - IEnumerable pregnancies = pawn.health.hediffSet.GetHediffs(); - if (!pregnancies.Any()) return; - Hediff_BasePregnancy newestPregnancy = pregnancies.MaxBy(hediff => hediff.loadID); + Hediff_BasePregnancy newestPregnancy = pawn.health.hediffSet.GetHediffs().MaxByWithFallback(hediff => hediff.loadID); - if (pawn.GetMenstruationComps().Any(comp => comp.Pregnancy == newestPregnancy)) return; // One of the wombs did get it + if (newestPregnancy == null || pawn.GetMenstruationComps().Any(comp => comp.Pregnancy == newestPregnancy)) return; // One of the wombs did get it else __state.Pregnancy = newestPregnancy; } From d9dc79f107a9ca74e6af3dbec707fb4c35b055fa Mon Sep 17 00:00:00 2001 From: lutepickle <28810-lutepickle@users.noreply.gitgud.io> Date: Tue, 23 Aug 2022 08:08:25 -0700 Subject: [PATCH 13/15] Dead pawns don't get hediff ticks --- .../RJW_Menstruation/HediffComps/HediffComp_Breast.cs | 3 +-- .../HediffComps/HediffComp_Menstruation.cs | 11 ++++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs index 52eda3e..20af3cc 100644 --- a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs +++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Breast.cs @@ -166,8 +166,7 @@ namespace RJW_Menstruation { if ( !parent.pawn.IsHashIntervalTick(tickInterval) || - !parent.pawn.Spawned || // TODO: Add option to simulate off-map pawns - parent.pawn.health.Dead + !parent.pawn.Spawned // TODO: Add option to simulate off-map pawns ) { return; diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs index 8df870a..f98a4d5 100644 --- a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs +++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs @@ -1,4 +1,5 @@ using RimWorld; +using RimWorld.Planet; using rjw; using System; using System.Collections.Generic; @@ -560,7 +561,6 @@ namespace RJW_Menstruation if ( !parent.pawn.IsHashIntervalTick(tickInterval) || !parent.pawn.Spawned || // TODO: Add option to simulate off-map pawns - parent.pawn.health.Dead || (parent.pawn.IsAnimal() && !Configurations.EnableAnimalCycle) ) { @@ -1120,10 +1120,11 @@ namespace RJW_Menstruation public bool IsBreedingSeason() { if (Props.breedingSeason == SeasonalBreed.Always) return true; - Map map = parent.pawn.Map; - if (map == null) map = Find.AnyPlayerHomeMap; - if (map == null) return true; - switch (GenLocalDate.Season(map)) + + int tile = parent.pawn.Tile; + if (tile < 0) tile = Find.AnyPlayerHomeMap?.Tile ?? -1; + if (tile < 0) return true; + switch (GenLocalDate.Season(tile)) { case Season.Spring: return (Props.breedingSeason & SeasonalBreed.Spring) != 0; From b9ffcc0dc527ba4267926d1d60358b6b57115741 Mon Sep 17 00:00:00 2001 From: lutepickle <28810-lutepickle@users.noreply.gitgud.io> Date: Tue, 23 Aug 2022 08:17:41 -0700 Subject: [PATCH 14/15] Handle cycles for unspawned pawns --- .../RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs | 4 ++-- .../RJW_Menstruation/SexperienceModule/Patch/RJW_Patch.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs index f98a4d5..186c044 100644 --- a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs +++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs @@ -1248,7 +1248,6 @@ namespace RJW_Menstruation protected void BleedOut() { - //FilthMaker.TryMakeFilth(parent.pawn.Position, parent.pawn.Map, ThingDefOf.Filth_Blood,parent.pawn.Label); CumIn(parent.pawn, Rand.Range(0.02f * Configurations.BleedingAmount, 0.04f * Configurations.BleedingAmount), Translations.Menstrual_Blood, -5.0f, parent.pawn.def.race?.BloodDef ?? ThingDefOf.Filth_Blood); Cum blood = GetNotCum(Translations.Menstrual_Blood); if (blood != null) blood.Color = BloodColor; @@ -1261,6 +1260,7 @@ namespace RJW_Menstruation /// protected void MakeCumFilth(Cum cum, float amount) { + if (parent.pawn.Map == null) return; if (amount >= minmakefilthvalue) FilthMaker.TryMakeFilth(parent.pawn.Position, parent.pawn.Map, cum.FilthDef, cum.pawn?.LabelShort ?? "Unknown"); } @@ -1299,7 +1299,7 @@ namespace RJW_Menstruation protected float MakeCumFilthMixture(float amount, List cumlabels) { - + if (parent.pawn.Map == null) return 0; if (amount >= minmakefilthvalue) { FilthMaker_Colored.TryMakeFilth(parent.pawn.Position, parent.pawn.Map, VariousDefOf.FilthMixture, cumlabels, GetCumMixtureColor, false); diff --git a/1.3/source/RJW_Menstruation/SexperienceModule/Patch/RJW_Patch.cs b/1.3/source/RJW_Menstruation/SexperienceModule/Patch/RJW_Patch.cs index b8ab565..8148fc5 100644 --- a/1.3/source/RJW_Menstruation/SexperienceModule/Patch/RJW_Patch.cs +++ b/1.3/source/RJW_Menstruation/SexperienceModule/Patch/RJW_Patch.cs @@ -14,7 +14,7 @@ namespace RJW_Menstruation.Sexperience [HarmonyPatch("HasJobOnThing")] public static bool HasJobOnThing(Pawn pawn, ref bool __result) { - if (pawn.GetMenstruationComps().Any(comp => comp.DoCleanWomb && comp.TotalCumPercent > 0.001f) && pawn.Map.listerBuildings.ColonistsHaveBuilding(VariousDefOf.CumBucket)) + if (pawn.GetMenstruationComps().Any(comp => comp.DoCleanWomb && comp.TotalCumPercent > 0.001f) && (pawn.Map?.listerBuildings.ColonistsHaveBuilding(VariousDefOf.CumBucket) ?? false)) { __result = true; return false; From c1dc6827fd5c350359a68a132a9aa1bfa029a3d9 Mon Sep 17 00:00:00 2001 From: lutepickle <28810-lutepickle@users.noreply.gitgud.io> Date: Tue, 23 Aug 2022 08:30:54 -0700 Subject: [PATCH 15/15] Replace parent.pawn with Pawn everywhere --- 1.3/Assemblies/RJW_Menstruation.dll | Bin 164352 -> 163840 bytes .../Assemblies/SexperienceModule.dll | Bin 14848 -> 14848 bytes .../HediffComps/HediffComp_Breast.cs | 40 ++-- .../HediffComps/HediffComp_InducedOvulator.cs | 2 +- .../HediffComps/HediffComp_Menstruation.cs | 219 +++++++++--------- 5 files changed, 130 insertions(+), 131 deletions(-) diff --git a/1.3/Assemblies/RJW_Menstruation.dll b/1.3/Assemblies/RJW_Menstruation.dll index 8477c8f7e5cefd37485dd5ae2ef8c5e699b9da03..07cae080e012785e70c6c36c27ffee6e6126247b 100644 GIT binary patch delta 52016 zcmce7qS##$!-utP!#Y2 zQBgq!8$}dEEC?tfA}C^g6e%`T>@T%T;4kmIJ!xhre{1JonO4a@5tYkid@(Ipl?>hBdPUgVvjB&SFn)4K%E|a7rFqZ3#b;4pyzJayDGXj>q z?<0prmTI4bMcGF*+il2+b^7i_IZ72OLB1k?pqU-jvIBoty{F~W&_?5GxYCzDvvZ{K zxq+`%E1!r_2f7A?K0{?^OUhF_x4LfT?rmfWSuB!K848OD3Y@Yy;fTbBaySG>3~obg zu59q_*f}6?9_R1ve53U~&hJ*27p&xG)WpIgsR!VM;y@Jb?}zgWLC+D`vEhn=I_j*|F~J6~+Kp7TG{VI6AI8vSr_XEQHKZ--aj zKhE(Z4hNNWwz5CJxU;bHW1MsK<1Qy1ub@Z; z9Xz-FaWY8I6VI6?##H(U8I;ryyG}_nG#WJf-h@G4B2=13khF7tw_7DHt5Vf6^KCn? z_Gv50S|?G<`t5`6<$kku#?HC@Z<6?S_4L3D@TEZ|4T|N1J^(vza8^0>tZd0Q1GT61 zEXg;$F|9OqK3VdO23y$;AN(^ZRgRcUYUPkPb;aO2dXgDKO%KLq`n@FW2&tAuR-Q(l zCQG`ZJwb*vrb*egbIgz|aak5kJU6bx7kdRpktP9p|O=}S@3XacL`TaJ=4 zfLMu115S)}bKDdtqd+>M7}0rc_hF zeUQWVAXKy6#vEI2h_V4`Tlu^2TQ8b~o{dCOpc_{D5JX-J+9%v>@+5;*`wkk(Ms=m` z9}^b{qrU$T^p$oPCN5)q#HpKgQzFVoATs+XkFODrkbD$wL20PFjV4nzK~2k6l<|LN zx0pOwODydNU%i@i^_0crl1-j4Fiy%&Y6FRNV>>T0b@A9TzE|Bpwj>HO9BKmph*T(> zRe4+{M9y&;px2E{=6%$6#;1fgYn(^bb>q@ZX4EBWUwv_$Ge-!OZLri14aPFIJn1Y4 zd9qw{SJ_Uz{xQ`yemZ*MlJR}`5VF~>xlP14wZse`>MAU`xq3db=t}Tor7||N(sRq2S;fR^oE^mw>bw> z{FR9{s%Mg&@7TF&(w#hjRSc^OmKP(NPgR6}-Yuj}btNi{dA9<`d*CU!$BrKDC`3Wr zOa3RzGs30Z@*wWw{mzPv+KM3+L0pPoR044)=!Wa40-PmS1`(!2wJFv-Ba1>C&_Bud z6nO3llD61laK1kZ{SOP24I?HtH_QJXGH1KvbNtvo7_Z2YO=d}=nQf_iQ3scNi-_E!uG$?Mxda-q zv7TpPjtW*6?M_Hp+>F;(Qu-qNSkJej5_YR!+>|x!IcR$@eOi=Z6z20tNxn{?ZmT3M z6g!U>fNF__-a!ma?s-wDV(zhcUP3Y~*B#9jj0H=$S$SCIl=E$4O0tc;lxX7hpEE?l(ZPM ztO`n%!wj;572T2}`=~m!Y79|2VzvmEJy^>vt_`Q{Y>?M8gCP7c|0u8k`uT z{|r4stVV0d@EAEh#uOi8HYjJobj>n&KEu=VIf01=UvE5pUl93{*k6IfSaJ)aEy_7c zhWWq7!y4xM1`l5@_4#j+ig#PBVV?6yxy>e|zC#LGzE?l-B#qa~F*Yy9_q5cN(>U*P$7= zD9_;g4XXa%L86)G4?My!30}a{72QmRm&S|W{Vx-LHZu{p)&>c68`@xR$u3KbVdk?M zG`FVewu`lHM+>xAT605umylWO^w)9~yei>6F8*3+hL*`<@brX&rwT;DE0e|ZH%M6S zbtp@H*&AO%mMzAASF(xXLF%weB0aIi4@2##VYBB(T>&dRJ|Z^87#kC!T;=NO*-3br z-a7j_yf0mvog5}f%;LrCkVP@7_Bq+5gsm;anDPuqWV&26c5hDcd# z1YB+W5zuny$wmd+0E;msFEhkPz9r;^${`BYa7(UL)AdIIgm|o=`lKD#B1DM>l;jph z3H**3CvM#jp~o?fu%O_}zwaxErC_0PGf5n|3ani7VGQQc?G%a&u2Q(JkQB9D)IyehA7d9#`w>X)4St(Y0&!OdN&5KX)CcAzc4(641j!ScWj^zfyEVKsWv@NmTiF+&8?-LpBfU(NIA z0z%O4IjoG$Wx5r2LJ(84((d+V%IPSp=76xHJ~ThMi@={Y*mYTruHY)~;I$)1OsF+f zagev>D>7_P10oFBrfR)xN$0I~q#%D&%^1NFzes zX?}E3I=VsIK%#E&JsLoB$QE&ogc*;PRy{7U!n(QhAL}j6`eD~{y{%A8xKTVJLj4~E zcN>f$+3SQxb{$DPxk%=Ox@@6JC0^fhZ3&8tymYI_7beRXVX`+*{dr+3Kcz<2#s^wM zW{WZ9&heu8MDLPo(EvtUX!E7aYDTMx6}1+txsd=ZlvbG<5v{5@Ku2@A?rh@vNKGu> zdfHP!1$hfW#d>2k#Sf1$Spz1kvGCShj~6{cjzQbWwb* z=%rh($ml)SmTvKpnpV1&{zvJuh|bhH5U#DOwvN85SFbj!c&l7X8z8KE-Xi#1OADf8 zFe)z+6Frd*EIZ*z|FmtmrxH1$m2gY(PP|$)Vmf@aIX%6| zw;(pXsf7r>r;NfVH25aaj*uL1E|q*8@zkhNE|L|X@o}*Rr4wnCr(f~9=*2Euszu`( zsTwL(Tb;9_Gl~Ci1HG^(p)x$Z(C=#RhX2B5u^On$kV)Y0sy*8Jjp5DZ1FZpmhjx&Q3 zjAhFsoizsPIWi4-dJU9a7Rey>S5Cu?0nTbvM7cV1QEWyZ0z$L0j)9Hk2fJ>?Etm)lC->m#P=_Qk=j9&!~}-=(oSw`2ZI9_wBw#6DXUyvup}iw zrqHltDopaN!6RIbRh~rCyJY_m5}JZwSR~I@hJr6G90uwe4id?g&gf7gU9Iy+G~-jc z+WR4FD%D6TBS9q3C`w+x9b5yBPOk^bxbNN(71cQCB)M;lpkqOe$~aK7IN~?p9P|Iy z)z4DZnp?*!e(P zAlSoTvp7xdcUyYLYn7%$?w{0{hv3NS$+ZVjfaD|U)DKOqtYxYC%x(EHx`ynXp?-Z^ zI~m=Bk}a2Ym(i}2^e%HG(|u4JI-KOgy@}DcflP^FJu}r^%i07MXsBjdJgQ+93UrB+ zzY3@DQ@cjNv9+)vSo*PJ(;1S;V6W8q+F5K31u_NQ!sA6sFMA`(u9mCC&_-L(Y|#?? zKm?VXAHs0L$*@tf;>7K)<@T`I$QPd5K3Y=dsLwBN$LFfQF7L_b?JT?9BBkCegwYVr zN6Lpis?lY{Iur)Z0(HWQ_S~mFxT4tVgVZ#_bv?S+izwXVQ$Jsk)4;3Q$-8l?q{zrLQXGdmwZ83pNafSOG6l}<+ml27i;2sGrCSp-^FT|Z?a9@L;jI}XI zskJ*rwWvq#eln04Ry;TpmebPZ97V|)5%!hgwdH3R=8B8_pw=?ZZe3GuIai8y+- z{L4+lrN$zf-!#DEWM-U$(Z}7GWXXTeZiJ^_L8$3#9B%6DmfQ?co4CBE``( zMTn7YWW&|X_x6ksWqW2KPjyKf_3FLxCY_^Z+*dqQ^NcnzTIp8b9gXP_-wLGtcY+j& zX&9#icLBtNNWK@SOOa;Lvgj<>dgK0mwYvMhE_|hW={|ehN@R$Sp;NmN=%)%n zWtG}`eL~i1Bt14X72Z41J!Ds?H3Ug&P*|IbNBj2b)b&Y8cOw~J5GI*I6(<@nC)ci* zf490}eR8JeMQ(h93+UG59d`37GUkvi_0#nUe2x0YdL`;}c5DaNTb)T+S!&+>6)7Sr z%vw!Rg_Lfls6x;Ym)~E6SoYp;&(mTFjSg)d3(8Q&B8nKCP?~GDC$gDhtL|B?hCPsM z7SV*jgS-dQamC;FfrQ~AoT6xKGO0KkoVl{1ATYcki&#Ps3krte7%WyI7Klpq`e8q^u2ElppoI5Te}BN4M)5?%$6OQ9BMlLCd@x6gXw?4^5q5sfBZ5`Y zU})swVOCjdHN3*fqS0^!BPI%iEyf7{=c;EOOwt!AAh1}8o@d3S@G|Df`Xt@&MQ!Nvky22R-6DjCa4(Dc}B zLRPnK+#gGIQ%jYqt-_cEy=&FFhvFR9UpuLKO3^f)b~@an7WS~v01 zld9$6Cj+^d;s*Z9`uUGN7TGx!nnO!h1+JX6(!}Yt57Q*ZUqnu{=}H_%Z?e^tTkcN` z9{Pi5=-&e)*>xmQ?xmzVBG5dO#kU%kygy^4#h9W^%CAU-H7|(va2i%Pk8AXtGOpB=h0tV50rfS$@dg}M3rrk7TA))3;zCbW9#(&TbVfLB6 zO?-OK3Xl5t$GrHRQUGyl@xN}k=k1^sTHP%XlMt$drSeGd14&;mv`*b57BBOh-)|8q< z%42Yby0)79WJbTCR6~!0lU(O`QR_4OM56FUH4;>#decsiw|CP7TTiOmKRQHl2(_4+L-R=QO2|AMknPoklGP>#2P^0;;-6M~+7TXiQntE^wiP;e8}c3$9fCXyZwsbqSL|ASd36a7&Kn)S9 zw*x8d+ZNBCR6pF79km$7t6|*l(dSs}_7uKZ&D&lS^EC46AvK$m6V&?cv!D_B)Z+ec zpovCO&D&~UMG3YB^$D1&nw?-gL++e%YinxQsjTpt-PnKWrb*YVyxWxerfccOSr!Cb&nbF?*5q+7Erb?eg=sO0aSz7Dn3 z{+V_BwEE67&enxKJ#ea1?b}(ZdTo8M$U)J_nC{!|yi*qE%`?>jcgCnEcgCe$vup&P zC`Ioo>PHLU&8RQ>r@g^TKCHIJ!U5WHh*eCi%i3}nDy79MZN(zq%yRP$+5NlPgpkb% z>VJ0S+Ww1D`m>cKaMZ|340_2zQM-i22M0UQFmwXy--+%ZJ_FJ!!oN%1@N9hEE{L^{ zgCY#g&WR=%#OUkDf)6eBA2G#LgT+A(6mqk5lpZnzI2!7{9*YG6|Lv-zMysnSI zCi`woOSB048;f_f1P31trKgJ5G)*jgFlfd9l|M_& z^&;JAts6Dm>C?bPRT+wS!_+BG>t8@5c`=&IBRDS-r%~x8Ah*8l65kfNtp<-^8bb}9 znU zBiFhLr++VkYWS?ypu7y^^zS3e*xh^M6R9NZvT3VY97WB{#8imwR=zHEiamG*q_h7mU)B7KLfXGpg+1IY?D{hFZec}!ijnWO5dWcqq)5U;WBwgwNrM%9+n65Obw`i!m& z|Euu8ov2lu@-nJGlZd2#VaC+E_R+EDwta&!O-uXdryWElTdeXL9-c!WmRv>lyp9BY zxpG*&cYl9AP5pL%k{j=5+7(GcY^$vjrz;ObHJO$7kgz#%iK@I$tQ>2I3GQ^F)>_p`Y@AIvu|M~UJFpnlH<9)bIIYK> zv*IMd2S;)*=8X&*_FSmk=!En+W>Xo5KJx19<^dWIVD`ZdJYF4lupq4Yy7R!nG{;#)hCzoGd1b8yjJuHw?%fB7@A@ci=)2{92Bt>BXLFctFvB9 z&O}7m#nvK^K|6S(rtGBP4bCz`v??xKo_Z}eg4zOeh`|^Vue__Cdo3e*QA2>)b$CrO ziZI=sLX0HOI+P*fM4Nu}(&tdl5NceD)XNnoH(O#*`(J=BJ^`R+NA2TlMkGYjx}!|^ z*+~;b8%e$5M+|OKQeQumVZXJ>iS~_7bZ*M3hQ6L5<2{NzDR|x4xmm@cB=kG6OT&8y z#ztdONr23itW7H6GA<)&LaDaonq~h!^?}#z__@u?ujdLHpK9+sa(MMnTx!w?bEP7F zv9iS)L`|d}&W@+9>X!YPD8=blXdF|U-KJI_PT^mw^A4xM(z?Sr#kwA?e@;Kfx~8`Z z-s8fj2f}l{b^KPmQYqL5T58^+f%T>O)8Pc?mnfj_ZOR~H`ZO?0g$I^rv+Yd+5nnf{D&MHb-f#qT)h2#;0+o&4mn z%&_~Yqy2yaJU^-*9dm^KL}B)lyg#ebTip_Ink0LF0V}(%FZI>&7|7w+di|!3eM?Eo zh5*Ahqh?7mn`x>!1ghYr2|v3~AAYNS+V2qKhdzJcVeniKx}J-8#25CFJ%6f~-b%8P zirI4sR6$qH^;}l7-+qZdsDAc#W*AOzWbfZF=lNTWI=+kltiE=2P&bYz1dC=$KZj7m3f@!jk>iy( z%o@q~uv~&9hdvKjgWl)FWvM}3dm=AD#VAI|@Z&e%kJM!)C4^wKHWoGHk-@^OEQX|? z96?`h1ik<`kc#XXlA%^4dP(B?S^!Bgk%8)(S5oL5i;j*JGdM~a9e;y=>KeXaKU`x> zZBRFeOh!RNGy|ck|J{^;h0Kt8-B0korZaLVO}w9pH$0d}FX1&e2lH^+X{@;~nD-m; zUI^x4!)mN~uNg0Zg8v}qFU^?XT_9dmT97jriRTLD{Ykve!MsbvyCInO7x9(^^DcuI zsM!(BM5i*=d>72SLOfe~kTX|_*FKoXu-~m2AI!rkk+J6XV4g(09fB8VtbPMAj|VFn ziFYNK7ec%odyq4@$TimV4Ca}LHzSy5Cf=szynv-Hl$fWQGc9!%;+Y*mg@h5$70e4K zUjJZT1o37E^I8z^o?u=i@d7UeGx4%xtT_|Rvl7pk5#&rX@swa5t{9CqeS&$h#G4t+ zizD7DjfeiH^?uxjp-qAn_ga0!663+CY<-&nIOn1|DNv}Z8SPP~_cc@E-z9L&og-fw|mW+pMCvVtPXBAzpt zmrcCx!Mq&ejSc3tB%VK*hx<0n6*@1VSAQ#F?g>`Jjia&VqhMYx@h%4QT*OPr4szN} zywYG^9`S|-^8&4jSrg36C*G=HUIFp82J;GucO;lsM7*zpdBwyt<^(y|hIsazKoAp$ z&BmJYV8yn?s}AOs67S|H9s{lHC{*JMYjxc zu$*{#!MqCM^$+HCB3?}}uabCcf_a_kB&B9|FtZEsJ__dHO2Sz4M=-A&@uHO=2fGt5 zKbY5pczuF-J&89(VS(nWT@^7`1S{fBz*w_AnAe+lM}v8|hBMau5X`%dc;T&r9PCRx zrI8m9OK(47c5h?~UVq|^59SRZUR^M6Ao1=G<_#j=3&Fg>#QPwaH-rbk%y0&IIFuBp z1@ndxZ%;4}KTE)@mm8FK1o3(X^QwurBA7Rlc*nsDG}~;9BBt3DWbk_8l?U@i6K`QK zZw&GF2lG&k#u|KN)x3$v5zp1cLsMGn#uIaB6O(uoh*uZPn@GHk!MsVtJ1ltWyC)Y^ zhG9XMeBpvd(Bj^nc8Ekq4ApK1Bp>OFXkqM2Z=`hl@O@sowQzGLKN7{Itt; zEuiQ8EF*S%58BS_w@qH+*4>C=?bw5`Ylt_Jq&GoIU+fv!V^En%X9Q2F?N6ofD0SGW z%)%(LD}IxYPeZW@mc3SRJkcQ8?(R7alBb&_>ef@~QM9Gcc8BN4^l7Hi7o~o3YPdT8 zbQm9?TF=pXoaI15~HM_aSJtq`i|%+SPk3$`kjS z6*!K%SNq*ewSG^J`ocZEKMpG50NE8SQw4RRdZ@%n)`MqS@lVvlXVUqj>epwc2Da1H z9PX|0@0lzp;QKnFFsOX*s{B&CTcdd?pSg;R|lMji)2a?1pQ(+_9ZORc% ztXe;diKP25ag^iPjN+VX@n^kS??(N_;vLh-rb~>j$LMP86EKzgq2nJOT*wpZw$J9Y zrk4}k`eLAJe;C7H(*ANm)87~{glZgv8BcY<=dYwbgV&oFbF^9e&W7ID@H3ZhTI1J6 zCS|9Z|3z^&>c`Sx2_L`QONTgu7i4Ss7uRJr*Zgl~{`tj7K1Ut$WmdJgB6sTzHzGKm zC#lksM5U2LnT9&EFb;z3^o;Ohzh{Y6@Y-U@b^0CPX#l63@WN;ipU`_Vz_)obiF$aJde=D{pQmm< zm)>?Oh4BC~XV;BH7@lmXz@HpEl$Ibh59PC&vPYrhV@N6kpzCj?{&g-_ZUv^tsk*){ z%iTt1aB~eaqo_9QRCTh;@h_HC_3NyprapCjaJ6n%-}ySx`j6t(zrJ?D6 z*DQZAUX5H+B=M_Y&+Ehs6TJ8_t}*yPLHhx)#!49D>O(Bb>B)uD2}PP9X^g9=NuX}| zrp*9cep$WGAR79^Dr4ZAq_~hH%;b_xczb>jCbSRfY~rVAnA&hDh2Q>wuehO@?Ur(4 z!%X6wrX^Z@zFP3@B+OCu-*(8(gWNx^A>Oe_T#<1FBzs#^#yXOC^3@C9<^~E#b9}Jo zbEHXAXm%Y*JcUTs-H9&aCqk#($@vm{15ZpJR{vdK;^OKBZc z@wF8$-RK+8ws9$a_)wQNrZ zuw5-g$tF)3K+dT|*yu>wJMm!~?(pX{-r>W6atPYb#?NRVV^?fmd7VpH8@oz@5n648nt&FkPV51e!3e4vaOM2?rFB zVHPo7Z&Iis{CN}h5{@aP0)_r;!mR|ZqypyKPUhV{enfErd@u;l+dv#f=3lA>6tN-%5C76J84J?}pGsC-ZB=U=MZf?qDi2&;@5> zBkRl`T*h3-M;r1vhvEQdp0_XQlE^8>Al6Oh z!x*#)bx%J?mHtEq5b>yee=OjG)Vd#sX42s`E%`Xv#)T`LSl>W{-cWlJ9)f*9{qx5Z zeoVFfR6h1N){?r-R18iCZ^8(4c2`~n&*1wH&1{2V-I-<(SJuuM8dLkJ{SZiMQcLh7 zlN>7Wzsb~HKe_l&^(^SeYKx!K@B;<+&;9s2YVFT6;y*?~(!w1m{YqRahOfO;p$7jW+ezowZZcon&!BzVb1i7P%r-KOedk_+XrLXViMvz zissaQ4VUNrU9J2r)-E#Q(@AZz^^BmB8cL+6I_I~}C~MDe-T7tp>Te~*m#J;@ydmgF zb;p|f+295Cn8C)B{p#f33j@_;I?o$H8Ba9NxX$1k37Pm#z=M?$f73+gpto8C2Y1ii zb>1kbYP4TU%AroGYwG-n2S!G z@wvvRx~QPQnv27Gw4`~5E*!J#&OxT&Ee2a{`gRK8vPGibz?RW72Ekc!W3XI}MJkrI z(G{Kqw0aI$<5cUPxmgO?8V_l9-PdGm7HrWG{I>v-4-p%c3F_ECv*Kt>)cyc0Zk|FI zj*ZzZ>b-yF@mA{LKOMZI`t6^|?Qjt+dnZCwsez#!$@dd-*l`TSY|0H}fh=lVVLaYO zPVG}}RLd{5Ot^{s(4<#n+{5ZW%$uy%Udrm!FiO5BAGF(X8YYWHxZi=P4HI&)X_ycn z131R!b*X1B#pM>lXtM$PGl{hU`zw;#fR))(u)9Qc{N*mfx}KY3idQf@=H_^Xf2J$) zNo?%JAG)iZOdf;tVIyany6CT%jOpN;lWS+tBOdZkN$vsC;cZPJLXCAK!FR;b;s)HSxzMey}D>VmqwO$0~y2JR4)MHbcbscWoM;xp~q;!pfZbTR3-z&V_>eHAxv&zlZZIesle&oG0@6^%ppI zr7s}iA(#}=XCm8`xDkzuMsiI1&l=!KXan$6YAMSxVI7NDKVY+OZ%uXVx^^=Bm> zXTzqsc`wW&xiYjq+`wD&8`jA@33pmJ!eh7BUvJn_>}Ll~Y8YxHzt{RShiN^I~HXA{&GjqA!C^*n^f1{%E+rHlSG0p@6p!~9~bB_jIQ z6mqs^s%X;fN>;crytq0N+=LA>)p8eZVCkj}w`?SZ+vTqzPx zH5g4Z_~zC>62h^L*B=i-9n3`?*!hZjhs+Bi79gW5tY!;#0$yMJ7?~F)EhJWfbUeRd zZK!!4Qe2wW)^Cw{_h?iR_0A%AqxH_&^#&8KXl%UJ5Hu~ccZ$Z#15ax_ypS|&JmPD; z(_6pD#N&$4O=xAUr8wyOipDVhxv$Cd){$08{r4uGV#xC@ssGx<3lL?JnY;Pzh%zN) z7TS45{bVz57va|;jc6+(eag%`Is#y|+l1D`4|6I}7=9a32Nr%Cu?UY??=AHapAuS+OOsjZ(A%KJy(uGIwwtX>z(sC&fKe;3M28Y`qD#nIS9?h+MJ2A)3xsfAZ%>oG18F~Z#i{J?0qs36_?wc(sQxTwBWtt8zzFT5HvON%KC>| z@K|T#G$5KyY$#X34ow3+pkLb^L=6A>`qM3Vx*4rc+phcTKkKj&IbO(O>~vblpVuKZT95CiDNCA^us+ z|9azTazUFq>(55<44zYOwDKbUY(4&Pj)UJ`Uv1^Cc(GlZM6H0A5R7aidmo*2Rs922 zUR-wlmS+a&t)8(% zZJ~jGGCPsIX@JZ^bBMMQ^!n^`{bShAI3bnUL)kC5EzB`^YL?92wY+b&u!YX4S(&V= zA4y}{Rg}u?Qg%hDh3!k6n$?269Dd1RVb2y&S{Y60zrdH-;?blNnLag;WnnjTnhNT3 zlaj5^C5Oz0SCIJCp5{cE8PX~JWj5(_%pf{w5Se&E6kmE!JmX&(F}j7V0sI-GV+omAhT+rIzOD0?(P#cOlB9-h`xZhE$oS0bE1Wv z6fQo40xT>li3$r91%J_&IPXp;PGJSP^=SC})=%{MSckNQ&1f|>%f`AoE;(AT4t?9aquHb>>U0aUjU|Vko=p|tVRPcMEp8AMt zUpSeZjuDMGs1-?bM0$p3zFn;X#Cj8g9CldL#LUPuqodgtyJHaiwLEN#X16779}>;V zr++arnz;v4)vZOvVx$QDQRsRyv*l4IorI2QVVT2-o=ztEL>18}E9n^XNvCBVaqg=o z`er2hKOz&u=2i6b7EE$c|BnkJ)w_#G>Gd8&zgEc654uzO-~ggtQP{)6&~_n>5izBT z9^(?Zwu~lC2ZkI*O%JkgB$4PZBK;j`06iI9CYlWzN|E)LLT$MguH>+bY4f_miE`>P z?-fy_Jc6dNuy4G?Ig6%=X5BE5ENq>H3Rofv&Tvuz``}OujPgs4Xm;MEPPehwG1ywL z=QA%kZ0x>dYLxG(o&s#3sE{KfvgbtRs@Y`X1w>#nEE-RvV6BL6V>jZjMfa51haIVg z-bEW*Sjil!-a9djEzCdq%xDX{UFbh3dcecz0X8-{gNk1&3N8`#VJxJ)fvIBb-e0u| zrvE~QPuRwCn#(qevFjC)jp}bsbh3-nE;;hp-d<#`rae(ZHW{^#p=he$goUkWL3Cy+ zMSl}wwXoY9#Cb?m_+=5~16joRwF3oX3W(w-32}Qdi_M!&;N^M%cDQJ0TTrW#7BtSd*S&Z8!)7W|bx zME^fKih6*p8wu)aDD%G2RAhk|D)GY522rJF#1OiGF>PT6J83G@DgC|RKhcTO*JTjD zOmtF%u+UmG>)?LmZk%xUS7Gf{r#XOvw|c4Ig@Uy&i%hr^s1gp|TgHb3_~8hPcz%%{9ZVGMhPzqTkldKRBB8$|Kr6>6WrU zG+ThF2182>m=ugu3wui#;`x-W5YeBTK3&(kF#0 z<$WmaaZzL)#0d6bEXeHe1X{E@W9pSzPtpH-4kMk-MMQs|L3DgI(QU~@Uq+qD%me*2 z)@~@3>-c6s-dHRH$wbd#qQzW2gl4+RPV=j2N6@RjAeFb}=j$iqA%)JVe>jy79Fj46 zS6LN)_1=@wo@4LiU1iS$T`$nlnq6fFfW`>4EoxU;SD*=+Oh=OhQtX=SMuB?NSEcdf zAyo;x%HF|WjF}^tYeo?ojk9hl=wlldJBQuH7U74?>%AIUC1gKN*;N+7=P*^EPl4k2 z&1{`OW9pwz<831sxp$Qf;H%i%g4wD5D#}ZpX5CdbiL2~$R);-M$uzQA&%R_FXiI(D zblxox(wdk@SQU6tEK^6l1*+9iUrsJPmPeXL*#Lp|=xDG&n{+fppa}(}d5jGgXtl6% zjExXzypE~`>N{A6BL$4o(e(nA3iK8mE6_<%#BnxJpf`0iNuWvnslemx27xBj_p_r} zlj?7y$I<$IcHSy*k7(7&e3MWKX+;?(^8*5XlUI{h#n$lG1X?c8TK>AIgMId2hE}n) z{4keLX~j5nb+dYYRG_1S2;C24a73~FR{A?ej|8F3{B3SP-Q6BAlJH6XzJMn}32osY z3UsrH(9`@(Gc&vS*FyFVcC}S(FaJq1BdqM>zcka_&wmrLhp`u~Vh8!30(~veA%0n) zLL*+*s@UuNihyt77j9MTFuy9$%fjdp&L#5HBwTxwOHxxz$2k5VB4jwMK)&M~zjgph zmkGVY@yC1|4bh+A;X?LJ2+2O;F#;8aqK{XxPk6k5*zW_KyNfEAT6hKcWX`a7qKsZ+I(#Vz9rgV&8F>K#oYZi2;GWFQxKt%c7!4O)q}c+fDZ&`3kH|-_9aSt<8Ya+>EeNGa zBLq4mP?j`7pp&GDy|6T`nVDQ^Mw5`arC9<=!tXrE+f1`qTG$MgNP%XkowT@FzB1`H zf%=K!yGW}9`dKt@ppSHKvy9hC>xD2$MA1)ru$ipCv{A^k)*dZACD0X7Yh$EmnrV)e zb_vi}Xg3o>@kk_qRX6ZESHm(Y>QY zTF}$s9s)!2h~8P>Hk+pgZk|ct?;%7#5cD=t&MaZ?{1CF2GKJ`XDAIYolIV-B58z!` z1*P++5q(3H>F-W{J=2;vNxdkY+@GiIkggXL;|r(H%P z`^Iq|JG4Xf=d|*H&F0+Zw??Ytf zok(oMrIT?^6ocY`Y&YbeX9Mb1LOh^uhM+wJ=cGsv5$Rfyo-NW3B5h@F$DP0|y23h6 z<}9)u(chzp-dRL6r_Z5CE4#HSG}X#}9z(QJ&=C$wU*`yf;ykEB?-r>tdt*jh#M&9@ zp>+|(N6@uur%?Z~CZ1;{Y~---twZaEqJCvIaCl5AVk(FSeQd&cW@ORvM30VY%Z*H` zru4cfq6Y*mvs3zZk=`h1vfxZiIggKE*~wm1`J)hrkr@Ujr8-zAq#Z0Wg=lW~UB&@* z4>^vYQAWTtDy>U4-2K5bPL@S{I1fNAVkDqGWO-^7xjy%LCpahFM8kU$Jt;l z33EpL|C=a1H*OfjW)Ib@P0)ibs;Ks9q|-TV6r{^bNwcRi7U>H!Zvvf&^w7Ev`P6>> zP%Q;4e8Tk90@ku?4d{1Wh&~Hi!q&|gCzr6dM+fLp=^ZCq*+;2FUlnw{pxXsqCg^2B zzY(-W8fj*M$}BOTy3gIBD?L7fy2;oM^H39a4X*=zsnashTQRhV{}%=Zr8%4DXp7zp z8lcQ`sJb2!bXYE_-ZYvjt;GN`cUbTjh^qb?U52w(=-jxMvA0E)K37WgOrl74B^v1^ z`c@%Po15t0XRfD6CL$ zLIkHoaCVB~XNuw<5wwRWprf!eTcmFk>8C_GN8}wA-nQQA;&CH834^VKsI^cVD$>10 zda+2)5$XIAa(F;2QHw~sM0&Gub&IfbSfrN=x~hJW3sc1)7iCz2erIDpB_4{jv9jzI z7)yWUKPQ#23xe*cpmfa~qNg&6ZjAgsq=Y@$nWz*^bYT|J%27nWj3YWy=)9b^(Ne-@ z#I1(SJKO`UB`n`XlnpQ%OW3wRBt2G6A$qbk(Sj7BDS|#Oq|Q;qIU~}a2wF6gII9zg ze&3epH-bJkur-P)pS2hT?2S8vfsT!hVM41a@uVK%4P@LTA=Qv){k zris8805&#Aib<2%DluQJ8=R)6DRYL>k+@Vv}?oXcsflts%oe^Z9tt?@iO7 zzc81~Eo((|fuN(N&jY_~8r8}JiA3we7J}0?g6PDmrJyNeZwLL-va&H9I22AGdZt$J z8c`%Q!5`uGg5P2IBcSUBZv{=wdpfPDAt+4^p-DOG8M^zwNMA%=t+8lnZ?dqTECfVb zel_ehD4hl6?9(Lj{UcCn*SEph8U7LI(TKBY4PESP*J3P*8D6446%rlfCfZ^G(Q{Qq z!!w9>%_DkP=zk(KvxVk@QM9t3kH`NCNoK!@1^(tY`_hyoC+EjWw4`-iw?soAuR!=VtR{QgOO_uJ1fT82$7~H ze#Z1cYJiN64q`Pq^zTLkVYErz8Q!~@>;JAfBWwb6T1AllRY4cE=ndy8lW5NE9(hwb z`u`qjdNbBSxMGrM^mj26EeIp}M>x?@2BOo9i=dOp?f@Mmodw5WT!-{_Gf_E&bhd^N ze-t8as6X0yQjrfq=W58KpiB8va4yhL`OgD1RQ{_-51oD(ZVdo!s*nG!)8CGlbhggC zu~zv9PlT636Cxplgd)_D~|mJqd4RLV=A;h_|P*LAbz#I*V)R zWOlYtN9T*u?RLiS>o1c1l9X=GV1souqq=+j_wbBo*N3*@$;obeHfz&?G{52#vN+3S zodu#wt!Tqjhm_lMS#cRDtY+!na=VM&ucPk^%k6Gv?5N55yUXo)Y?_W%Azy3uo{rvg zmD}^#VB8LnmE2zC^-s6q2Ld}|J4)qDp&MOxkZtI?pO>=(I{Mz$)n3jH>gZBR3sWa{ zQb*bCx?3xmxhv&6WZvd+vd-*gfwU^_%<2SM#|paivUg_7bd)oEpuG#bM@QWP5O!so zb!Y(U#&+rG>(0IG-I<{q6+vdk*n2RDb#$Y>C!46F(OqWRtJvj6bhEt|vvt=r?@y|; z_hy}R)Uv~E_C74CrzX4FK5)0aFYB+v-`d}2@6TNLaDocl0yKav(b045AF&T)ANAH` zr#;*3gIQ@G4Sm`EIr}hn|8*MrPy1Kx)oe#!4GkS})IN%Rq@&3b-nC!PigDdcC5#z0 zB48WM?h)`HV@1h^vCQ0`gjywzXHfzjV%^$(WFODq9sV6+Nu9pN|GK$apo9Fb@t5tB z*{Ejurm%^cjFD^#o7GGX0jPh)gXDjecGodJ`-oeItHMD8iS-yh(XRe0gZ37*5vV?hr z*0E3X$2nAHxtWmGW$$Cr0u5gEBaGdmX-deqi9M{N?+0GCZ(=8P6jj+#+RPG`2u-o(ZDy+k z(rR=wi@TL%fkSNHOwKm5ECHc0mQbgqBs|0ly@Uqq$XP(B3|~7_Ode50$}$aQ3-psf zivlzKV-q#R zmKE%ec#3TjXbF3>dcETrc66oCWb}Vg+r_>T=pf4(Na(UaOIWA&u83Xi@l~X`l$mBe z;n>Y~s2aNDdD^ju^<1N&KyJ6!9DCW;do);)@S0;E+jOsn&Q!ncIKXzSCv*sH=!$ri z9TsRQdort|^csu3UucR7evPFxqLYr-SfM~)@!}z$IbLTqI`Sre=XirX(I5*9dBSmo zz0@eY5POupA&@qlj9-!jC;@;#7vBy~-fex_`hyLn#hs_Y^ zAgdm7(Q$(L1=4JuU`qvBVqWbC?B^%geVS_MYuJOGU{4FAnK{AU)nt6w5YFCZUuj4f zeV1JnXbE!_lC1xOfrK*wz<3-;(y*2pA2QerB+QuOXI__aidE|< zd*&dZi8^{UA=7Z088>U1PnPcIr&$*reNG7DUx!05d!1${bu_?BDF0C{2Z=B3Z;$TY0N)QXsVtW1XFb6 zn-RrMvuqu0g6s^d)X`Irond`+^k=7z(pgsbq-Ldco|Bzr@9F5{_)NoD)^&@JvHuKT z8-A7z){yzHsiZkEAmE`;+CZLVU+Ti|2T?}jR?VmhF`Z@obrdpna>iLUTStCO-DlYW z9j$744(M$iwM2LRjD4h|PXyYrO|yA0V@3vK+r;{(&GMhIR!@=e5TkkhGghV}n)5$r z8+T|jn&rP>#;1iD_Mg((8DFr4IyzChAmdB+l8#E-McBV$vv+EmrR^m9w@i7K&_PbS z=O0<=vts=_$n&vo|HRts!i09`_)n}%pe5||v_%;|v*g`c#_y(a_6r-PqeIiq@n6^| zftIqLA^Vk`+@lrv^R(p|zp{H?(9nC+R%QIoqF&O_dJN_Z%npS3m#{>P-wSM`E~K^U z0^9nsRv^6*TwvYyX^7qkF0eiVEoJjkG7W#SHTy}nggsuv*`I9j0YXdJ`kHh6Pqss# zC9J9sXO~#kE1GP|s1TrpSAhah-B;nnudR*}gc+yO&iEILeN98>#*=K#>l)gN2q8PH zp>Ol=$@q)itRuB_L&o3C_=YC?F!QmDt8BQA_Ifxzi0E@flclvMbW)(eLB6zO3lrx@ z-z4Ed{uX8^iSIwAq4|(W{N!62Dh4v}!*6S7A2f};>v0X$3v^gVT?A_TjwahIP=6hb zPws9t@-^=XS%41)4B@5k6I{Z6NO?L#<^h2Ya(d-5^X0niQ`}mF@;h{7nf81}C|{+c zc5eK(j(?#e_h>@PKG19~?zKO|!cTsvp|ATL&IsqOk2Dlm(`!GE;Cpm<7!wA*LirB~ zmojzWTR@L%NUU)!_(g%V*|G({>0{Dd#2z%fpV5Nv5ooFT84Suu9`Xsvw6PV*@nxDo zG@2rLjzE~619%&c;`sv7EMIPq;wu`2kXiYfM%gDBR&G2=X4bLM)6Zwb^6LfCW_cUG zNubp%s^cFSHoiyK%=8#C<9XVrluy%4=88b;Sf(cso0-f@PiaP-p7hLAepsN@?BSWM zGShj=X-$^t$nsY~E8K3aNKyHvg^>4b4>e zva_T~vI&7q7oYYS!PRW{?8vx0epnz9PRq>a13%Yfza~V+74i83;iDiF*oH6HWa6Et zgm2O{KY?Zme^W=>fJ*r<&GNP9(ig&}$QS6qO9Z3>=Vo@`rH!aIvy4yE(S)2OnH~8( zjc7$?1wX8#9gtP>i;ZYSW*6@Il8RWzYI5$*?8ZkmqV<_Q`DzWB+ho3P=^fy&>M)8R z|6NDlW)N!ml`vzzEYJuYeI(EwIvOVO?bT5?fqv9cy+Dq0nw6~r4HigirvIn2H-U?? z>f*=md6wB^nPDIHWdK$r-?`^`RI1PW`Tu`EKk}XPJ?Gqe&t0EqX6|!m09gO?9XGzD zdl4@(1E5J^EHmkykO9DMkd3X4tqaKjZ-vo3$b{g(umsifPEesS6K<*OnS?DNnK0{n zrG%28p29$=P+4F?BpV1et4e*M7Pt(Ay$Yiu2Ey^j?0&#N_*G#TT4P8S;5V*3Yzi$K za*2Hl{GK=mo>y!-USJNqs4`w)4%DcOmzM(v@cVC`4HcLJhZQ5T`vEy{mza`iE_mH~ z;+YG9#6Hnm%OhDXbW+(?VtrKBAB)I^p(@KB6C&oqGYW(0xIpE?q+4|T`vlU6E?11Y z^C|rexlp4py3fyrcDLIW?@tUr6`^$fRHkJ5{$D&lRBgOva^a-HbU$Ec=R(2{bp888 z_i(_E`dmms`lu}i!C+!5*a^2wUW1@SWupTxc@2hnDx33EjxYo^5mN?K9_W7MxvXHd zse3~5V3f*^Ie!*13a+SZg7c}60`Pc%j#hQS7!TQ;V!{dLOCjSy`b}Y91YHlA09_ul z+aVJn|G$rH4?>FJyvoW`1xpFce5lyUQ}vd~@RG_Lh8rzY;6Ez!OU=+vg}ubAE0|xZ zuVosXSB*c8%g~p?J(cwsaXq9A(tcMm4IfbvI34m;_Uou%%M93}GUud7%S?#C?Gd~Z zSEhEdJPZ9*b^_URxSLV2O&T6)nT4C}h*?=pV7z4xe1;!7^Mv+psg@UDvZ%0Q$gFTu zWjB#kK$4``Uhz%0RKiG=<)ma==0T~-ZjZ{)&jU$TJol#!wp77jl@0VCZFvzEsLbjV zSY%lM^(u|?I}D59GnH*k$~~= zcyWj2O~B_7G1Dq`L29t9gwIq~hwLr5MocMi72Hy74>db1tKi{dn~d8hy&QNhmm%8% zY&B%7?2pNjR-}C#xv`S{jIFR5#t^%#cYG!;Xf;ew7~H{`z8a>ewuIs&WV2M;z07@< z)v!}#;aNFoYbM4+lab-$gO7_}11&1U;+b^~^m8JkK6&EjmNk&AFe-2j3{!2qz%`Js z+JZ8Vq32qa@dDStd&HEkSObm3l$Kcodx=%Co#Hu6_o>Qm>#kVdw!$@)hOl#%TDYaM zue4VzcF;TX(5l!EXnO}tDqAGnu&jml#FQe|L9A+9itnM6~Q)tZ$R<1hJ zb#SJQXC1Vtwo@2P9sFu-W8BDZ1+l(Loi>7wSQT4`b=n9qf3d~?h4ofFi*W*OgbBoy z8g7K?fAO57dX{1ZH$t@$$3Ji24!S=q@4?D8uA9KFy3W@~p_`z-jqQEduG(xGL+JZ( zn3z)F2XLm1=LgWDdWH(7&<{X^mmyx>vpQ4gX7Dlrzy4OS!?IWC7Km4k-66rd9(t?n zzBa-8Kkzg$rDe84mTLQ;T|nqon60vrjsc+!uvTSWP644G!WV7QZG*2=+q3$B&~0!V z8J4eP+6cd@#xzY>Xd~b=jTG9NcK0nG0Y2JDEK462x*e{nY=Gl^%MQ@Ga+{LNPH_GU z^CVWq&b3SM-U(@KY`Y+nGb`4<+%ds>7yPS@aW_<{3BT9;Vc89L`@u`K@dEe5NR{yd_d_8u zrJMFc39%|>O~fg)A6|HDl##uuCgj01Lwh_>g%`+!X@=!y&XmQv8MdhG6t3vaa9CxR zaDi=x>%=bWe|@HBXfyn%FbcaFeo<`+R*btD7~iCfMSL?b6xhSLL0CXp&q&oml5vyYUVrJ+8=&!O|$(kAZG32VWlbjj)35-x# zFMLn?DHN+LPu}468O&7K5_wSQL8w&OTe{59L$FX~Bidz#eh$?tYZXU?9)^{~lwiI9 zyK38_`N|sn1?+rml-ZYXhL|$+jzAxL&;O|LkHAvDCyjpuHmZy_{t-Ap?6Q9QGl|j> zz+?U?9Umn};Dl=9qvQyjS8eMC7KB=lK!CsE%A5NLgcIYD%E6J(!WQc`7fTItDc8pMCegC(Z+TR&Z)L7`W=>IaPzTEX2-#*3sP#&Yj^_s zsEpU}1oR7jQo|EaMC`JD(lgUTPrzh_Q4LQ3KWY%WiKgKRn5)_b4V;CZdsW6Ocmh5p zrc~ktoUjsA>U#pt5vyW*S%c*S+-~D~5+1biJP8oO3*??VEGI#)vYpx;mao7>Oex|N z_z_b|I0d0?(w%}1A?o#yCp-;ZAG^xY0VQIvZ z;=hJX#FXN{h6aUE@n6GE)y9ke8V;y7Ui{afjil?JQvBE8jP%iU>}&8OR>gK}=Amm0 zF{Me*K~fvfbC9Zf?h_VTfDbss&p&ah;SMs`rn(x1 z2FnFFuCfeWgXJRpptA1m8Z4K<5XA$nVt+a`SXv-VWedax%VkJXS-G@4^a>QHtQ%Vu zdKHRQHX2K~1}_rB>z^aKegk&Z_>pdT=(n(2Wk$KdavhGSY#Xxg;HJtZ;2^yL+UO^( z_B}Wgt71bm0ioYRHjC$l@Sir!qkBQ^bD2~gDIl7MFxB^jN z41GlQ&Qo~y4ErJspL$|d-T8CD=~KB6*C>edUm>%Txr(EJ52*0OzjZSjC3dOAXq0iQ z=ijZL%;Z)@zuui&`(gnC<9d<3Oa6*xXI>jkw$Uiy^8(y|LvNIAt44sUw^Cr;5FTwr z29GugGtjV&!M2tW;9QS*zw}Yo zz*?w*t5Ug!qo8WSV!13&dZbsZk9-#6PKrme4m(6-i)}|nLdcYsC?mchXxBq2fH%g| z0gBACYg-TR;3xW7Sd7Td^yBT*cO-8gk($t_g!}w2TxuIT3c3a;L!|BC04iP?DEYRn zqoB;1UdZ$QJcQ@HFT{vDbl<_T1MHF;kE;X9B6YUJF6VF`-b)(xrNwB}vR$}KM;SVR zn{v5-O=qrYE1$&tfh|bk7)6cN7Hh1J6DY}m@hS^!IJrK_NMwoFL->pj;$I7h>dXBv zrtv_zKNj;?^T?BH{;KbV4Je=|UWPvoVh2KQ&4~sBix_*X|xXfr2&Tct#hzx#oiH;27-EC-e8w z^i?!U`<}GKd?fkeLY}4k0 zpH>-67i>}akYt`fLt!|cf-bP|Q0_H+I4>vMhCi_27f?p#q+#5^+mQG6lQD9^wlg0h zTrX0ODGj~#X&MW*`}xq-s1$$G2 zDYI48Tgj}b+V(kL-SJX@D6oeT1|V}mW%^G z_{jD?e`&FOjxXl)seC-{9?FxZv<=Y)h4@el?*ma?4Tn@93MCDKQ-qEQxR z3-!B#ivRyLTB(@-l}u^IBhfsF|K;=lN3Sdgif3CnVH&QykFtJpvEkdexn4zEP7#Fk zQBnufgy3^cnQ@PbR63(O>iOMX4GXnZPsAfV6Kr)8@u|G| zu}x6Pj*aD5o^=3bOKDRN!$OpSRZ2_nx#ERV)s(NGQp)On8S%H2>xkZCZb7y5ec4^K zM&bj;)sib7Tw5*qA}(Y_y}S@3JpzSvY1ioXC_7JyLA=+kt5D6{I`$MQ+1FEeiG#hS zH9;QR8l57nl(=D`;g2`Y4N^W>JpYZYw1}{2Zr}#ZPU*81HqfLHz;KTErjI>xDXc(kMl$OR9o{ z(#*t0;g~e4!#>o1S9}O#SpX;tx1 z5#)DmDaGI!eK7V#Q7?Zu<`vN-_l;bFn@=vyY{G3Ow`N`kv)tX!CfeC=+4W+O{EOK( zzZlwEdH1HsOQR$S;FGMIc(w)apgb`oO)sU(+p?XcM0x)tPbmmC1O!QDVSZku6d~}f zx+eKlR4=JOjx9)&isb`w!%<#cQYM|mz|V*U@|(enq)K^G>c6E2ct6lUo*zjIWhdhm z#F-`E<5mUS-f%{|#_aLmBJy!_i^k0@3gRByFs7rN2wii#$`2W@b0U~VG(myfZE~8F zj!&HQk?nF&aJpPC2Y6-4+vU<3gAwN#*{UEV6MiE728I{7o^ zt?a?fo2cK_>3114--Zhsy}UfiLsLdG%&gfrJw_9xSz-$+!L@yutv9|{`8 z@ei6}&HUhdh>LxGL;M9lgQ%9ePh;AJ(g*!@T08W&I3f1c;384Ul5Lkuz;kF1_vzY7 z)-vTfw&a;fY1lD;7FTF9u>3g4fXc8)mO(WiOd34g1T}+6vrq%0-_(wxNEd2?!?$Yl zG#3+ZXjW<-8f^n7gNL;fMm(A9MQ~x{b&O+e|GU~E;PtO$4&C{Db4M(ev&+MEMO5=5 zT%Q7ACazfcq%XD6T(FcS!(7xa)XhizYTY7uI;ap@A~Z)4Vd~hNf5!ckilCm%DY& z(Ayz+Os>8X-2mFL3vL1H}z*VGi=pUV376A*bwoc+-cg+Xt>wyXMG~PkbE2x;bK~Y)T()B5?_+K zwEt88K=XQ>WB~1kF)oIM(%YVih`j?+4RwrvFK=h#g0c)It#d+8p;a>!_bl33^o${> zcX)b)AxQh&@DS0gofFtosK+Kc00-rt`oApW0_xRgtf8L0<-unJUyCZGsMzahe%1D` zso)pCIBdNkMY^4`*>D*GCv*I~*N23A4T;*s!hpa%VLLJv zJo~H(`^FF_hIDR0JQvOJgI>1`vnB8Dhj|GhtyqPsKED}qvX)s))!Eg(VW!>;-6FwyF zL66B=hXa^l93BF*+T6}TFKFVO9j?J2Hv2T_V71H6x#1JjFhbzF*jH-r`;2gi5cm$PI&DIyX%2O)3S$e>HV%H)!6dI3G{@l@`(j8k+>lRp z*o|w6vZH<3(4`Lb+Mh80dhMTyZ#X#Mm6I=k;`Gf9L1EgPn0UMPR$8+IUx5!pkhT^z zby8jGuR@#<6M6{cjW%m3UTJ!`f8~$}e7|`j?D04bapIiB41K+J+|UaSZj`I9(9Qg- zL!S6Uj2;(em?1eP0^fsP%?g739S>^9;g*(TS{_{@oJzBxmG8=aNVCKu@EH~-j={kl zq&+q`$?ddJbuw9_LQUQf_!XWx_0nEvmf99&ZGcv*XK)HalT(8sI^jEm7E0^hBkBm5SE zj~)w8_2c+#ILA(Sj0Iv}>rJe8{m7pjAK;Y{*IaGZq*h$3{c){+pdC>zIdu_Mg@riv zpgWUlZ4RDkQLUYV7$og^=W9eCs(m6zBNsU3 z2}`4vI%NpFFY|;5{vjME&Bt15Re`%XlJ0gsyJDVTjY|I~twibSH6A7h}AE&SrW2 zxK|P1^cQ z_Ujg@a$Wq#Mzj1N%qH>`!X_?P^-4bC^skM1g5(=w74y(=%h&}GzbI#ar2K5O>rQ6> z*I22E@M5M`I1~^f*6BJ&XiRq9lF<&PL<+8&&F~2k)1@vLgk9kG9wsq3-_>LncA0!k z+jY_5fhhAl59&U~UC+mKQ&OwotZtcmEv}+hvJ*^~bsJ4RP1b|D4?X&t>?|!J!_=zV z9Gr{tH)+F64|M+c&1DT`QNu?Lfc_#LPXPK)@puBzCnVv~F8W(|mEI?8NW&vh^zr!k z{y`zP*8-DXzXVV8sAR3Z{?vosee9d2GJMB`_Y?TmlH=#SYD|^vk6!EXyKlWAqrU<4 zZ~5~qrVM-21p2W#xtMHwz)i-l4DVs4ydEZfd6tox^+jd7O(y-;_-0d({-d-*rbK;C z*fG;O3Nb?euCI~V<>c_&CbPWK_pYgqZnNz&l-*>TFdx2X-AmBA*x6a!pc*GyD?9nP z=;evI!7eHK5%J+J4K$N>(M;M!Q{@5c91zJ4kp3{~50m}?t+yvBQ@gw&Vu4FKYj1kZ zC0)3#_DUH?PQdHPuat6a|0%x<97t%1T#(XO>7|Aetb$N$%*K<^vRT(41f zx5(+TZY}m@y>4k#t|?Be_slglP)ii+gY$d1mgz5AQeD%fMDIba4HQa)!0!qgg!(>! z;qo@SN8|h<1ucoZ_IP=~#TAznZ0~Aq@6Na$1!)hBZld=iHjyufH(YPv(`HS$1oEL* zsnI-TaGR|^)7$9QAn?1`VtL@SXtx7Y1AYYv*9D2aaauZ10g3RbWd>T6Ab3CrrIY4H zyyL&t>t(lM?S*;=;TH-v0yWF{2`#YY7W7kiN?(JSJy*v78cdMJomjYjrUpGu5zv;)@ zsxedC>u{P?xYz4n?evbjg?ysPCqkSNeA7Kb?jUkbSI9wdHe z5j}#$Uo5Ac7s|Js@4FYv7vnrUBE;OXZXWyeSCW!EQpC#WKB(D|ejHM);=1SosM=eW zi@1#B6DS|kzU#YNuGZDg%)om!hr&FM%lc+>zDKcqCvFxdj_HTbO6X^Kt?&qfa<6}T zl!pxFPJgN2~tXkTZl=Ji1Uf^$=+sh*myK=F*bVhYZE? z&aok$i|F=arO2s zQxN$z1u!>`G3kkt-cZ)-w#?r_lzY~ZwVutL@rq|1yZ#Jr5KYvyM!k*(o`8?)m7W~e zdYTLuE!#Zn+0yKrte%y2l&|;R;ALn1@D9k%mLTS7hIhK5 zsn?ZfZS|Uona06oUA5^GuWO9g>;V(;iLXR$;N(kQ57-AIdJ1u3(bN`0igw$$YhGnS zmieaFcI|$=4XW3MB|q@0frrtK=D8G{1#s?QZN@tXsgCHzoj(NV=!#x=`iTo;FqaaN5=qN7|IW`dPB0NBNm~f$d+jv`! zI7zXbC)G8=TZD^5{wCr8VItm#9I~a%!JC8c%@Kx9)4w+t$WJHzWWFcX$L`n77x^tk zy5!Oyt8cjM_NsHDf%jY;@cZ;2eAI1@`5|3QtML}(5?-y(rC)N^>vqN_co)bY#cy_a zNHvorKIJ5d*TX^LYm;4A5kJn`jpTGguf*r9-Z=(S{;S>vhEJxw;ax`)xlU;4xxkce zs88JLoo>hq*oyk8sHqdOdLBS|kI(1czLZ6QVM(9U-ZivtTc|J#6_$u$Ir)?sbm7PG zV}q5>hXj*&F8*aVegW;~!~4FsPr6t-W0;S1HrC9@Dh(5d6!_$byW&gm*JVm^R#h4% zc~$u=H2kh#jJQ<07_H@5%MkDQa80^#u}`(3bcP)@9nJ6gtTe>nt!og>#a>)!NI|Pz zJ{W_y-I8g@P9MABMA$x`Is;#P>;})meLm4xfulYS{9v+MK02mjtv(LSf&GHAk^L8C zHFl!Ex!K@RK0+e0w;?41S(!WUf8fBCX@tABBVLtTm71((A3~>sgj+MhK zl%Iz~=u<&H^C1Q01%!*BFUm^^m%{**--K+$8Y>LJms%q0U<78=0%K8g4T=!IgJQ%x z&&;|7uO?3i@dIOkvGwLkr(+Pq6^zj@-dM&=2^mT#KV}@ zPvU7iNW1_)%_5WsYi1x0*K9;hzJ>zT@Iar@P>AS*!D(h$@nsen=8~a8!(*SX;ju5! zY(~`Scwz?~Pi)lj#BMsC*h|MfeRU0pfjR@CMYkQXy^g1i*6}eBtJ{OvMc3@xk+oyb zBf7FVVI7$dt3nK6?}S-9vMBam*j3=>RFPw$w3F3!S}UDExmoJWHS$ho>Rg35r*o~G z#2$pLMfqXpCX_Ahn^B(Cr3K}I5m!+@(}ii0Sb3zV;kk*LoveG;K-8>>3PE{w*JP9r zMW><+-SVwS?sq6eGNM}*;*M@>5xwJ^5ucC0ig-0%)b3=d2_aevQOmC2S&WA!OaipRj_k ziLix`#gmmVpRmbFFD-;Dfy{|mo491eoK7v>mtmwViDN!t1z{~=6JZM>>%n~j3G)dn z2x|$O2wN0=8uzRvY)P|H0evYkVKQMpVFh6=VGAL9nmh@U3G)e?2wMm%`cVOdO@u9k zES=I0;FwI}->sr@+u3x*}brsz_-TJxBbNj&UW4AMIx7>bm3v=(}KF7V@{fPTl z?oJ*ZJ*Ims@u>CK>+!vZ)-%C#jOQfJ-JYjCzxDhv+0)4@*K2~;e6LeptzP)E9Olzz z2XAlhK<{wx4&J@Ji@n!+*LmOazU!^?arFuG3G<2d$?|#LXO+(fJ`FyneJ5!v;tl>!O;tI!HWCgbpTT2zh%G6+ zd0nW3%5u7)CMc&j;-2hu#OKHJj(BszAjDlo!w{_s={;ISByJ*^DpC>YIhH3o$W&Dudx)1EQhhjghMQn!ki05Df;syM$M8E^g z-$VQc-baiPHY3L2_Y(q(7q%iM3Lhf&5gHNu3fmFK2s;t;h24k~g}sP)nl|EdLNnrQ z;bX*Cg-;P*6AmISw+f%*%L?HO#9hJ>#67|>!~?keGoqq z{SbGE0f@WAAjCal2;SlEN6&0_06nwWCt^6_XXu&D4xwi@J1j;ZeukD_N8JC2@ZcsyrM#8c>5&b~v>a`ruXma`wE z-iUY5vz*;U&vJH8N;*Xu zu>w7-@SsLd#Fx;s%9|}f*DCf3x>m78=vu`VqiYrZ=Gm%6&=uy{jxB;L>ve}a4qY6l zI+~q|oGP5&aPoBaH^v!LjQx#y#`(rw#-qkjrf*Dtn0mORx{P)i?=r<@ql>}S)pd*O zcGqLBgq}zZm?B!@sWhm&LSl9JtEia9YU3zdR^Mx!m^q63DT}z6^?Om#&Nso;*`Z|oX$aw({+?%Ajud50s3?)08jk$ zh8WbpDAqU?NHtC`OPx$dq;sY$_P}&WdVsIPTng~D5P2b&**5&!Wpz2h-gd}@2c~rS zDYs0yTuzrKyA6_`cZ-ALZk6&jmu2$Dn)gwcCgw_+a<25Ltd+Ca9gpjBitfHV6t1$) zy6d8-Kgfza!!=s08Lw@SSEl^7!~608udeWdR~8##?g}H!>ouo^-I`pfK+2Uq*SzTc zl}5M6`?O{cZZNYAtcFBel??(daj|1#S&v?cW5;$P>FMz^pPD|tV8+ahf^p*~_Zr9b zw#%=BTcfQSioo{m>v%q7^fDM_la_(2t!f#h+pa8wzGQ$-w&3Nk!FFRg40oJf@LXo` z72srhh|jh*zH5W2f@im}ajZw5 zzoZ;HHm;kk`Ymv8eCjRuqrIG2Fzcz=jh&mpATdt)PBY%Uk>oq1u_9UME(w9m*3?IsC5alB99u$~PzGPvHl_*wosY?Z z%w^tJk_JJKKV#}L?*jhUXa${1gM#+;e-IS$saT zZ>f3JtvMN=hcz<&?`xKm70%l-wn$=3)|j>Tt$u1`ROWpW8$^r;CHAhgIy)|6hr}X) z+ubX%QZ-w0sH1r+^MZwlm<9GC^>%LOi`AESEACT|@tovgut0x(@lRqQY;ZAW-%a6+ zHymFeb!;3gl_l{v8gEaT6UO&9Ud**f`O~0jX3QeFS0muQo5&&}ZV=CG&Wu) zo%um^O{*CJ5lqTJ-q<)w`PN{31~JqFHzlaU992|M+?g*an;V~SEa1+~WDUufC8IJD zMw65+05%raR$?PLV{vfa;55YBWrKTlUHmIGp?Gil4)~#D zGiL9!9vM~$y7t13*?wc)FY2Y@-qy3^>3*<6-ESb*?hg=DHmlcm$x`Q+wBo1KjU~ki z=b&Vk4fWfh;Tgf05n23IJy9}_|Jc~O-Av9;H@?um9p`7%lO1aLPmMJl$4dO?#+S?P z=ls9wu+H@v&5k&@Ex?V^+u>H-pX$$@OZWvfr%P_qUoHOZLTd5x$`!vy{rMm2lU>?b zFY4axfn0Kr(cHPz_*<88hKS2TW~_e)GIjQdBz0c553`#S@3bSR6yoGkmC|ogr*t2m ze8r!#CDi?HP|`=c59a3^3wu1yIa3e!Jd(W=stTI2z0(0QNYItYnK>@B^bs=1)sK5k z=aO39JB?FWrZmp$y-eaE>cwlyxZK#j?~fArS^abPHnnH}iQ&(|Kv{RRVdWKdOaC>H z^{$#4P29LhOJrGl)HfurSC#Y4jTfsrO0w2E)Y3uQq5J2cxjLhJ~w8Lnl-jNU#(6YTbe)})>RKuV;d;BZ-HOv#Es95ox;6~QTRpFs}0Ip z*bC^~S&v1b3>(07v<_gq?j=rQ07r}huKS2B9V?cUP3U`)@~EIsf*#8-*K!M+6A(pK z=2H{h%Dl{cjM;b$ykMbhszsWX_9k;RZbBFS zx;l75hnUyVqH`c+L@JcW)U^|GA$oN}4(QPdseG(DWMY~npiG71kE_|&WrW6|8^blV z&vmw<77eTN1pF_1oQyvGl&u`(sq%mvD9=*YdQx3`-7Itf^Ov7qJgaaftr z!34*A6=r*f01H|Qj&u*^HtH+LqiA@-vg@hF$0o+|j!z?c{Y|8xP&2npmn8QxKtr`6 zL=+AXE!9QpFOw4Z{c6bM;R!8<-Th%K-)SnqL^5r1t$Ji~CSTonY4Qs0eFhQ~Z(Lg= zTS(=IzdB^loZnoktZp-Kq6?!Rxcm3*>ncP++`l|emFGlA_VOU^%{y!rIrSAIDuTFF z9->f)J4rX}qoS~NkZ6WQzr^SzrdA`1K^@VbmP!on=bbI&R>W&wa(r!kS_;{D#4V09D z$a}o&M^OUX)WK8pM!f=U*Q?~*D9Yn&2ubd4piYYlYoFO*%VX|tn1H%gueqgle0fCz~q zf~<(9ne6#kO`DnKMWYbIJN2)XXvQ7I68HaaMVHCUe=9o)mGlO+FgeuVI;0++*XQfcqq|e*lRy+lyn($|(wldw#^j67D{Yhucmq{R~1*izVFk69r762>px@ zV*Emk-N&M0%}rLU0aCSz#pqaQRFL*~ByJ2$-1vVb9-$>3adqMmdg3NaM04Wm+phe) zvv5K2!p*p_uuw~w>m0DqAn+?dsOzj6F(*Ap(G;jifD}zo955#{T`v)fzeFNsOJqx$ zx6M(yQJRjyme3g%V_~JeofS!dbCnmrf$5C;2d~s~b5gy+$N-CJh9#u14~!uB03*#F z>PDI|m3)B5K-QvAawVkr^)P>JHv1kWTcVnMCwETxD@(oOhF<)4^}r1&7=upVkm;ok z=8V)v2GLauxy`6`yUqdJl0t*~52$+1gP=M7iAOjFybE|bVgqE@Sz?oe7A<=2Kbp80 zU?S=7Hb_V|)Q4&l!i0?(u%&LVP4r%ZNNdP6`-*wf9^xjhf{hV&eTn}pH5*)gA$L`h zW)p?3fP~uz=uWoL8tC7RnvKEHa{TeE{@L7zH4-eDYp-E!PB=H@Ah{VYF zIAeTVh=P66<+>Emq`3oZ28b+CqC1q?F&A4RJ7M%R~sw8RkUAq#l@?#KY86bK9u{<|TCq2e+Pxu4d7DUO<8T z^NM(+x?x^6k5aeKYo#@fXj#nvj`p5tXgLdIqY{IFF{CgzMEIOk7$%1(7VzvAP1h3( z5aNmh)d%o|s1PL{P?DpJ%3ByPl>`#nQZbO185t`_ChHK3w&4oa#d1ByOm)hQ>5-xZ z7(JYAbz{D4MNCCfU%fHKn~0#Oi;^f=c7K8SpN3qc{d!N5Py%t*1WBqqdK_QH z-{KSp#3=}hlN2C{2$Yx&N-~m&Fe=IFwewf-6!rA{%-9sL%I=`b4H4}^Nm0`lPmFv4`Dll@5%ZwgndIkXJd*WHDJnT^V54W8yGcOm2F(Gr_PJ zU0HZI5`vf^g6ZrV$Q)GrN&=fB1Z6K%o4VSHGbxCvSt+|cKsg&})$SB_)X0UYJq14M zx9hMN9l`a`xh@AW;=(Lp3f4Ym3wB2+ez`6WK>WuHm4AWLN_}Htu2+FZ z*#;!7Suk77!UDF?XjMT5$gWwORyfjIw9wf8O)JY7sEBs>4~k)J;hZB}_Ow=~E*ip< z)K?c3$*60&&ZeGQ6fdJPDH!g4Y!IqTHjASwjDr1JG9u<$C%0WS^U`o1{&#Mj9r=hb z*4gh~oX`sWORjT(k?%WvilA+c3$@RyLmLv!Nv{6}LTgyy)MGKBn#43(kHv(Mz^^a} z3#c`;HO(VB0kk{wiR&gcF=K0CuhCUPDb=+D6_bx8G_g7kla$3+yv**ZLraz8P+4+4 z>f0DJ@r7G3xrJ+~V+CO(pr>wblF`imp1RphYFg@A*j4%W)Mb&q&^8g;6l?A3#!fh( z;4N}JEro1DrMmWTxt^9?lEJ9Fq3*0t=s~MWR|oK&vgpP($^9Z&)0B?jO;<`mwbi;% za+LwQI)NyiL2Mb4(nU@3q)$DK6f{3e+DL9JT8+*qgD5DixJr^GH#S>FXS6{qb&P^G zaa*FzYWu<yo8jz&KL|0!tCD#{d^R{sT(e+>@q_%Z_K7gk`NJ*T=5k^vVBQ{w$OcDC%;wk{w z0OE8KM+-P4ILO!-d5o>rpkOO0QxB(|pzJV925GSJ72FtNt3g4a%%~i&GBM^G>Mv4p z46GXnQ~5Z*I}SD1AhJt`RWf^DVho+zQrEdLc1de4Ylj+Yx0{mrw#J&9GI{o3iWycv zgdU;wL+N3v$N8=?--B(Cv3{7k?&b{daN>JzMPl_MD2M^G3-um40$zrw81S+>`*Sni2??+-vZNkmHr7py-f2qevJU1jD0wzEbUl zKw3N+)LjD-&6OT#Vja$$YE&kHnlxP;+>V!8{a?!ZA+CCC>BPa45!p7qc9@mTshfhZay^LaKNLDa zjp>8hc@Qa6!Ki&2p#ufDa#7H!%u0VW&pPa{W!H3)ehjH=hPrCmiq0rdI@Ls7ia*Ky zE{e`6#oGc-rmi~QBpug!wfFK&FIt0o5C})MlH^KtnU8G$Kiu@)x?--E5*MQlXT^xrN3^e&@@sBRF6zW?ACV=LFj|u5KNwKZ zlIZAIYY>dJYQ@500oO|I-N=j6ilMvN8Xfw|^~Beth?nl~7T7CUq{Z(*ru+)uwTSBK zmHqk0>d}=Mkx!%g&|9caxSv-|cV+f%u^Y6&qK%B_CXfLt$MRM<*uF~ zOA*1QK6h6tU)K2kUGuniCdNFhYX0d~WmlO0R;5Qk=CoUtwgH@$TNNj!^OjOTw=+8; zJlRw}AxC8-Bq@m~8GTf6l5P^p`EKgPe{aC*Gppb5W`x(iloWIw6Y9T?5w|hjaZy2k zq4?Ja_6Oi!2Eu(&GgRQ$kr00YUR^c%kiV|=2!)5bdn5CX*ibjxo6#Uv73dlf$5NrOKpmo%@{#K8YHoK- zDQND9;#y7>M4j_qTyPUNvsjwwAY$qbkq53 z+VNY|XV#?og#|)*XiYwZf32|%xCL<}p-R!vyE#K(6m2?a)?8$J{ z=fX{gY~v_-iMd&~*I1M&VHVCy%GKHTjP)l}B@#M(PXRAiFW-}g!zrmIk;IL>x zIQnn7;lHyXw`YLDZAe7hXSG#sZw}|t{#M(TVsnLKc&stxx;sejBZ+dS`cp%pRlC;c zMtQ}bzo692drP9kkvk0zG;(IotKs14St zhwg1Rp(UnRoN4}A+$);>4RNnT*mD<1iI_leZn6p>E+k;A#^v{RxEYJvOA=uh;!jB( zcVAC=HJFxA)v_VAkb;SEbgVfVPACMGyNOId{o{1e5>~r8navTK0K7DD_CBjZO$L@1 z;L)i)U9UyO%1zc$%_pI{A8XXYbxGB0pp{q>i{X(b66#R)P(?u#!q!Z*SJ|HEcT=Bj zu=}|Ou?qAwoL~Pv0YqJ^KCn)S`IQ~q#r5_VFXff0hu2l4iNZk1QhHhvA*GK}VT7Pp z6y0Bfi?)ajSwpmphsB2dW5#jbYYNOb{Bc=PBC;j48oNRls#A7^S+K=)iQ))BQ$2it zW{SveQ8-S-6&o^HV9#nUjp+5Mxgy6Q$T56@$vAz|wV3rBlbHeQllWTo`t=?7Fm=Ov zTL$GPGBNINIeMfeNAc=~^|4y668hjtZek_{GPU27b6$u{-34f)7n@&k%Kx7)?sUiE+t zbNl=UocvGq(FfY_Rq7`X6yfGIbYttRR|5JR%w0WO^xwE6o(ig-YF%4jV3@`WJ(&+C z6if{8q-E$7H`cCu5y@W?>K>8oX36%K_`ge^`5l z``4b~STTru0QX8XoP1|wL9D4Mfrbf-$zJZkc}n1@gB^!lw+_za`$(ePPeE^RB(r-p zEY+Pu3B;LVP0DWw;5LlTkKD9^l@*$DouQuf0QL~i20Usa!%XcYQ>3;E&JQzp+vW}A_3$D^L z5Cx-((Goh^s%%6u`il_}ET@o#C5q`cgyD6ibq{9^r-2*qK4cHh$gnF@!Wvv zC7^ENl{b+ivy6-3s&W@rr-4mKR2;@meel2Xuw&2^&zyfU5Mh#((`aZjgxivvQk$VX ziK6*Oo2CGpiC)`g$*M;&)Jzk33vgO9T#Q@gF31h)5^Ht?n}sL+c?yt{V~Q4CQ*AR! za_<1wnH{)5bo-Du&y8^2^&kqbo-}Mi(O`5vq+Wg`G5I0zbIhOScBvLOnOagI%*a*S zrtIdIX9jG_cI5i~hs~DO?Wu)zyyga`qcd#l#kOiwYCQ6%A%6rD?rC4$l+kSUi%nV0 z;Y*uRLTD+qK}~-&F}o$AIQKEjPFZ;vo+5xl7Fl^j9rx&LS!^x})sG&{vx_y&CZXY? zv61$IvL_|D?GK~2kGFsxOW}{HogcGzY)Qr~mLazzFQ`mkg;|qx3iL8wdD)V+}O7>Ok&vm z)9!>W(6JA)+Ugp}dn@K9v1t*Tol-3Dacv>?JCR{x$5VC>SYhs1B$nB?g5Ro6c|0?} z4Wd>|5`q{AoDp)E>oM?32Z86W1$EQoSzcOKI-11^5Q|)b=(j8$bSfObpzq5yQka{} z(HmQGO^@SfdD?>1F~EbXOQWO0e2O0S+4$%)~|=veFT z7O>dx%k_lqp?ZLJjWE=yO8xo?yZ31XWfxIuUsNg13fU!U0rQep1+?^`%E7we87LO$ z7R04}y&Xyg&s_Y&At5`4e_|y8O#DocJjRBzo(T8_bV!6@i6M7* zXQCxj=%|l$@f5*@88y^tyXs-lMm^Z)QR{thhd+k;(US>g+GplFe(mrN@ygJ zX|54}T5IoE>5qY)>e`G5fw+TO`BbaO=P1L-5XD}m)<4yOZ&9~Cl^bslP<7MF*XVj) zJ@HgV!CwaW;;ZP`EuJ^gOnw4(iL3^Wcw7NvzB=KV zG>jSb&y=LU0Fwb(x@x*elx$4>@|hc;KH%A#Yj6?D#!xj{>)(bK)}Xk}rvcjGQX@=< zA1f{p1s8s-bwuq;SP};&MiETf)^vlKwYhtbO7sWO)#b!$yaX|=_$?&#G7=JVMA=qk zMw=!QyF4MnVsN2m?l-GGusL<;RYP@{>utW$AilV~f5p^xR*wV7Xp+p*T_>(5p2r`1c(4M36i+p-of z5Fg)Si>z2C($)>cJpT{#k&OAM)AK7Z?-aW7=1wscv|&Ri6@eqyGoFSIuy79~1W-T#99e=0{ccK6bI zIIkH*Qb?5%+puceD7to4gBQjvne7o4yhphR96idDGVo0RxWjG$l zjrEbOtJuB0|C~gkG8U7TW3JysaH=yr`Czmg>6iX{vR;wwzhuF)4Ne+duYh*yiowEf z&Yzg))fPFH-9hq2q!iG$ph=Zn(XP1!Nx`S?elaCdoF4d%>%N9|4&p-j|HsNHtpDed z3#y#9&2t1L>-7XgK`#hl*h+~%zjJUyYui?>Z9Ad@B!&`h3xKYE$g}4)kiw*^*sl{i zSp5wt8*@kCQdYbw=d>7HZ$R4_W^f%;!(PsgYiX|!D|_G(=03IK%g@K)y;g?q+x*Q3 zhR>uSX4!Go2#Uc44K%=~mJvk^t5(-ynEjWS>VRzzVl?}CTR+gUS2Ws2ZG0szm0pFZ znT9f;0ZGA3B~QaGCM}(-)Z?$j1-^fK&w=I!)kv1;wcCdL%ln7k>tEaN+D?aNz}RIfr!sw?i9)SlBySd3M1AXGTB) z(#I%xXQ~I)2nF?vW%Z@kGjLw=$?Lvt7Y^oe0o7Uhk

    J}f%*zoXRZ$cl-;1EE&VoZvU7c~$cpJ=UnAJJvEPF@(9%JjF2yJh_&Z-rOdeJPzbWytZsdph?EbgMaBy z5^d@4L@3n%!PE_;(Ln8e9E>=)`pS-Iyx{cCj=6z3!_=o%?(EEy)nz-2!UIN6b?43u z=?ShL->#!I_suf6-NuKc)K{#K#*W&|714u%$|-S?|Y-ioWhrH@?q0us*mwTDCT z$^@hjRchotO z-`9~cOqp_a3o(+s@7p;t?v3bEvN>-TjG)RiOZ^-Pa=Z=8!PNaT`qldRBsi)u0$-+gBR;KyBPR&mAXo;#icjd^-G*3qCvIUjr?YmOb zQjne_RU306WZcQqP*Y>Jn`F-pb?2@ueD@Z$J5jx`D_(@M;;H{Q(ve9q_r@DUc6;p3 zPo(zels&m9IGabIUP~`RELT0d)A)Dl{k!QCx>t7>fF9qS(D5#~gloua;Ir+6189ia zopS95)H}X|Dc=V$5g;(9l0bFtNsghV3Z3JiBRXhSQAh4+Q~o{T&>J1`ws_YGgvDOS zAog`r(Zn;`nI-y?E>cqH1$ex1-4a1^olxK2lO1`o#f0*MdTvj4ysp|JkRT{{C$ld_ z4#(a9DLfsf(0HTkM@o|xjjhpsru}P*0g)s`Qdhjwil0_re5VNXq@c;~Qn;e9`ar%C7Z#wJ@5_FcJcL@6A-aLM<`oZ4Z@cXDa{e*;FKdYDa zW{3SkS??#+omC6o@14A!r02lO_YI^LIT76=0$cIl)TQq$yp{Uw`$>F*y662)8NWjb z-~Rm<4}tba{Vn_yd&CWwZs? zCAHoDt^BNdYJV~RMNRu)CBLjb{lTP&%@EfAjI2sZlbZ73z#$S0Im#vF3Z7y&EV-UX z&}r9MG}?KX0qX*xqTCN0%bF5UHmUfGfZGmXRPPahl^bk-WRi+I-u^DYu^X)x~+@wR~H)rvtRf|g~hJrk_hL_BL|kTX|^*D09Cup+3P z7|i3uyFHjE5pPQi4;vk`&p^xrEllDWiPsd&3n5-XR**BeT{qVD4d#UsZ+0-xM7&MG zyfAzKW2`+E%rujtDLW{UaN;?Fc@e}L9L$R(-rQhb6!Gp2=3xtIC-@r*e^&cqT=3FhHy+E`l^%!?=9oM0Z#SBA0d3X#Ei)c%1IvaY{9&I;`IsU6%cPiFs~KyJi$C%|6;5NM}8=9Lm}K`^h3cx!@r zorw2BFt0Q5J_zD@eYnpu)}9Sw`nnP?wpEbV<-{ut=2Z}Ha4@eM@oIy4-HEp*n1?qc zjkPa%gPA>v`B^Zp7xDfG=Jh6CtPWftM_!n&xBcWsaCMSOLHMC#Xum9>IRpra{C{>eVN9i zRri;<#nBXB{8$A}B%Y%catt^w3rN1RPk~>urA4A1_%bu571pEq&WHlpJq~MjceHxt z%WD3RT79H9e^`CsNN;t+k#P0rBc1ss)poSk@Xu%qCBEpak+fa2q`iI+hjhl!0aFEb z7x!tWMm73txL66}HC#_TRK&ryBUYw@=tlYMj?e7hI@+2aRnHvFR9hbnSFOjc^WyT6 zV@<7KJ7u@U<4WF@fXJSaa8VpQ3`U?y#;ucFXQd4KNa9LF&{iyoQwL={MXi= z?+h)VjBU5kPfFnBYDt``ICUEuatRSrCw$eusgm=;!mib ze>JZS?F#U74d`e3E8(HqPkOZc7>6ND;}}eMs`X#L#h+KZ9Z%&isAG?}%SYzT20acw zmbwpTJlgBxL9t#uJ|H(x^WUuJe=~;Ps4n>?uSSJkhf}YW(ZMD2B$Z6EC>fF{Gf*;S zdpljZCRq8Y7G;tsGt?{JwBxf|=tL>?F)~n1+XB7}-5|E>J)EF0tJU9kvE$m>e^51+${~viO?G7e zgC%wQ_jxHtsYR?OQ`ZI;=(FnO?~^T8C9k$RVdD$cp(h-p-$hi%4W4$`y*SW93A)}R zUbx^Tj(3btv`N~B>KZF)yrYU(Le&PRlS(u}%6Lafi$MMKMEfBNXoNPDHxDn66MScQ9AxeiNF9EL+N-zgQuhlh&J*$Sn+NWJ#t6r8oc zeX=tSd63`h{P~@LK$H9;#V(|XK9acFsJTDby%;3To{7PlFOepViTOT~xQY<;t-zq_ zAwo5q+E!xk;fYgEi)SU6_|}6Swz^`{rJz!RkgFYtxzq<$ytvjL0OzG0@K9!=+MF{& zy#l#9f)!!!g(Hwsgz%ooDpc5k*0?ItKBFiD*O~ZtwyP7^jwq3GsH-zT!Lel6=tA0! zxE;qE4Hzo)HyYqTR|q=I)!yG@P1ZWR?_YJQ!dniuZyJ2AeH-mAQ4x4L;iD~h2I0#s z7;l3cYg-pJ>(3(GQ{W1+H=FRV7VIMIZNYO0KT6oEhzK_jkouuZqFJp46Z65%<8qDKyiqzux4TDu%hCy6~+h%J_?Ux^hLsFaG0UtFfl+eG))USVX@DXa{&kp{%+Ue&E zeC0Cw=Ry2{`sB~E6F)~n(&8=1TvI|idaKoZ4C|Rs)xuvoC69#tMYyJVMr5646p4Pz zgL%{?zr+t80clA%-WGWpV##a|wbmVmG2A`5p980UGl=+74|9NQyI#wtWT=0h)D?6(6ld=vQ)#nN1}) zYA1`rw(v|OB|O8=a-2;_|DHT4tos2E-%Di2U-&5AQR)w8^SGc%qu`va26yTx{{vS4 zIOwWY^Um3zGU%MOOF5NzVcqX!YDb_cf3(DwXk?92@ITdu&h>zq@6Pq%7ghVO9ok*g zj3MK)Z~s3T!(vbyi(S>45oNo2&#%Sa(S!=?A}Hd)z=&%N?i$F%y8*5RXkWOX);O;s zEy2O1Zy%jE2C5owkwJX0uEf#=5p8g1Lt6m6^nsR)T>OMG@jul*zqRIyI!DlTzqKx> zcBpIW%^EM|p%oj2A%oUzvnaRzl1Hu6LS+=5OH}@QcYK}S^Y`9-iFzBtY3lpGPmMT@ z6eaN)vumtc@n4(H_!eftnD<|W=c^C=xB8j_8e1BW*L>ee$P^dyKt0yLPyp;E(Na!P zq;bfu*&c@}X*@#lSPHWWR}yNn0IUgW*FWret;p7Okmmc)T8s*|F?I)9+K&JdeeH{D z1NF{7^3boI|09mytnU7!5GC>ZAK7IURAiO3fQNVt^MzYLwKK6yS5U*ddl-a2im$j=#=)mr|~ zBtH6NoRz*<7k%;J1lt-Tb-u6MQ`vJ(2laMRk%yWB@ zu3CRNk^A!iDnRtJH~nVr8W;}S*d6!W#$EizdoJ)aKEJ_=7yNT5Yn{eo`6($=gufW9FzI3B z(I>r04exVa>GfAoKE$-z_Ro5EiY!ptS{5+e1Y|+@B$^!-?IH^pLX6@oR*{8ilm-8w z*CdJeEyPaFLo360v6~aLE56L8*D#bDQLoB;kh%pRL7O}b`B*#1KJ@LtIm|uJpdSAz zzTrEGC-M;umn7bX&!bYw;wu^k7K)dkZNUs1wlX=5MOJhwR#y8gHw;OMytk! zR0f50Xf?909hlAK(MS3FdZ)0?+i=#%bNS5;@gckjx#<(ao%}Y+O)@N+gqeS;J>0-jRD6V#2sJW;xgg;&IfZ?eK1Cs50}UV&aNV zN$VCNv;Ki2e*c#%Yt8@Dl~2vWm9TKs@7-Gc_J>JrY+ltcBb@gi;qUvsAZS@+ zVmpkfpXy1g?%oKsjLo9{#3GYk8KJ@J8p!MWfQTNywjn%%XPVGPXsLF8LvaKj$IBa5 zNANiBgNWgyL&D~+aP=bo<9Q*w>h?<2JPt4Y?!wN?IFI&fQ8{& z!@Q9I&Qxs;OuzGCc8TpqNSWW8L|O%kL&B?lPHfhieU*j$7TI-I30urxJtkb8%>UZ^ zXf8AuqPT-A4Q-=%3E$cGJG|%~eiD}hhW=lBwyR(8~-V)98tp3I~ znS7#Iht>smH|&h&@$t>en@JFAQ{}dXQ_(!z`eyKGf_a8UlZLDq9?w@dw2$#;rrB@& z%yM&Pnsaz{W;Vq5GxNV=UY(iWVt8J;KQq$qs*YYUxPAbuoqRXc%EZ zMeS*rZ{e-W)?l-p>p@x6Gqw*WO1Z=4)=r!KA1pEl^9L0$MY=ysST}Td9GKOVS7441Aj96E`QSyd>B?hw6mbD z{F8&@*f|`C%B(SepVQ2;hu7!H?0fS`i(lFjUhaB&k7FtZ%wz|2xb!ryfy&hA;n zDXt*5wndz@e5sem69}7`uXTN%m5t1f$cbX7BB>1ii>#X2;Yd&~Yu$su1H)31Q`p2o z-BS$wSP#Yw{O$-0I&9}ql0G|;=zBu5Pb&(KPNT$Dqnu({#q4FXV%eza%VwFGbpko` z$aK<4nL%_&IdNw7rtoG|L@fK=Mw$s-sIL^1BJJP>VW>pK!Xmywd3!Cr1N9ljs# zPSNtaQq`oCkname5NB*JqIV>a>CY<2&~2j1@e--ux&mc7^TPCSqFPDh=%i%B?3D4y-RY?jR4>Ez8~&G;ax+B)``R(7KU~RX}-u)x@aj55$ox3q*;P4h~9DySvZnR^j8r+ zBWM^}N-P^T5*hQdvguTZkBhGM6Y^1j4_4;)f-B|JU=Ec~)jWal7 zZxJnE4O)PexpOGtdqt9cMR^#DDekqR%dW3{36>+hD8Mh-gXJ`ay)63dGLfgTgHw`i z?8liA_*nXleq^q;6VZfxGMY7>^3fSip!-Gd2v$uvgf3d^s?w+dBVh*J|z9Loai#)V)uR& zE){jW5c$qv(`%<&WH#{z%KfvwJ;P(!*g~S!DK~YAWs5Ma94 z;R=!a&nHnhVIea#M9ITkD{) z7Ip;>zn3?x7CR8(P5`!wQr0~zemGUYIFL6-L28bT)MqiNGtCMK5 z>VY9wW;LSy_Z>w#kCqVqb~e$8HAJ_k56Jp#+{cCpv{y&N1$s$GBLtdPM4J0qwLp&uEBo1Kf#&L{MxY6$ zIvgWlj*hMssGmR|un7YFERs0DCJS`5VSGAI#X*QW9rfvGXr#xnhSTZ1wfA;WozwUx zp_$m4oSDXV2z0S!*>aEzd-l!JtDgwW&Jv`lHJ4K;S$QHT}Os@cN+Nn0___{ zXg!c2JBA&!(9c#q5`-S*AK=s~hK=+ZN%#~$B;a>pgr4Sy1-dB&Yt3>sih>I~N<5FKqLc=#Z$xIYb zOIgH8{YAX@h1==UNP#$#sKgI9Rtxl56rnt6qCjg%6N_JIMt~W+G^<6(oYEYD;)UOZ zQf+`HK8g=O9VAZxDwA#sh}T70F3@!%`JU2U0(~N?*IOms8xV1Tv`z>QimDhSZ3vJJ zmNp8RR@>vG%>vn^v_l%{8$01N8|h;c_cpA^ z=KYf+XA_)z9no{Mh~6y}K5ICajWd#iX;!v8RpCpnwJ%W;nnoe|54C%bno#=kYr*JyFg2Fj7iM}UX@$@01yV?*Zr5}Y; z2NRV99hy$zzNtqLcVr^z^aD+>FjMJ9%vcM%l^c!hV)kh)(zZ1u=3?)4kJ zh==%Q3p!eGj)?GoM7Umrmy7TN2wT|kgo7AQAFx~}a~54jG*pCFlu)>!YJaqaEvq!A zTiChrM7s+*Bb&nGv%O{<0Cnykoi4N2W_Lthdmud07ujwv8kuW4wWQqS)2ssHTKW@LGZME8yD$c;>@q3{ziL_ZdEU>1efi|`AAItAy( zwA1()gdOQeg+CklFfzmN)bwmN6ya=^okrB&r`$Ni*OttEv z5BqYIBKic%Lze4f$n_hqwS)7slW0U=qB}bhy{D3Bse@<=D8|}h4Q2Vfjd!8Q{xgCa zvZ&ezp{2|0K!qKtbwY2z(FLSKd>`Gz652r7bj1q_qbfS4|ws6B6i0 z;h18gw^|4BySTNA1w{tF2knaM@; zu!9P!DuZ-}XIu;EZKb4Hqg;pZsX5a?Z$x;cZ$MkBzd9>jm{9^3r)!T&kec?4&w%92HvB z5Hk0w;4czI{R5f|XRXn=JFuIwI-*ElE+zVFvIzGg%Ik=JP)t;D68&W&(c_gwlX8ek zu|(&h-FiE)gm?l=2uzp;&kIAlgIFYXx1|jW|z* z5={sv`bPxOE0IJWi6Xj(sF(dBKz1~-`Uo1zD6E)?juz4GZb#vJgx7D1@D>sNQiR_Z z;Xg(Aga{|JCw(p)Ef(Q45gsSP9YxqJ!rlo2q=?8RB66t+UkM`T{}h5I(}QSyEYX#DM7xhAdOm^ZETMBC<3V!==1aI6 zHa9p&ThR0zMA;Cdu>;%gji$$v=|q2SL$qfa(LzCA6;j(+;`}PYKM9&Yhd7TU5&fwn z(NlsxKC~^8X?w%%NZ`YSuaWTKVMIrzw!wI?Xh;L*6WfrDpzjTS0-Cc6z2xa@B}7k7 zA}UQLx-y!4tRM9}CcZ70&4>8bfcgjSZ5k!~=vULN_&L?>UU*R*{T{$L{sCx);Zx9UMhed`euMFd220L5 zP?_)hd&G2rtk%P@#e1x3R6XBQqF3^Uj7&9>xipW7A*l~V1f_aC0M71+&q0qxev{#EV#j;6$J7~LNAzql(J4-%Y!cCvl|(agh>k2I z`mWIbQfPJ*nv2HL3gB|0mu9nH#X?{~KT24tpga|%??o@Kjy{d@I4qq7jW-fChYPb>T$cH6&*G*N*06?Rs!>&NZdeM9xz*9rGSU85NwWi3 z^>F357zsw0Xbk8XPSg~sjSWOgjWIvFX9{;X0I1778w$`+`;|C4d zZF#aiy6_MpPRJH)CKY~}DX}>^Iy&R)OatqiL$W=rU&EBPyfxCsSBRsvfi&>r5; z!ZBvfEfq4B(l-QXjgB^yCS|2yE2hb2B_(C0vthWfgcbZYyNzYB#X34&l9iRkSSL+p zOwEeQ%3;HGIJ;&*Lvk@s?O2eN&py|f@QJg0_E$41gsgpMihqL7%j3+>dI&^iIir}T zkEqD9vvyrbVKu&fsK|1#^*Z{gxFXBRj9oR^L}x`-A)BeARfyMy9n#SWM@3d!HXL^a zWX0aEqTy&U-^q73Y%D>MU9tAgDrdXs=9=wd5$RE(-PjQw<(CbxbZ4esB->-!=(4dM ztX?20UJkTOptY>1XaB4oY=w>rs)uFuWE*tU8?s*PDIFPrdb4dh`oY_ye^wtBN>{y% z%uL9-hUGP*sabv5R2_}$c|#Un(iA_~vzCqPxiG6AOVQEhlqFgHSuY*6>U?Wf6^rky z*}T$8%^Jvt>*)7R_h$`eZSi^prT26v@BLXr*sVHzxznbsq3lS1P56;(bJlRyrAkBJ zciNUUiaj_$L!Worl~u#G4%E=d(fhN;vLiYgGwD#)wX78P%ap|Uv3n!NvGoG&Vyq<9 zFo8u3CYdNhFPq5X1>D1Wmwlc!k>%+qrQ4~j$!wfJyZFk9m$Rm^2`v%XbT(C!F_KMZ z^8#cuSbczO2D?2#Hj~{QAoI>-8v}&1*y91hS!`>7Y&Ls62<_7lE1kjFZ1yg0+o_B6 zPW>};Hk&Y%&>qv)R#(DY%%>rC)0pGj#rop7m4=IIH267Q_ML!BSsjFP*zb6Yg|Ve< z?JPs~4QvhG^`k=EI%|zo$3m+Ktxg&;m{7VvREQDTb*!&IT7q-gR1Jv)=d!kV!;!4) zoE4Wnk3B8WQua#ci0m7g_jMgoF6OgCHKe+fZSMAG=6u#}jE2ay1+4El4XvG(lD&}a zyG}zZX60tP*_p|NmYXhAOb_w0-*vR3M{%~7T@pxh&C9NtA~fN4DP$A88e~$p((EPd zGl3|--Lr3Ie_l_jdqgglu|xmS(D^csVxBsc&=NKet}SN~b2PMe#&LcN+oq#?EXVn+ ztk(^i?Dv>{*|)J(wHlJ3c?X+ZhXZ9YvuV_EekVJ6qlQ{rhh?u|Y4ZuKWxuqYn60v? z1%$MIzm8c2TFaths>0T>QXSO}Jr;dG`%_1^6&;J-z$zAsc&38>{mdI#m4?LVv5|Qf z;y~G7qZ`>OAzW&@K5Ylz$dpACaVgt5hO>=~zM=#&-86}0w+Xb|WEDnN>*($nlHI4H zg{=rZtE1@x?bK03BFXjvA^kn952k~SED3L|5b9q%En*|vqN5%Oi?SbNXLR&gB4-b= zUiHEmHmvBzh=&`$sc0XguIA& z%MB;_!>mph&H#FZt%-pV_K0uGLId>3R$_@`*p8YtBxl=(;3xax3eynlzWQ3$CZKUt+!1 zXy}aVh3swYh>q;N_hi4py4|PAh9vFD-p)$bX~_F^&4KKltk-&idr*fZk#DoH0xf5+ z=XI5KvnMnp3V1i$(u|H~?`C@hI>FnG_%{0;CT}1sC-}0|pR(U$U3JuM#8cUO+2CfG zF<~FORv`2y`aFL>o8pIq23Yp9xd9PBU>^rWJixvdXb<~z6GcyGIl1Ef87p{*H+M(S&>yzS;knEz*!M`Z2pxpry=F zOtSBE&3CMXF6roG8$!7og)@A7S3>y$Y0iAioB}OjZNf-ap`#%oJG}g3Hc-H|EX`%i z`IyZRXf@kBDlX>}c9Sl9eUy^(DZ5vfJvO#u&gabcFeRuZ@g=)epgk<3bB~-a*+-AG z$d0kk1=4!OG4{KL*v&)MNZw;i*%YX{G6-$ekST1=z?@@@KPog$iF1YnMd;|0q+G*S zY@3drD&4`qV&`@Atw5!ZY4NVX;Pn+-rK6s8KwfrAhc68xVa(&2>S2Lq>8Papn4GVe zPe;Qr>V3u1p3pSkN}CK>m5#P_=qi21BAz7Kp0M5Vg!T!v+;rV+LO6MjwLkYnG&=3*EX($63|Wnyh=FjU8tX>gY^juHiU~c}B?C=hgQ_9A{Y? zGW|4zG}{WaCydsQ$JtAM*)WQC$g9Ip;Z`d}0v_bwG7Pf_Cdl(Jt->|eTUJcTi|1I0{yoP9$ z|Bhw7KxjGpymVg9ckEsr9V~U{e9u19QE6FJ)(Lj+R!y_C%#igXt9pshE>5fGU)We3 zwZ*i3mW|UB8AImZUStVKLFle1shdL3<>d6NIi9u#Of`xdg_ zSi4uX1izhmd(Lm{>}wj@Gjny$f7#48G;}{Y^Le&dprs635ui)DjHasdEM|w8|90_> zy>{^P>`6fKn|1`}*%pD8v)j^g4Hwv%og`bz*41)$fn9iu&~mn-_9VZ+l(#imWffPBuv5RcNZcVd`GCkxXdu9)i7e-G`Bw^q8G~si|;YD^xN0-{( zmvfP|+pEdc(g$-cv)wv6mHR}_6=r;2kLSYwBFF#KQ3igVhVy&(k!%-V-Zd(e^IP|8 z=mQK;65sM6A@44}5JHLXJD>^M0U7wNk2JI$sz%=TpoSU*I;5kXn(Sju_NYJ;bTl`0 zfW^p_Pc_-~Kq36BKuhsIcD;}z^NybhnU~X+%f!12xRm{ZyNWR0Q%9F(yqXin`|7B_ z6W`VG^*VBnBQ*STGP9K3+;3-&nLqJ`hJG0IUQPsOUutMgza2c1->IW7FkVFR$|EFO zjt@A8eh9c&gJO=0;`;>BhRZ14A3n4ezoyB8Pt}5MIaWTb7&0Piiu;1vEuo6)FTg-`y@FPog} z;C;W>Y(6nJEuoNa5{SxTmN&O8FFc_MLz2@HO85wYv;^DpDVj_q*n#_W&7YFe5<2k5 zb+jF*lz$KquMFTM#uO!l z?RE4c3Hg6?G)>6v)6pn_-q+ES0$tY8n*z1{QIx1Cwf_A7>+DP5qO7|A?|GKl*k*=p zW&qg+5O4uEz!k&|MG#yP7X(2Q_fe^|azOOWt&}n+U$H{t3){?9$nqtd(lH$TpI&i9;i?>YBA_ul83nfpAvbe*%m=$7F*W*Af`j1BKq z9X<@4=T*8h?w#;-_#cJQm>mv({E7M8plX;9Hr+TJK2_PY#MlnMnoB3DjNo=Y#_0@3e%lW8EVLeXKvB?Pr1&| zhVRIz%=B!yr?@hup#3(5XG*0jh&}WyS8e>$LN@GBnC?eB+S%aKO67F-huzX=Ll7~g z+(?K+hV5U^uK2WAM#5k+u4i*XS}da=S7nR(X9=TWIWc8L%z?}Ic%|!EW$J-LH0SYOJ%*s zeIGs-EV#D;0@K(tOy)x zFM-Y~%Sy?zm%;#*-JFoFFNHHIYZ^G(z69FyeP>u{Ub|fTQkbB!kdP_%7hsvnQiG1d zDyUG|2Px_L7h#vebk12>v+OT{4nLP*HM*dzr;v?R*`5(4$nZuxv?<5%C3t}6RUR;K z&Pucedpx$Sg$~5{DQBIq7Ct3b${O3fY+noiAa)h}3O3sDwt1D^aYk;muLCzvUX3y? zUj=VsO2Ahk_)oSdVr6VJd(ZwVWVi8L54mkT*TYoR^GVogUk}fyEK1yKcR`8D8YSmW z`)g34(if$j_6@L$n3Bw2p+U8IYWLdz3MU@fWVR7*5W5JI?SR`S?OwbQ7vc8I7-SYB zXQfQ*#%*1QUDQ8#vP)fas`1Y7CVK^}QCU=G7TR3Icxp1T zTGhtGZ-P3N@$j1<5Z3}sM&IShqxMZ;R~Qe7wpi81<2g4$H`N$A{3N>K4NTMu9&i&l zi7AI-6RaYp^vouBg;*KeB%a4|8&&o|cgg-b>{3}cJ8ypj8dUb3_L994{-LtB&{pMy zD=N(pez0$b`^1zG)gYO9GG%Nt4#;ZoC-%@5tlAc9TJ6=)mza|178u&ba|>jvo*%Iv z>|3BnWeLK0`9Pu99P}vUI8u323`6!3*CzfQ}0p2Rp>ym7>5a5I3|6%L@2H~o)!7U`> zZ+K6zQgD_>NW=&5w8~;ULn7*+ikQ-CJE2CkE!T%c?1aWPwh!T`YI{Nx74ac-_EqZK z;r5%o9!4R<_+>0#9~H3+>Q&=JkKgRO;T$m~#2&cxCw5)+yy=!?+XGhoF6dz+_Tv4G zN{AOcl5Be+vyE*ZJfYg|YaZD50spI)7+>k&{qSrX*ZokYy3W__weJUf9stdQNRPet zk6>FH&jav*YD>gFzI6avRQ5G4I|pC^evnsElaakdOj)iPU@bAHvR*ZS3m+%K7mWQ+ zc8b6+hZRN(MgzR1+W3Oe06SFMj^W+V^JkUu^`Zg(NsRZJjLg?cb<+CS2o{y`1*#Fg zP?(bfHp01wMqHs9;ai32dB8@vq1t%BM(Au)D&+wiA%U23m>QuUu`)IcXG|kxKeEZl zW~$}*YS{$$Rp#W`G{H3d*!gg^Zi1yM`yOX{6I80K70+2su$S0H{SVXnMl``eg;75> z!4cKQ({6%Os_ja~0QAI9UA%vRr`-gx#4v6C{bv)5dq}a{nqWCG<)ZW;2<>=5Wt1EQ zPhv`Y4}u@DGS(twL>z>6Dr+ZYL>z)hmHEgS5g$V*l`;Gf`w8?>SufdH=ks?MqEd%E zD&kWZt+MU9jEKW9QDrmTG9r$^6qS7;j*s{ZW)V}8ISR$9tx5A`*il&X$R@MTVLLHp z=p6$K{-Ca&DV^*X6ox$R{9~|KWxVr`!E3}W>bFgsE+2zRg;94OgRQEKclR;aq1v`& zOpZ7PKdX#)_c8bkA&lJDC}`E$Ke98i~47u>?0h9s|us= z$Kj@GnwP@EH-up;x#Pf`>m2sl=3iIu65#m9c3!NRK;V6;b8*9tYQ-T;EV# zm%@0gbZZ;i33y+%HR<=-Pr!jkHW}|_I8RLJ?vr4_cBt6d8@DG)Jj+b7i;7Xfucz;C|HOt~mpi_S9|EGiM+~Vbn8cAWF6Io;d??s*U%|8JMp! z-ZN+5Sz=1~Gw_;f<3sN(oN7}&8RR>n36D)}+IXIam8$0tcoBXc-cnhvZm0bp(8QS&k5jtaPWuJ8pc+jc zJMG`VJ(Ud=ciLOPs}oPHjHO7gMqGsMD(j-Di1-%zsO$p_aS3u%wpe^M;xZJg?1=8w zh$~R8vSPf8B7TIY z9u<_?Em%uT8Ns(Zo?&F%9yvE!1w8>l&Tk?alUZ3$ey?w@+1$W2f5wH$T*Fbo8&2?M ze0Hyg(I~Oz8Ac;siNyS?b=LxJRrK|~+&T#B7Z}%zY!CS>n!TDFQn?O10nt{a?wZl~ z7#rLV&+{6NzPRDu1!JLm=G*>{1O5NWiCBZcrnTqwM7frYh3GC?>XK`7A6AV&j!^fM zrE(2NLDeM2arxIGSIb!N^Dde9*sjaveNy7m=ip5^KgAl2z}$K(6&j5K%L#s1xxm`y z-68C;e)@D?#hD?z>4V1eri+Q(>M`Sghsu%k#_+%tT<_Y3Nx){;@f-+(Y}d^ka5#Gv z@M`}N&a3?*+=yFYH}~g7T77tnI-)Gn(URE3Ebhbm9&bvq8;x4F4>!;##~y#Hz+Mtq zMOUtAD}RFZ16!WLF$f#-XROG3R6r>PjJH-`L&^1VMIsw!IP5Bc3?jKo?ALL;HEU@Ewk^ z&}CEEm^s}4a54AU7titEHL-D+(SI_e`*FR36_a^Iw`^Q<%Oy^L?lk}YJlmA{r}U=M zv-f)N0)L)`eA+1UY!i*w|28`nt2YiTV0OF#64);T6q%#oOybSl+K-drF^}bkGlh4> z4F|V6CUW#j;w^Z5kOj3mt`S%-oVqx(%>Rl?cm?Bvcoa*H;^W5Of`T}9bEQm#Ag$8m zTdpY+p_la;8VX~_3Rrnk1os*{mIq35?MC0=GBWpif*W|RK0N%&7`f&8Wg}H7Q2sybMRmdC14AkGP&1NhRxqB%x-wr? zy_3v}s_mM~pQ(y#Hln~h10N1~i8U(KnYf-W93RSxMp=D( z&=FTq@&A8DCx!WM#gq=b*nubU-+caW^vcqpc(#>e=HQz9us54>=R^1a zrF1u%3VfC+bM4{jNYS({*7h{@u#5Pq$;b8MSkT~=cU$LwZ^UObEB+mo{#X2!5N$Pz zUeUD0cdR^N1c4KHYX*r3cIEFT7C zX5sz!d^2z$`PfO{o8$o`?-q(PSK^+1Uc)HTTtp4938X0`%}kOPko+9UOW7a|23XC~ zTxEq29-Ch52^DA$fh}aOU>UygkRq+eJNnY3$@6=no?io2umo3gA^5{k*R?{tcv>Ha z&jw)4lQok-~nLRHe-b?uo(UyAy%BAy;pU~PH z@1`o3BJf$V#}jo7f&@nAI8aPLJ+FIg9MnM<``SXYq)GEOQzl zhke{3Mc5#5!wLyz4Hl}TNY|z*ctTt;>nLV_aN<-fy*PL#)i+;QDB*M$YN-H^uvpkF zh2CFW#cLQXLu{2^EE*$% zyvJ3FULDTGEfe+f&fJxvNgf-s2KR(CFKEEs9~TyU2Ua;f$R$>>dn0PaP+4bl9hwU5 zo&12O$eUv&3E-2=>-cmDet>es@PT?MP5y9%r<5euP4|~VVRvw-WEGa?#7NOXOkt9A z7tf@9C6oMpY=5apj>}Jz9P*d(6Hs0=qgXnH>7NmcN-N~)sqc`_E~#7&F@B3U zb;b|Ud4}ICoe?jys)VbEeB9iiadU%`xWl&Qc9N5zdvjodXXP2MfXTQcQFdGh>Gh_ex+1-{AGB(EAdN3LZm|@)Nm6D(rMbu3}NXG5Fniab`TYL%aMQ%mMsX?^bz7Y^&@5e#3Vw zyT0H$>i2c|T?Wl>QG!M+}l3{?N$8I~X$0K8iG>NHdBwD>N|iHSGk-bcLo{)Cbxe&4r|E znhhFHlk24-@N*8pjAxR)5dJa#JItec=ug^0;O#GE?mhW@^F?&X{fnb?h1BvwT%ST< z0j^kh+b#9cbKvJlhUZYfLbnw4n{=xoC$bi0J~*F)=O=!stHYjZLgZ!FQQ38HdlZ>@ zcRJ*EBX8>}peVtp$DdOW>u53BPQmJ^z+o6^s~7MONb(V{S($rHgNMbpyFN|s(KTIP z1!1|_`chWudU`qp^)Wc^X%1_`9M9_Sv&`rvh&>X0#T?BEY=4d>oQ@RV_1%oE=eWI~ zT;D7&>iL@ftY(?3c{+@Az7rQNHp})ozo6kxk6-jjusHc7B*BG&eWg~-y6JpL8r1%Q z{;pfHyA zGlXiN9vd!NwW~w=2({QnhoD*hdFX0+g;Zu4Fv(EMw)^q9z}KQusZZQ@Xx`-7I|G6e zDkI-Cq)0bY-ZxwX^GuGP_1#H$z>uVkEjWyFSl%&13iQD38!6JpehGLm(_LOO!GFMx z$Sa0;F}!OF;>`{m-|KtBuu!t~Jjx@4w_+2@2HZ1bX&221a>K7-aSr5Yzi-#wtwvnp z7sK+kI*V)iObFEa;YaWy?YFKMvD!XGVF~!ilYyi6x}B%NaG3_f4GKajZrn)#4dAigXXK4n_iCcb!E)L(S5b!eq33U?d7kGS?gY_ zy@IvYY9A!M>h6x`OTOU!;&|UZRC|5YQ|`O9HwGSb=gaO<2-Q}iCQbfh@)7qMsV4O| zAzny{XhwOT_6XL=$4oq7qn57#@j{00dG{pXd%~08gx^Vs7Z*8`()G34$zv|N`%thz zVTkpCJ3g#FPLHef&-2_ol7R0MFK6?^B0LUj7vQ#&W-U)T3BDW{i&nmK`aVq=yTGSg zyqJq4JyhE~s=tR_;PXH)pNk#rQ6#^fJHev^MLDa@N`BQNR4(>)mO%}>(5KqNA$R#6TU-DM&BBbDt6Zq!|>#S)++V``Q#4$8_GU2c6nUXUYM{SWsi9=%&O@U-&vCc zd`Eef;BLp8eTDu*I4+OkXvYUkWC>mH_FruM_cD`qg>}ZD}wE^Q7dV=oexW(wt7mNYa z`XrFXukp+gHpjX=(}mARCqs@f377xg*!l73!~3H*4V>OIa9rc&fTxphV9Al5>Qdub z#SV7-#M7#~XZy_4r0d@EglE36(LaWnbjdx>q5h?u&pfT#7x0-4(Yl&pMr}l`&o7RP#vH*fFnpYtgNC1t z-4O8?XZA;s_A9Xnp)v}aJX2b8yM|js?x2Q=xs`(V`>F z33TZqhUM8zRl+e-m}$4JZ&Z}4p96fIZ~9i^TKesXex{4MeWn4X!@9rw4L4P>C!$B1 zT6K+KIVfKlm}|PLi^E@7D=3W$8Zn^1fDZxy{aJhv0O%8Yn4mRp~qxE|NjjTq_j=E#A%G(0(nri4;yGH(b?sc{u>v8f$>`tPmxr$xK-J|hh zX_qjwUVbt=+MJ>vm(a;vM>A+2&7gfWNA9wL!7=O*>5r2BDCrN;+&P7no)K&0-O+2z zX{@JdojFaj?FQ}iwFI4Om)-~Mf$M3RBwm=wtc8~nl#Kd&by9MsS^@h zo#*2vJzx7Ik>@2*MYwWc_m*q>b-m6)wMQm4&_@s#UMCm({^Wg4NKU{D7mcRBug^mL znSKF2bppR+b;!wcl6($PqI}_x(uIosaJsou%}H?9UV_%z0f2qOuSpI|SFQDUd4Jj2 zcb!j>_Ey|qeMa?31uT--O#(%eBcktF3b5 zB)ji<>YMYJu5+VTxz-C$DpmT09nyWvrMD-J^7Rq<6b}@6-@e+m-l_`a^1@d z()Abhr>$fB9P;h>*;uOc5WGo2ztXbWFBD#|RQNf>9g%OLJhph7-!(m#9pdcyA0h6J z{M4^izdZaH;TgYfbZDHtMSkWiM*?^`$#DP~9P-{tR{zy>eX&90=g+(Pd9l6yH;62I zuz!`vFCwb253<+>(S24Q0Sp11hWkH)eK_iwCS?m;OKi(<{uGe z_}7rN*2!kiFY&KocX4B8l1A*X91T1PK4RDSbKKx>GTgRr_pfDZM_gyMY)L1MCrliR zGe7bV#bf!ge-(QhpT&?)sc)z74*7+F*Zpf`d;9D7A+F} zlaKtFq-sQ5XK9A;u#J|BnkH+NrCI*2-`kcdHV!X+s#q0bj%I9^YnobJab}%m0s6h|aeah%am?%%LyGpp$yY26A>Vq#vRm7PmqNAL z$mDyL3Ot8)^t3)l;qAaP+5(=a*-r9O)B{^Ba?LvI>JX@);ns=|hsd^WA+c z4r?eRMn7v^DrWd5!*-FMvMUsXg?^pn)gs3_!hM8?5S^XmqeRN(2gaN7DN5x$X)Y7q zAY3i-&kctNlkl43GwU6ZpY!feig!dlv!e}eeXm=i4fc80twr+SUU$&vU|f@KDS4(z z=AqahhM#?2_DVAFhSdOGu{(uOycz9T>wP+fmg5D;RXj(ZOS|f&*L@zBWGj+)CA{x` zpV}%(v{*^JW$qF`a8<(kgaVrn$!UhZNzd4_45qx*wtT~`IqPjTG|Ov*x;|@6X@=UQ zI$N3{Ke!I{vr$tcWcK;k=ByD;1RS*mQWg1zH3QDrDroh#Q!qOPOTx6g0vrZg)JgmX zVVl3n%diGFb$&9&fEgsS$k$g(t-IR#xWaWH#EDmL>7$Lo7oYQNghD*5EhM^bbMHj zI~&dxB91_-nPrhYigiUfA7wM1z&Soo`elSKQavLe5lc;Q(pw(%2^82AIE*+8QOAm5 zAB9FKe(ad&>3!O-sMc$cb39pEs zW8ol)7w#zW09MV5D38)CKpd;thMGJLC92_xPSa3|=!40T{u$CgNBR;CPkpI|r@maX z15u~rW!-hWtWoD1=+rSE9WQLrao0fIPQ(zM8=_se2eG}57w(|rV0I{3yP+%wK z#ug)bvu7hau>iIdF`QK+#y?Zjs zpLIw@S?H06@^2jrP#)i-3~_IdYQ%tqgNTb0E+Jk{5Vd>RfW&YurKolCysCAaT+;1j zTN9a{%S=Cvg?AS9ds)Y%5dBEDuyY9MlL_+(3-r7-B_x;WQ&FxYxtin#k`I#HLh>b& z@lRx;r)c2*AqF=mzJ(J>CPOO81%xG}DI>X(U@c0(VbTmPMAtqKv+gtO?Z&-5~1ip{)DN71%w9) zFA<8KQkd@F3wOLeYx~5T+6q5S9^E6CNbIL?{}`pD>lMfRLH#u-Zm4 zh-*OXA6F8G))Fw1EsjfWH|oh}m5ldcMNbB~0$cKba zh7nxTLYSOIr3gz1D+wD2TL@V;`4E;6R&sO(HV|ncWKVFX5W+md62eNt2ErCXHkLdI z^9V}_D+wD2TL^!|r%1mhJP`Vc1H{>4iMUDZEOnP=NPm+)m#nfjSDqr5$gjK7N}-?g zOLu>d;U0@UR(UjgT=CF&cJ(~qdByXt*COMq#u=t{rtan}^K<5v<_+d;=A-7*=5Nj4 zo5Q^Gycc_K@_xtrQ}0XO|MYhEvHOhnS>vIb8mD2FD_=Gl;b@7ZCl@FCnh%_&s9k_?w7_eSSf#o^uy* zSJdy1aB8xE8=4lUY7rHE%rIVddLXa!F9oNZ_|}3ZYQz~E1 z^}veGTD%e8OXSw?2!|DLdCYu{donrRAxuc|N6#my{!ao!P_FC26IIf6%>E?;H_5+= zZ;bt(%yD2R-h$iyJV5IVE-P(n9mzFrRFP&zB+745im{Z|H-uk@#iIUG(hm!dM>&!Z zpQeGbnefLjF3%!)JVz&cmq-)g3JUO2C{M+n$iv6S@(%xZO>r@|))3~A&!}9UVoM6| zUNapaM^*xALbH+)KN>L+fVA*O!tGW@RI*#K3zjiM2%5u5N?3 zEo?))4DTX#65dCQ!=EVx)!fBSt-V^;1cZgQR zIxzt8Loo<(ml%w=M+`;WCx+wIeFJ)qU`^;bf*lg05I;fB5$sd+9Knu=(TGRUa~c~f z`6G^#oK}3BAjKl)Nc6wZp+G;}Ru(bv(dAN%|*{5HV-|E z*aGyN!Jb3U8Ei3n&R~C$;t`jlCq5|(J!i1hcwsq%y@Z}~+27D}E~}HQPJG)V;oq!d z`_OeR`v_gh{d4iBGv&t7qL$0xrEI_&n0XDdM;s4$*G9Xpyv{{ z2tAju=j4Hii_x=;EkVyRwiG?fZ0s-STE>>6YZ+UKu4QaBx|Xq*Tvt{=cle7dU?pTa ze{}!Vy_ZL^M~LSP&lfx^JllCi7!!>{j9JD!<0|7p<5$K4(+!hsPBjlT7n*097np0! zCU2W}y?2B6*WPn{ihSq!e(rnP_lDmues2C>_(xhgTl!myEgxC@t=+7>tplvXtoha= z>k{iK>pJTu>s!_x*4@@7>j~>nTefYS&gQT++aTamSL;d$7cU1CyZl!{Q~}`5sek>q z0C#8o>%VIuT!Y)2+WbqwjZJ)06Mp^lNLz&4EBRi)$Nw(7s#bw_?B#$RxK-<4|0Vv1 z@Rs^-R^gA7ougrl6pOEp_=?9@SA2EHS0>ZSUBO$9hOdO-_!toB?XR(np7sy$apNv1EPZ%vuFLSB-XIg{m@r{Fv8pu|_MIiKyv z*FmTG3-*TlaA4+Pa;8tFyht7|)**O0QjTT$RTkCHbCZ}7vgVU19##_6?cx$!hD`Br@j5I|W zBOTWK#rB2ffbFzKIAC+V{t_g)7L%(%W@{8~Ou;}ojnKSz5&zsK+ zx`w|DlU*Ob49i`0uYl1t@D-RNrOYm#@7nVURBDtcuH1F7T;CVtC-FL5=f8(QiI=Xw zxDMtE*6x$ym89C%jPc@K%`by*{Sp`4Z(qN*0UpHFZ)$}L=KAL)VPukVxL@VG#lM~% zUY+jo{EEi=6Y5*~2t6f@#=N9f)VKos3(vS->n}K<*=0x-+9jTrLzsEVSqbfD_4ubm z%}Xxge~nhqnMm}~&^k}Iz9se;YzrfEs5Mk|`1_jIpc zmMY+#%r{+OLxesOH@FIh2v5Py`mcuw_;)k#*{Xs$OQ?TmsIV2_bbWTZkRqaWU8dk6 z$R@4coaNe*CG@lCw1Tfo;8N9PQ4`bVpS+7rYV&2bom};IR6u&B zF&tuxU=d_+QU&oQO1$GzVG(91LE$xkd2JFexY!tk89KncW(EhwWT479NOB?!OQ3Ss z8Q2&^7*42x%xq?u#E{7-!tfBx1DV1Il>1!|=00RpVqs$tWnfSTDSgPO%C7+A6>ETb zoV9$JETRn65FXA z4`PZKLmi6BHmFK2pebSu^EDYZa|*YM3y61GEN%Fy={)Je;^JSgN>*)Npmm2`RJeZ8 zY>!{^lm({Tk2uuu-NJW4-a@D4lL9;@A2C`eG!+{CAT8@bY=w!6 cVvGwX_Ze4g<}>-l%yh(Xv!KO$#)$^(05Dj9Z~y=R delta 596 zcmZoDX(*Y{!BTMNz?F$TGK{+>t_){Poy^Fn&RP+`z+f?1kx6HAB%?axfys@G^@1}4 z8Nk2;NHQ_7GHlo^$du2*=ry^K&4^uwDL;vUfot+XHmS{b*miK$Ur_-mp2l#9ErLam z!Acdxn<(*)ONB+4AqRz50p_(yyx?ME5N2oq^O_kP7?Xi2ry$9RFwB9c&P<@WO#0C_D?xpJ;NpvvP=-fk`zpxk*d58`Z5hU;KnGea2z$c85x^$@r1 z2D(&~;Xhas;(JjBZcUIJOrtQE*9_E_475TCNluJG3o5r1Xo?s^7MKSyMU0^gMP(gS zB^S^XF^1`y44Vao+r 0f) return babyHalfAge; - List ages = parent.pawn.def.race.lifeStageAges; + List ages = Pawn.def.race.lifeStageAges; if (ages?.Count > 1) babyHalfAge = ages[1].minAge / 2; @@ -165,8 +165,8 @@ namespace RJW_Menstruation try { if ( - !parent.pawn.IsHashIntervalTick(tickInterval) || - !parent.pawn.Spawned // TODO: Add option to simulate off-map pawns + !Pawn.IsHashIntervalTick(tickInterval) || + !Pawn.Spawned // TODO: Add option to simulate off-map pawns ) { return; @@ -177,7 +177,7 @@ namespace RJW_Menstruation } catch (Exception ex) { - Log.Error($"Error processing breasts of {parent.pawn}: {ex}"); + Log.Error($"Error processing breasts of {Pawn}: {ex}"); } } @@ -185,14 +185,14 @@ namespace RJW_Menstruation public override void CompPostPostAdd(DamageInfo? dinfo) { if (!loaded) Initialize(); - if (ageOfLastBirth > parent.pawn.ageTracker.AgeChronologicalTicks) ageOfLastBirth = CalculateLastBirth(); // catch transplant issues + if (ageOfLastBirth > Pawn.ageTracker.AgeChronologicalTicks) ageOfLastBirth = CalculateLastBirth(); // catch transplant issues } public override void CompPostPostRemoved() { - if (parent.pawn.health.hediffSet.hediffs.Contains(parent)) + if (Pawn.health.hediffSet.hediffs.Contains(parent)) { - Log.Warning($"Attempted to remove breast comp from wrong pawn ({parent.pawn})."); + Log.Warning($"Attempted to remove breast comp from wrong pawn ({Pawn})."); return; } base.CompPostPostRemoved(); @@ -201,23 +201,23 @@ namespace RJW_Menstruation protected long CalculateLastBirth() { long youngestAge = (long)(BabyHalfAge * GenDate.TicksPerYear) * -2; // So a newborn isn't considered a new mother, either - if ((parent.pawn.relations?.ChildrenCount ?? 0) > 0) + if ((Pawn.relations?.ChildrenCount ?? 0) > 0) { - foreach (Pawn child in parent.pawn.relations.Children) + foreach (Pawn child in Pawn.relations.Children) { bool isFetus = false; - if (parent.pawn.health.hediffSet.GetHediffs().Any(preg => preg.babies.Contains(child))) + if (Pawn.health.hediffSet.GetHediffs().Any(preg => preg.babies.Contains(child))) { isFetus = true; break; } if ( - parent.pawn.ageTracker.BirthAbsTicks - child.ageTracker.BirthAbsTicks > ageOfLastBirth && + Pawn.ageTracker.BirthAbsTicks - child.ageTracker.BirthAbsTicks > ageOfLastBirth && !isFetus && - child.GetMother() == parent.pawn // Don't do Dad's boobs + child.GetMother() == Pawn // Don't do Dad's boobs ) - youngestAge = parent.pawn.ageTracker.BirthAbsTicks - child.ageTracker.BirthAbsTicks; + youngestAge = Pawn.ageTracker.BirthAbsTicks - child.ageTracker.BirthAbsTicks; } } return youngestAge; @@ -254,7 +254,7 @@ namespace RJW_Menstruation protected void CalculateBreastSize() { // Scenario A: the youngest child is less than halfway into babyhood: Full size - if (ageOfLastBirth + BabyHalfAge * GenDate.TicksPerYear > parent.pawn.ageTracker.AgeBiologicalTicks) + if (ageOfLastBirth + BabyHalfAge * GenDate.TicksPerYear > Pawn.ageTracker.AgeBiologicalTicks) { debugGrowthStatus = "Full size due to young child"; if (breastSizeIncreased < MaxBreastIncrement) @@ -264,9 +264,9 @@ namespace RJW_Menstruation } } // Scenario B: Pregnant, grow in the second half of first trimester - else if (parent.pawn.IsRJWPregnant()) + else if (Pawn.IsRJWPregnant()) { - float pregnancySize = Mathf.InverseLerp(breastGrowthStart, breastGrowthEnd, parent.pawn.GetFarthestPregnancyProgress()) * MaxBreastIncrement; + float pregnancySize = Mathf.InverseLerp(breastGrowthStart, breastGrowthEnd, Pawn.GetFarthestPregnancyProgress()) * MaxBreastIncrement; if (breastSizeIncreased > pregnancySize) { debugGrowthStatus = "Shrinking due to being oversize for pregnancy"; @@ -298,10 +298,10 @@ namespace RJW_Menstruation protected void CalculateNipples() { float newNippleProgress; - if (ageOfLastBirth + BabyHalfAge * GenDate.TicksPerYear > parent.pawn.ageTracker.AgeBiologicalTicks) + if (ageOfLastBirth + BabyHalfAge * GenDate.TicksPerYear > Pawn.ageTracker.AgeBiologicalTicks) newNippleProgress = 1f; - else if (parent.pawn.IsRJWPregnant()) - newNippleProgress = nippleTransitions.Evaluate(parent.pawn.GetFarthestPregnancyProgress()); + else if (Pawn.IsRJWPregnant()) + newNippleProgress = nippleTransitions.Evaluate(Pawn.GetFarthestPregnancyProgress()); else newNippleProgress = 0f; @@ -353,7 +353,7 @@ namespace RJW_Menstruation cachedNipple = baseNipple + nippleProgress * nippleChange; // For some reason, Props can go null when RJW relocates the chest (e.g. some animals), so catch that - cachedColor = Colors.CMYKLerp(parent.pawn.story?.SkinColor ?? Color.white, (Props?.BlackNippleColor ?? CompProperties_Breast.DefaultBlacknippleColor.ToColor), Alpha); + cachedColor = Colors.CMYKLerp(Pawn.story?.SkinColor ?? Color.white, (Props?.BlackNippleColor ?? CompProperties_Breast.DefaultBlacknippleColor.ToColor), Alpha); } public void CopyBreastProperties(HediffComp_Breast original) diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_InducedOvulator.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_InducedOvulator.cs index 91be3e1..9019340 100644 --- a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_InducedOvulator.cs +++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_InducedOvulator.cs @@ -75,7 +75,7 @@ namespace RJW_Menstruation { get { - if (parent.pawn.health.hediffSet.HasHediff(VariousDefOf.RJW_IUD)) return false; + if (Pawn.health.hediffSet.HasHediff(VariousDefOf.RJW_IUD)) return false; switch (curStage) { diff --git a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs index 186c044..4de9e36 100644 --- a/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs +++ b/1.3/source/RJW_Menstruation/RJW_Menstruation/HediffComps/HediffComp_Menstruation.cs @@ -124,7 +124,7 @@ namespace RJW_Menstruation get { if (pregnancy == null) return null; - else if (!parent.pawn.health.hediffSet.hediffs.Contains(pregnancy)) + else if (!Pawn.health.hediffSet.hediffs.Contains(pregnancy)) { pregnancy = null; return null; @@ -143,7 +143,7 @@ namespace RJW_Menstruation float avglittersize; try { - avglittersize = Mathf.Max(Rand.ByCurveAverage(parent.pawn.def.race.litterSizeCurve), 1.0f); + avglittersize = Mathf.Max(Rand.ByCurveAverage(Pawn.def.race.litterSizeCurve), 1.0f); } catch { @@ -153,7 +153,7 @@ namespace RJW_Menstruation opcache = (int)(RaceCyclesPerYear() * avglittersize * 6f * - (parent.pawn.def.race.lifeExpectancy / ThingDefOf.Human.race.lifeExpectancy)); + (Pawn.def.race.lifeExpectancy / ThingDefOf.Human.race.lifeExpectancy)); return opcache; } } @@ -186,7 +186,7 @@ namespace RJW_Menstruation { get { - float res = Props.maxCumCapacity * parent.pawn.BodySize; + float res = Props.maxCumCapacity * Pawn.BodySize; if (curStage != Stage.Pregnant || (pregnancy?.Severity ?? 0f) < 0.175f) res *= 500f; return res; } @@ -196,7 +196,7 @@ namespace RJW_Menstruation { get { - if (xxx.has_quirk(parent.pawn, "Breeder")) return 0.5f; + if (xxx.has_quirk(Pawn, "Breeder")) return 0.5f; return 1.0f; } @@ -207,8 +207,8 @@ namespace RJW_Menstruation get { float factor = 1.0f; - if (parent.pawn.Has(Quirk.Breeder)) factor = 10.0f; - return parent.pawn.health.capacities.GetLevel(xxx.reproduction) * Props.baseImplantationChanceFactor * factor; + if (Pawn.Has(Quirk.Breeder)) factor = 10.0f; + return Pawn.health.capacities.GetLevel(xxx.reproduction) * Props.baseImplantationChanceFactor * factor; } } public IEnumerable GetCumsInfo @@ -420,7 +420,7 @@ namespace RJW_Menstruation { get { - if (parent.pawn.health.hediffSet.HasHediff(VariousDefOf.RJW_IUD)) return false; + if (Pawn.health.hediffSet.HasHediff(VariousDefOf.RJW_IUD)) return false; switch (curStage) { @@ -451,7 +451,7 @@ namespace RJW_Menstruation { try { - Color c = parent.pawn.def.race.BloodDef.graphicData.color; + Color c = Pawn.def.race.BloodDef.graphicData.color; return c; } catch @@ -467,7 +467,7 @@ namespace RJW_Menstruation { if (breastcache == null) { - breastcache = parent.pawn.GetBreastComp(); + breastcache = Pawn.GetBreastComp(); } return breastcache; } @@ -506,8 +506,8 @@ namespace RJW_Menstruation // Luteal will appear to progress, hitting the end of the phase when the pregnancy is discovered float discoveryTime = 0.5f; - if (parent.pawn.story?.bodyType == BodyTypeDefOf.Thin) discoveryTime = 0.25f; - else if (parent.pawn.story?.bodyType == BodyTypeDefOf.Female) discoveryTime = 0.35f; + if (Pawn.story?.bodyType == BodyTypeDefOf.Thin) discoveryTime = 0.25f; + else if (Pawn.story?.bodyType == BodyTypeDefOf.Female) discoveryTime = 0.35f; // Estimated; there's no way to get the exact value after the fact without writing it into the save float lutealProgressWhenImplanted = Math.Min(0.5f, maxImplantDelayHours / (Props.lutealIntervalDays * 24)); @@ -559,16 +559,16 @@ namespace RJW_Menstruation try { if ( - !parent.pawn.IsHashIntervalTick(tickInterval) || - !parent.pawn.Spawned || // TODO: Add option to simulate off-map pawns - (parent.pawn.IsAnimal() && !Configurations.EnableAnimalCycle) + !Pawn.IsHashIntervalTick(tickInterval) || + !Pawn.Spawned || // TODO: Add option to simulate off-map pawns + (Pawn.IsAnimal() && !Configurations.EnableAnimalCycle) ) { return; } CumOut(); - if (pregnancy == null && parent.pawn.health.capacities.GetLevel(xxx.reproduction) <= 0) curStage = Stage.Young; + if (pregnancy == null && Pawn.health.capacities.GetLevel(xxx.reproduction) <= 0) curStage = Stage.Young; switch (curStage) { case Stage.Follicular: @@ -614,7 +614,7 @@ namespace RJW_Menstruation } catch (Exception ex) { - Log.Error($"Error processing womb of {parent.pawn}: {ex}"); + Log.Error($"Error processing womb of {Pawn}: {ex}"); } } @@ -622,9 +622,9 @@ namespace RJW_Menstruation { // If a hediff is removed from a pawn that does not have it, CompPostPostRemoved is still called on the pawn that does. // If it was a legitimate removal, then it won't be in this pawn's hediff list anymore, as that removal occurs first - if (parent.pawn.health.hediffSet.hediffs.Contains(parent)) + if (Pawn.health.hediffSet.hediffs.Contains(parent)) { - Log.Warning($"Attempted to remove menstruation comp from wrong pawn ({parent.pawn})."); + Log.Warning($"Attempted to remove menstruation comp from wrong pawn ({Pawn})."); return; } if (!(pregnancy is Hediff_MechanoidPregnancy)) @@ -667,7 +667,7 @@ namespace RJW_Menstruation public void CumIn(Pawn pawn, float volume, float fertility = 1.0f, ThingDef filthdef = null) { if (volume <= 0) return; - if (parent.pawn.health.hediffSet.HasHediff(VariousDefOf.RJW_IUD)) fertility /= 100f; + if (Pawn.health.hediffSet.HasHediff(VariousDefOf.RJW_IUD)) fertility /= 100f; float cumd = TotalCumPercent; float tmp = TotalCum + volume; if (tmp > CumCapacity) @@ -701,7 +701,7 @@ namespace RJW_Menstruation } cumd = TotalCumPercent - cumd; - parent.pawn.records.AddTo(VariousDefOf.AmountofCreampied, volume); + Pawn.records.AddTo(VariousDefOf.AmountofCreampied, volume); AfterCumIn(pawn); AfterFluidIn(cumd); } @@ -777,13 +777,13 @@ namespace RJW_Menstruation protected void BeforeCumOut(out Absorber absorber) { - Hediff asa = parent.pawn.health.hediffSet.GetFirstHediffOfDef(VariousDefOf.Hediff_ASA); + Hediff asa = Pawn.health.hediffSet.GetFirstHediffOfDef(VariousDefOf.Hediff_ASA); float asafactor = asa?.Severity ?? 0f; - if (parent.pawn.health.hediffSet.HasHediff(VariousDefOf.RJW_IUD)) antisperm = 0.70f + asafactor; + if (Pawn.health.hediffSet.HasHediff(VariousDefOf.RJW_IUD)) antisperm = 0.70f + asafactor; else antisperm = 0.0f + asafactor; - absorber = (Absorber)parent.pawn.apparel?.WornApparel?.Find(x => x is Absorber); + absorber = (Absorber)Pawn.apparel?.WornApparel?.Find(x => x is Absorber); if (absorber != null) { absorber.WearEffect(); @@ -796,7 +796,7 @@ namespace RJW_Menstruation /// protected virtual void AfterCumOut() { - parent.pawn.needs?.mood?.thoughts?.memories?.TryGainMemory(VariousDefOf.LeakingFluids); + Pawn.needs?.mood?.thoughts?.memories?.TryGainMemory(VariousDefOf.LeakingFluids); } ///

    @@ -822,13 +822,13 @@ namespace RJW_Menstruation List filthlabels = new List(); BeforeCumOut(out Absorber absorber); if (cums.NullOrEmpty()) return; - if (TotalCum > Props.maxCumCapacity * parent.pawn.BodySize) leakfactor = Math.Min(1 + (TotalCum - Props.maxCumCapacity * parent.pawn.BodySize) / 10, 2f); + if (TotalCum > Props.maxCumCapacity * Pawn.BodySize) leakfactor = Math.Min(1 + (TotalCum - Props.maxCumCapacity * Pawn.BodySize) / 10, 2f); if (absorber != null && absorber.dirty && !absorber.LeakAfterDirty) leakfactor = 0f; - if (parent.pawn.jobs?.curJob?.def == xxx.knotted) leakfactor = 0f; + if (Pawn.jobs?.curJob?.def == xxx.knotted) leakfactor = 0f; List removecums = new List(); foreach (Cum cum in cums) { - cum.CumEffects(parent.pawn); + cum.CumEffects(Pawn); float vd = cum.DismishNatural(leakfactor, antisperm); cum.MakeThinner(Configurations.CycleAcceleration); totalleak += AbsorbCum(vd, absorber); @@ -913,7 +913,7 @@ namespace RJW_Menstruation cums.Remove(cum); } removecums.Clear(); - return new CumMixture(parent.pawn, totalleak, cumlabels, color, mixtureDef, pure); + return new CumMixture(Pawn, totalleak, cumlabels, color, mixtureDef, pure); } /// @@ -959,7 +959,7 @@ namespace RJW_Menstruation if (cycleVariability < 0f) cycleVariability = MenstruationUtility.RandomVariabilityPercent(); if (currentIntervalHours < 0) { - if (parent.pawn.health.capacities.GetLevel(xxx.reproduction) <= 0) curStage = Stage.Young; + if (Pawn.health.capacities.GetLevel(xxx.reproduction) <= 0) curStage = Stage.Young; else if (!IsBreedingSeason()) curStage = Stage.Anestrus; else curStage = RandomStage(); if (curStage == Stage.Follicular) @@ -979,7 +979,7 @@ namespace RJW_Menstruation if (pregnancy == null) { // If this womb isn't marked pregnant, search for pregnancies that have no womb and claim one - foreach (Hediff_BasePregnancy preg in parent.pawn.health.hediffSet.GetHediffs()) + foreach (Hediff_BasePregnancy preg in Pawn.health.hediffSet.GetHediffs()) { if (preg.GetMenstruationComp() == null) { @@ -991,7 +991,7 @@ namespace RJW_Menstruation } } - //Log.Message(parent.pawn.Label + " - Initialized menstruation comp"); + //Log.Message(Pawn.Label + " - Initialized menstruation comp"); loaded = true; } @@ -1017,19 +1017,18 @@ namespace RJW_Menstruation public int GetOvaryPowerByAge() { - Pawn pawn = parent.pawn; float avglittersize; try { - avglittersize = Mathf.Max(Rand.ByCurveAverage(pawn.def.race.litterSizeCurve), 1.0f); + avglittersize = Mathf.Max(Rand.ByCurveAverage(Pawn.def.race.litterSizeCurve), 1.0f); } catch (NullReferenceException) { avglittersize = 1.0f; } - float fertStartAge = pawn.RaceProps.lifeStageAges?.Find(stage => stage.def.reproductive)?.minAge ?? 0.0f; - float fertEndAge = pawn.RaceProps.lifeExpectancy * (pawn.IsAnimal() ? RJWPregnancySettings.fertility_endage_female_animal : RJWPregnancySettings.fertility_endage_female_humanlike); + float fertStartAge = Pawn.RaceProps.lifeStageAges?.Find(stage => stage.def.reproductive)?.minAge ?? 0.0f; + float fertEndAge = Pawn.RaceProps.lifeExpectancy * (Pawn.IsAnimal() ? RJWPregnancySettings.fertility_endage_female_animal : RJWPregnancySettings.fertility_endage_female_humanlike); if (fertEndAge < fertStartAge) fertEndAge = fertStartAge; float raceCyclesPerYear = RaceCyclesPerYear(); @@ -1037,7 +1036,7 @@ namespace RJW_Menstruation int lifetimeEggs = (int)(lifetimeCycles * avglittersize * Utility.RandGaussianLike(0.70f, 1.30f, 5)); float pawnCyclesPerYear = raceCyclesPerYear * cycleSpeed; - float pawnCyclesElapsed = Mathf.Max((pawn.ageTracker.AgeBiologicalYearsFloat - fertStartAge) * pawnCyclesPerYear, 0.0f); + float pawnCyclesElapsed = Mathf.Max((Pawn.ageTracker.AgeBiologicalYearsFloat - fertStartAge) * pawnCyclesPerYear, 0.0f); int pawnEggsUsed = PawnEggsUsed(pawnCyclesElapsed, avglittersize); return Math.Max(lifetimeEggs - pawnEggsUsed, 0); @@ -1054,16 +1053,16 @@ namespace RJW_Menstruation ovarypower = GetOvaryPowerByAge(); if (ovarypower < 1) { - Hediff hediff = HediffMaker.MakeHediff(VariousDefOf.Hediff_Menopause, parent.pawn); + Hediff hediff = HediffMaker.MakeHediff(VariousDefOf.Hediff_Menopause, Pawn); hediff.Severity = 0.2f; - parent.pawn.health.AddHediff(hediff, Genital_Helper.get_genitalsBPR(parent.pawn)); + Pawn.health.AddHediff(hediff, Genital_Helper.get_genitalsBPR(Pawn)); curStage = Stage.Young; } else if (ovarypower < OvaryPowerThreshold) { - Hediff hediff = HediffMaker.MakeHediff(VariousDefOf.Hediff_Climacteric, parent.pawn); + Hediff hediff = HediffMaker.MakeHediff(VariousDefOf.Hediff_Climacteric, Pawn); hediff.Severity = Mathf.InverseLerp(OvaryPowerThreshold, 0, ovarypower); - parent.pawn.health.AddHediff(hediff, Genital_Helper.get_genitalsBPR(parent.pawn)); + Pawn.health.AddHediff(hediff, Genital_Helper.get_genitalsBPR(Pawn)); } } } @@ -1082,7 +1081,7 @@ namespace RJW_Menstruation { if (Configurations.EnableMenopause && ovarypower < OvaryPowerThreshold) { - if (sexNeed == null) sexNeed = parent.pawn.needs.TryGetNeed(VariousDefOf.SexNeed); + if (sexNeed == null) sexNeed = Pawn.needs.TryGetNeed(VariousDefOf.SexNeed); else { if (sexNeed.CurLevel < 0.5) sexNeed.CurLevel += 0.01f; @@ -1093,16 +1092,16 @@ namespace RJW_Menstruation public void SetEstrus(int days) { HediffDef estrusdef = Props.concealedEstrus ? VariousDefOf.Hediff_Estrus_Concealed : VariousDefOf.Hediff_Estrus; - Hediff hediff = parent.pawn.health.hediffSet.GetFirstHediffOfDef(estrusdef); + Hediff hediff = Pawn.health.hediffSet.GetFirstHediffOfDef(estrusdef); if (Props.concealedEstrus) { - if (parent.pawn.health.hediffSet.HasHediff(VariousDefOf.Hediff_Estrus)) return; + if (Pawn.health.hediffSet.HasHediff(VariousDefOf.Hediff_Estrus)) return; } else { - Hediff concealedHediff = parent.pawn.health.hediffSet.GetFirstHediffOfDef(VariousDefOf.Hediff_Estrus_Concealed); - if (concealedHediff != null) parent.pawn.health.RemoveHediff(concealedHediff); + Hediff concealedHediff = Pawn.health.hediffSet.GetFirstHediffOfDef(VariousDefOf.Hediff_Estrus_Concealed); + if (concealedHediff != null) Pawn.health.RemoveHediff(concealedHediff); } if (hediff != null) @@ -1111,9 +1110,9 @@ namespace RJW_Menstruation } else { - hediff = HediffMaker.MakeHediff(estrusdef, parent.pawn); + hediff = HediffMaker.MakeHediff(estrusdef, Pawn); hediff.Severity = (float)days / Configurations.CycleAcceleration + 0.2f; - parent.pawn.health.AddHediff(hediff); + Pawn.health.AddHediff(hediff); } } @@ -1121,7 +1120,7 @@ namespace RJW_Menstruation { if (Props.breedingSeason == SeasonalBreed.Always) return true; - int tile = parent.pawn.Tile; + int tile = Pawn.Tile; if (tile < 0) tile = Find.AnyPlayerHomeMap?.Tile ?? -1; if (tile < 0) return true; switch (GenLocalDate.Season(tile)) @@ -1144,7 +1143,7 @@ namespace RJW_Menstruation protected Pawn Fertilize() { if (cums.NullOrEmpty()) return null; - List eligibleCum = cums.FindAll(cum => !cum.notcum && cum.FertVolume > 0 && cum.pawn != null && (RJWPregnancySettings.bestial_pregnancy_enabled || xxx.is_animal(parent.pawn) == xxx.is_animal(cum.pawn))); + List eligibleCum = cums.FindAll(cum => !cum.notcum && cum.FertVolume > 0 && cum.pawn != null && (RJWPregnancySettings.bestial_pregnancy_enabled || xxx.is_animal(Pawn) == xxx.is_animal(cum.pawn))); if (eligibleCum.Count == 0) return null; float totalFertPower = eligibleCum.Sum(cum => cum.FertVolume); @@ -1152,7 +1151,7 @@ namespace RJW_Menstruation if (Rand.Range(0.0f, 1.0f) > 1.0f - Mathf.Pow(1.0f - Configurations.FertilizeChance, totalFertPower * Props.basefertilizationChanceFactor)) return null; - parent.pawn.records.AddTo(VariousDefOf.AmountofFertilizedEggs, 1); + Pawn.records.AddTo(VariousDefOf.AmountofFertilizedEggs, 1); float selection = Rand.Range(0.0f, totalFertPower); foreach (Cum cum in eligibleCum) @@ -1183,7 +1182,7 @@ namespace RJW_Menstruation deadeggs.Add(egg); continue; } - else if (parent.pawn.health.hediffSet.GetHediffs().Any() || pregnancy is Hediff_MechanoidPregnancy) + else if (Pawn.health.hediffSet.GetHediffs().Any() || pregnancy is Hediff_MechanoidPregnancy) { deadeggs.Add(egg); continue; @@ -1196,7 +1195,7 @@ namespace RJW_Menstruation { if (pregnancy is Hediff_MultiplePregnancy h) { - h.AddNewBaby(parent.pawn, egg.fertilizer); + h.AddNewBaby(Pawn, egg.fertilizer); } pregnant = true; deadeggs.Add(egg); @@ -1211,15 +1210,15 @@ namespace RJW_Menstruation { if (!Configurations.UseMultiplePregnancy) { - PregnancyHelper.PregnancyDecider(parent.pawn, egg.fertilizer); + PregnancyHelper.PregnancyDecider(Pawn, egg.fertilizer); // I hate having to do this, but it gets the newest pregnancy - pregnancy = parent.pawn.health.hediffSet.GetHediffs().MaxBy(hediff => hediff.loadID); + pregnancy = Pawn.health.hediffSet.GetHediffs().MaxBy(hediff => hediff.loadID); pregnant = true; break; } else { - pregnancy = Hediff_BasePregnancy.Create(parent.pawn, egg.fertilizer); + pregnancy = Hediff_BasePregnancy.Create(Pawn, egg.fertilizer); pregnant = true; deadeggs.Add(egg); } @@ -1248,7 +1247,7 @@ namespace RJW_Menstruation protected void BleedOut() { - CumIn(parent.pawn, Rand.Range(0.02f * Configurations.BleedingAmount, 0.04f * Configurations.BleedingAmount), Translations.Menstrual_Blood, -5.0f, parent.pawn.def.race?.BloodDef ?? ThingDefOf.Filth_Blood); + CumIn(Pawn, Rand.Range(0.02f * Configurations.BleedingAmount, 0.04f * Configurations.BleedingAmount), Translations.Menstrual_Blood, -5.0f, Pawn.def.race?.BloodDef ?? ThingDefOf.Filth_Blood); Cum blood = GetNotCum(Translations.Menstrual_Blood); if (blood != null) blood.Color = BloodColor; } @@ -1260,8 +1259,8 @@ namespace RJW_Menstruation /// protected void MakeCumFilth(Cum cum, float amount) { - if (parent.pawn.Map == null) return; - if (amount >= minmakefilthvalue) FilthMaker.TryMakeFilth(parent.pawn.Position, parent.pawn.Map, cum.FilthDef, cum.pawn?.LabelShort ?? "Unknown"); + if (Pawn.Map == null) return; + if (amount >= minmakefilthvalue) FilthMaker.TryMakeFilth(Pawn.Position, Pawn.Map, cum.FilthDef, cum.pawn?.LabelShort ?? "Unknown"); } /// @@ -1276,7 +1275,7 @@ namespace RJW_Menstruation if (absorber == null) { - //if (amount >= minmakefilthvalue) FilthMaker.TryMakeFilth(parent.pawn.Position, parent.pawn.Map, cum.FilthDef, cum.pawn.LabelShort); + //if (amount >= minmakefilthvalue) FilthMaker.TryMakeFilth(Pawn.Position, Pawn.Map, cum.FilthDef, cum.pawn.LabelShort); return amount; } @@ -1284,11 +1283,11 @@ namespace RJW_Menstruation absorber.SetColor(Colors.CMYKLerp(GetCumMixtureColor, absorber.DrawColor, 1f - amount / absorbable)); if (absorber.dirty) { - //if (absorber.LeakAfterDirty) FilthMaker.TryMakeFilth(parent.pawn.Position, parent.pawn.Map, cum.FilthDef, cum.pawn.LabelShort); + //if (absorber.LeakAfterDirty) FilthMaker.TryMakeFilth(Pawn.Position, Pawn.Map, cum.FilthDef, cum.pawn.LabelShort); return amount; } absorber.absorbedfluids += amount; - if (absorber.absorbedfluids > absorbable && !parent.pawn.apparel.IsLocked(absorber)) + if (absorber.absorbedfluids > absorbable && !Pawn.apparel.IsLocked(absorber)) { absorber.def = absorber.DirtyDef; //absorber.fluidColor = GetCumMixtureColor; @@ -1299,10 +1298,10 @@ namespace RJW_Menstruation protected float MakeCumFilthMixture(float amount, List cumlabels) { - if (parent.pawn.Map == null) return 0; + if (Pawn.Map == null) return 0; if (amount >= minmakefilthvalue) { - FilthMaker_Colored.TryMakeFilth(parent.pawn.Position, parent.pawn.Map, VariousDefOf.FilthMixture, cumlabels, GetCumMixtureColor, false); + FilthMaker_Colored.TryMakeFilth(Pawn.Position, Pawn.Map, VariousDefOf.FilthMixture, cumlabels, GetCumMixtureColor, false); } return amount; } @@ -1335,11 +1334,11 @@ namespace RJW_Menstruation protected void AddCrampPain() { - Hediff hediff = HediffMaker.MakeHediff(VariousDefOf.Hediff_MenstrualCramp, parent.pawn); + Hediff hediff = HediffMaker.MakeHediff(VariousDefOf.Hediff_MenstrualCramp, Pawn); hediff.Severity = crampPain * Rand.Range(0.9f, 1.1f); HediffCompProperties_SeverityPerDay Prop = (HediffCompProperties_SeverityPerDay)hediff.TryGetComp().props; Prop.severityPerDay = -hediff.Severity / (currentIntervalHours / 24) * Configurations.CycleAcceleration; - parent.pawn.health.AddHediff(hediff, Genital_Helper.get_genitalsBPR(parent.pawn)); + Pawn.health.AddHediff(hediff, Genital_Helper.get_genitalsBPR(Pawn)); } protected virtual void FollicularAction(bool climacteric) @@ -1383,7 +1382,7 @@ namespace RJW_Menstruation float eggnum; try { - eggnum = Rand.ByCurve(parent.pawn.def.race.litterSizeCurve); + eggnum = Rand.ByCurve(Pawn.def.race.litterSizeCurve); } catch (NullReferenceException) { @@ -1391,7 +1390,7 @@ namespace RJW_Menstruation } catch (ArgumentException e) { - Log.Warning($"Invalid litterSizeCurve for {parent.pawn.def}: {e}"); + Log.Warning($"Invalid litterSizeCurve for {Pawn.def}: {e}"); eggnum = 1; } eggnum += eggstack; @@ -1406,19 +1405,19 @@ namespace RJW_Menstruation if (Configurations.EnableMenopause && ovarypower < 1) { eggs.Clear(); - Hediff hediff = parent.pawn.health.hediffSet.GetFirstHediffOfDef(VariousDefOf.Hediff_Climacteric); - if (hediff != null) parent.pawn.health.RemoveHediff(hediff); - hediff = HediffMaker.MakeHediff(VariousDefOf.Hediff_Menopause, parent.pawn); + Hediff hediff = Pawn.health.hediffSet.GetFirstHediffOfDef(VariousDefOf.Hediff_Climacteric); + if (hediff != null) Pawn.health.RemoveHediff(hediff); + hediff = HediffMaker.MakeHediff(VariousDefOf.Hediff_Menopause, Pawn); hediff.Severity = 0.2f; - parent.pawn.health.AddHediff(hediff, Genital_Helper.get_genitalsBPR(parent.pawn)); + Pawn.health.AddHediff(hediff, Genital_Helper.get_genitalsBPR(Pawn)); ovarypower = 0; GoNextStage(Stage.Young); } else if (Configurations.EnableMenopause && ovarypower < OvaryPowerThreshold) { - Hediff hediff = HediffMaker.MakeHediff(VariousDefOf.Hediff_Climacteric, parent.pawn); + Hediff hediff = HediffMaker.MakeHediff(VariousDefOf.Hediff_Climacteric, Pawn); hediff.Severity = Mathf.InverseLerp(OvaryPowerThreshold, 0, ovarypower); - parent.pawn.health.AddHediff(hediff, Genital_Helper.get_genitalsBPR(parent.pawn)); + Pawn.health.AddHediff(hediff, Genital_Helper.get_genitalsBPR(Pawn)); GoNextStage(Stage.ClimactericLuteal); } else @@ -1485,8 +1484,8 @@ namespace RJW_Menstruation } else if (curStageHrs >= currentIntervalHours) { - Hediff hediff = parent.pawn.health.hediffSet.GetFirstHediffOfDef(VariousDefOf.Hediff_MenstrualCramp); - if (hediff != null) parent.pawn.health.RemoveHediff(hediff); + Hediff hediff = Pawn.health.hediffSet.GetFirstHediffOfDef(VariousDefOf.Hediff_MenstrualCramp); + if (hediff != null) Pawn.health.RemoveHediff(hediff); int totalFollicularHours = PeriodRandomizer(climacteric ? Stage.ClimactericFollicular : Stage.Follicular, climacteric ? 6.0f : 1.0f); // The total amount of time for both bleeding and follicular if (totalFollicularHours <= currentIntervalHours) // We've bled for so long that we completely missed the follicular phase GoOvulatoryStage(climacteric); @@ -1513,7 +1512,7 @@ namespace RJW_Menstruation Implant(); } - if (parent.pawn.health.hediffSet.hediffs.Contains(pregnancy)) + if (Pawn.health.hediffSet.hediffs.Contains(pregnancy)) { curStageHrs += 1; StayCurrentStageConst(Stage.Pregnant); @@ -1533,7 +1532,7 @@ namespace RJW_Menstruation { GoNextStage(Stage.ClimactericFollicular); } - else if (parent.pawn.health.capacities.GetLevel(xxx.reproduction) == 0) + else if (Pawn.health.capacities.GetLevel(xxx.reproduction) == 0) { GoNextStage(Stage.Young); } @@ -1555,7 +1554,7 @@ namespace RJW_Menstruation { RemoveClimactericEffect(); } - if (parent.pawn.health.capacities.GetLevel(xxx.reproduction) <= 0) + if (Pawn.health.capacities.GetLevel(xxx.reproduction) <= 0) { StayCurrentStageConst(Stage.Young); } @@ -1580,54 +1579,54 @@ namespace RJW_Menstruation protected virtual void ThoughtCumInside(Pawn cummer) { - if (!xxx.is_human(parent.pawn) || !xxx.is_human(cummer)) return; + if (!xxx.is_human(Pawn) || !xxx.is_human(cummer)) return; - if ((cummer.Has(Quirk.Teratophile) != (parent.pawn.GetStatValue(StatDefOf.PawnBeauty) >= 0)) || + if ((cummer.Has(Quirk.Teratophile) != (Pawn.GetStatValue(StatDefOf.PawnBeauty) >= 0)) || cummer.Has(Quirk.ImpregnationFetish) || cummer.Has(Quirk.Breeder)) { - if (cummer.relations.OpinionOf(parent.pawn) <= -25) + if (cummer.relations.OpinionOf(Pawn) <= -25) { - cummer.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideM, parent.pawn); + cummer.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideM, Pawn); } else { - cummer.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideM, parent.pawn); + cummer.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideM, Pawn); } } if (IsDangerDay) { - if (parent.pawn.Has(Quirk.Breeder) || parent.pawn.Has(Quirk.ImpregnationFetish)) + if (Pawn.Has(Quirk.Breeder) || Pawn.Has(Quirk.ImpregnationFetish)) { - parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFFetish, cummer); + Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFFetish, cummer); } - else if (parent.pawn.relations.OpinionOf(cummer) <= -5) + else if (Pawn.relations.OpinionOf(cummer) <= -5) { - parent.pawn.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(VariousDefOf.CameInsideF, cummer); - parent.pawn.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(VariousDefOf.HaterCameInsideFEstrus, cummer); - parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideF, cummer); + Pawn.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(VariousDefOf.CameInsideF, cummer); + Pawn.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(VariousDefOf.HaterCameInsideFEstrus, cummer); + Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideF, cummer); } - else if (parent.pawn.IsInEstrus() && parent.pawn.relations.OpinionOf(cummer) < RJWHookupSettings.MinimumRelationshipToHookup) + else if (Pawn.IsInEstrus() && Pawn.relations.OpinionOf(cummer) < RJWHookupSettings.MinimumRelationshipToHookup) { - parent.pawn.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(VariousDefOf.CameInsideF, cummer); - parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideFEstrus, cummer); + Pawn.needs.mood.thoughts.memories.RemoveMemoriesOfDefWhereOtherPawnIs(VariousDefOf.CameInsideF, cummer); + Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideFEstrus, cummer); } - else if (!parent.pawn.relations.DirectRelationExists(PawnRelationDefOf.Spouse, cummer) && !parent.pawn.relations.DirectRelationExists(PawnRelationDefOf.Fiance, cummer)) + else if (!Pawn.relations.DirectRelationExists(PawnRelationDefOf.Spouse, cummer) && !Pawn.relations.DirectRelationExists(PawnRelationDefOf.Fiance, cummer)) { - if (parent.pawn.health.capacities.GetLevel(xxx.reproduction) < 0.50f) parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFLowFert, cummer); - else parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideF, cummer); + if (Pawn.health.capacities.GetLevel(xxx.reproduction) < 0.50f) Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFLowFert, cummer); + else Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideF, cummer); } } else { - if (parent.pawn.Has(Quirk.Breeder) || parent.pawn.Has(Quirk.ImpregnationFetish)) + if (Pawn.Has(Quirk.Breeder) || Pawn.Has(Quirk.ImpregnationFetish)) { - parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFFetishSafe, cummer); + Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.CameInsideFFetishSafe, cummer); } - else if (parent.pawn.relations.OpinionOf(cummer) <= -5) + else if (Pawn.relations.OpinionOf(cummer) <= -5) { - parent.pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideFSafe, cummer); + Pawn.needs.mood.thoughts.memories.TryGainMemory(VariousDefOf.HaterCameInsideFSafe, cummer); } } } @@ -1635,11 +1634,11 @@ namespace RJW_Menstruation protected virtual void TaleCumInside(Pawn cummer) { // Only make the tale for human-on-human, consentual sex. Otherwise the art just gets too hard to phrase properly - if (!xxx.is_human(parent.pawn) || !xxx.is_human(cummer) || parent.pawn == cummer) return; - if (parent.pawn.CurJobDef != xxx.casual_sex && parent.pawn.CurJobDef != xxx.gettin_loved) return; - if (!(parent.pawn.IsColonist || parent.pawn.IsPrisonerOfColony) && !(cummer.IsColonist || cummer.IsPrisonerOfColony)) return; + if (!xxx.is_human(Pawn) || !xxx.is_human(cummer) || Pawn == cummer) return; + if (Pawn.CurJobDef != xxx.casual_sex && Pawn.CurJobDef != xxx.gettin_loved) return; + if (!(Pawn.IsColonist || Pawn.IsPrisonerOfColony) && !(cummer.IsColonist || cummer.IsPrisonerOfColony)) return; if (!IsDangerDay) return; - TaleRecorder.RecordTale(VariousDefOf.TaleCameInside, new object[] { cummer, parent.pawn }); + TaleRecorder.RecordTale(VariousDefOf.TaleCameInside, new object[] { cummer, Pawn }); } protected void GoNextStage(Stage nextstage, bool calculateHours = true) @@ -1680,10 +1679,10 @@ namespace RJW_Menstruation protected void RemoveClimactericEffect() { - Hediff hediff = parent.pawn.health.hediffSet.GetFirstHediffOfDef(VariousDefOf.Hediff_Climacteric); - if (hediff != null) parent.pawn.health.RemoveHediff(hediff); - hediff = parent.pawn.health.hediffSet.GetFirstHediffOfDef(VariousDefOf.Hediff_Menopause); - if (hediff != null) parent.pawn.health.RemoveHediff(hediff); + Hediff hediff = Pawn.health.hediffSet.GetFirstHediffOfDef(VariousDefOf.Hediff_Climacteric); + if (hediff != null) Pawn.health.RemoveHediff(hediff); + hediff = Pawn.health.hediffSet.GetFirstHediffOfDef(VariousDefOf.Hediff_Menopause); + if (hediff != null) Pawn.health.RemoveHediff(hediff); if (curStage == Stage.ClimactericBleeding) curStage = Stage.Bleeding; else if (curStage == Stage.ClimactericFollicular) curStage = Stage.Follicular; else if (curStage == Stage.ClimactericLuteal) curStage = Stage.Luteal; @@ -1714,10 +1713,10 @@ namespace RJW_Menstruation protected float InterspeciesImplantFactor(Pawn fertilizer) { - if (fertilizer.def.defName == parent.pawn.def.defName) return 1.0f; + if (fertilizer.def.defName == Pawn.def.defName) return 1.0f; else { - if (RJWPregnancySettings.complex_interspecies) return SexUtility.BodySimilarity(parent.pawn, fertilizer); + if (RJWPregnancySettings.complex_interspecies) return SexUtility.BodySimilarity(Pawn, fertilizer); else return RJWPregnancySettings.interspecies_impregnation_modifier; } }