From 8f4dd2eb7b3a6bf0ffde4c315dd87b99d59c6796 Mon Sep 17 00:00:00 2001 From: Michele Cattafesta Date: Fri, 26 Aug 2016 13:08:13 +0200 Subject: [PATCH] removed files not used. Signed-off-by: Michele Cattafesta --- S7.Net.Common/Conversion.cs | 235 - S7.Net.Common/Enums.cs | 51 - S7.Net.Common/Types/Boolean.cs | 26 - S7.Net.Common/Types/Byte.cs | 20 - S7.Net.Common/Types/ByteArray.cs | 44 - S7.Net.Common/Types/Class.cs | 234 - S7.Net.Common/Types/Counter.cs | 61 - S7.Net.Common/Types/DInt.cs | 71 - S7.Net.Common/Types/DWord.cs | 59 - S7.Net.Common/Types/DataItem.cs | 18 - S7.Net.Common/Types/Double.cs | 166 - S7.Net.Common/Types/Int.cs | 74 - S7.Net.Common/Types/String.cs | 34 - S7.Net.Common/Types/Struct.cs | 237 - S7.Net.Common/Types/Timer.cs | 74 - S7.Net.Common/Types/Word.cs | 61 - packages/NUnit.2.6.2/NUnit.2.6.2.nupkg | Bin 94702 -> 0 bytes packages/NUnit.2.6.2/NUnit.2.6.2.nuspec | 30 - packages/NUnit.2.6.2/lib/nunit.framework.dll | Bin 147456 -> 0 bytes packages/NUnit.2.6.2/lib/nunit.framework.xml | 10899 ---------------- packages/NUnit.2.6.2/license.txt | 15 - .../Should.1.1.12.0/Should.1.1.12.0.nupkg | Bin 16895 -> 0 bytes .../Should.1.1.12.0/Should.1.1.12.0.nuspec | 16 - packages/Should.1.1.12.0/lib/Should.dll | Bin 26624 -> 0 bytes packages/repositories.config | 2 - 25 files changed, 12427 deletions(-) delete mode 100644 S7.Net.Common/Conversion.cs delete mode 100644 S7.Net.Common/Enums.cs delete mode 100644 S7.Net.Common/Types/Boolean.cs delete mode 100644 S7.Net.Common/Types/Byte.cs delete mode 100644 S7.Net.Common/Types/ByteArray.cs delete mode 100644 S7.Net.Common/Types/Class.cs delete mode 100644 S7.Net.Common/Types/Counter.cs delete mode 100644 S7.Net.Common/Types/DInt.cs delete mode 100644 S7.Net.Common/Types/DWord.cs delete mode 100644 S7.Net.Common/Types/DataItem.cs delete mode 100644 S7.Net.Common/Types/Double.cs delete mode 100644 S7.Net.Common/Types/Int.cs delete mode 100644 S7.Net.Common/Types/String.cs delete mode 100644 S7.Net.Common/Types/Struct.cs delete mode 100644 S7.Net.Common/Types/Timer.cs delete mode 100644 S7.Net.Common/Types/Word.cs delete mode 100644 packages/NUnit.2.6.2/NUnit.2.6.2.nupkg delete mode 100644 packages/NUnit.2.6.2/NUnit.2.6.2.nuspec delete mode 100644 packages/NUnit.2.6.2/lib/nunit.framework.dll delete mode 100644 packages/NUnit.2.6.2/lib/nunit.framework.xml delete mode 100644 packages/NUnit.2.6.2/license.txt delete mode 100644 packages/Should.1.1.12.0/Should.1.1.12.0.nupkg delete mode 100644 packages/Should.1.1.12.0/Should.1.1.12.0.nuspec delete mode 100644 packages/Should.1.1.12.0/lib/Should.dll delete mode 100644 packages/repositories.config diff --git a/S7.Net.Common/Conversion.cs b/S7.Net.Common/Conversion.cs deleted file mode 100644 index 360e282..0000000 --- a/S7.Net.Common/Conversion.cs +++ /dev/null @@ -1,235 +0,0 @@ -using System; -using System.Globalization; - -namespace S7.Net -{ - public static class Conversion - { - /// - /// Converts a binary string to Int32 value - /// - /// - /// - public static int BinStringToInt32(this string txt) - { - int cnt = 0; - int ret = 0; - - for (cnt = txt.Length - 1; cnt >= 0; cnt += -1) - { - if (int.Parse(txt.Substring(cnt, 1)) == 1) - { - ret += (int)(Math.Pow(2, (txt.Length - 1 - cnt))); - } - } - return ret; - } - - public static byte? BinStringToByte(this string txt) - { - int cnt = 0; - int ret = 0; - - if (txt.Length == 8) - { - for (cnt = 7; cnt >= 0; cnt += -1) - { - if (int.Parse(txt.Substring(cnt, 1)) == 1) - { - ret += (int)(Math.Pow(2, (txt.Length - 1 - cnt))); - } - } - return (byte)ret; - } - return null; - } - - /// - /// Converts the value to a binary string - /// - /// - /// - public static string ValToBinString(this object value) - { - int cnt = 0; - int cnt2 = 0; - int x = 0; - string txt = ""; - long longValue = 0; - - try - { - if (value.GetType().Name.IndexOf("[]") < 0) - { - // ist nur ein Wert - switch (value.GetType().Name) - { - case "Byte": - x = 7; - longValue = (long)((byte)value); - break; - case "Int16": - x = 15; - longValue = (long)((Int16)value); - break; - case "Int32": - x = 31; - longValue = (long)((Int32)value); - break; - case "Int64": - x = 63; - longValue = (long)((Int64)value); - break; - default: - throw new Exception(); - } - - for (cnt = x; cnt >= 0; cnt += -1) - { - if (((Int64)longValue & (Int64)Math.Pow(2, cnt)) > 0) - txt += "1"; - else - txt += "0"; - } - } - else - { - // ist ein Array - switch (value.GetType().Name) - { - case "Byte[]": - x = 7; - byte[] ByteArr = (byte[])value; - for (cnt2 = 0; cnt2 <= ByteArr.Length - 1; cnt2++) - { - for (cnt = x; cnt >= 0; cnt += -1) - if ((ByteArr[cnt2] & (byte)Math.Pow(2, cnt)) > 0) txt += "1"; else txt += "0"; - } - break; - case "Int16[]": - x = 15; - Int16[] Int16Arr = (Int16[])value; - for (cnt2 = 0; cnt2 <= Int16Arr.Length - 1; cnt2++) - { - for (cnt = x; cnt >= 0; cnt += -1) - if ((Int16Arr[cnt2] & (byte)Math.Pow(2, cnt)) > 0) txt += "1"; else txt += "0"; - } - break; - case "Int32[]": - x = 31; - Int32[] Int32Arr = (Int32[])value; - for (cnt2 = 0; cnt2 <= Int32Arr.Length - 1; cnt2++) - { - for (cnt = x; cnt >= 0; cnt += -1) - if ((Int32Arr[cnt2] & (byte)Math.Pow(2, cnt)) > 0) txt += "1"; else txt += "0"; - } - break; - case "Int64[]": - x = 63; - byte[] Int64Arr = (byte[])value; - for (cnt2 = 0; cnt2 <= Int64Arr.Length - 1; cnt2++) - { - for (cnt = x; cnt >= 0; cnt += -1) - if ((Int64Arr[cnt2] & (byte)Math.Pow(2, cnt)) > 0) txt += "1"; else txt += "0"; - } - break; - default: - throw new Exception(); - } - } - return txt; - } - catch - { - return ""; - } - } - - /// - /// Helper to get a bit value given a byte and the bit index. - /// Example: DB1.DBX0.5 -> var bytes = ReadBytes(DB1.DBW0); bool bit = bytes[0].SelectBit(5); - /// - /// - /// - /// - public static bool SelectBit(this byte data, int bitPosition) - { - int mask = 1 << bitPosition; - int result = data & mask; - - return (result != 0); - } - - /// - /// Converts from ushort value to short value; it's used to retrieve negative values from words - /// - /// - /// - public static short ConvertToShort(this ushort input) - { - short output; - output = short.Parse(input.ToString("X"), NumberStyles.HexNumber); - return output; - } - - /// - /// Converts from short value to ushort value; it's used to pass negative values to DWs - /// - /// - /// - public static ushort ConvertToUshort(this short input) - { - ushort output; - output = ushort.Parse(input.ToString("X"), NumberStyles.HexNumber); - return output; - } - - /// - /// Converts from UInt32 value to Int32 value; it's used to retrieve negative values from DBDs - /// - /// - /// - public static Int32 ConvertToInt(this uint input) - { - int output; - output = int.Parse(input.ToString("X"), NumberStyles.HexNumber); - return output; - } - - /// - /// Converts from Int32 value to UInt32 value; it's used to pass negative values to DBDs - /// - /// - /// - public static UInt32 ConvertToUInt(this int input) - { - uint output; - output = uint.Parse(input.ToString("X"), NumberStyles.HexNumber); - return output; - } - - /// - /// Converts from double to DWord (DBD) - /// - /// - /// - public static UInt32 ConvertToUInt(this double input) - { - uint output; - output = S7.Net.Types.DWord.FromByteArray(S7.Net.Types.Double.ToByteArray(input)); - return output; - } - - /// - /// Converts from DWord (DBD) to double - /// - /// - /// - public static double ConvertToDouble(this uint input) - { - double output; - output = S7.Net.Types.Double.FromByteArray(S7.Net.Types.DWord.ToByteArray(input)); - return output; - } - } -} diff --git a/S7.Net.Common/Enums.cs b/S7.Net.Common/Enums.cs deleted file mode 100644 index 56aaa87..0000000 --- a/S7.Net.Common/Enums.cs +++ /dev/null @@ -1,51 +0,0 @@ -namespace S7.Net -{ - public enum CpuType - { - S7200 = 0, - S7300 = 10, - S7400 = 20, - S71200 = 30, - S71500 = 40, - } - - public enum ErrorCode - { - NoError = 0, - WrongCPU_Type = 1, - ConnectionError = 2, - IPAddressNotAvailable, - - WrongVarFormat = 10, - WrongNumberReceivedBytes = 11, - - SendData = 20, - ReadData = 30, - - WriteData = 50 - } - - public enum DataType - { - Input = 129, - Output = 130, - Memory = 131, - DataBlock = 132, - Timer = 29, - Counter = 28 - } - - public enum VarType - { - Bit, - Byte, - Word, - DWord, - Int, - DInt, - Real, - String, - Timer, - Counter - } -} diff --git a/S7.Net.Common/Types/Boolean.cs b/S7.Net.Common/Types/Boolean.cs deleted file mode 100644 index bcbdefd..0000000 --- a/S7.Net.Common/Types/Boolean.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System; - -namespace S7.Net.Types -{ - public static class Boolean - { - public static bool GetValue(byte value, int bit) - { - if ((value & (int)Math.Pow(2, bit)) != 0) - return true; - else - return false; - } - - public static byte SetBit(byte value, int bit) - { - return (byte)(value | (byte)Math.Pow(2, bit)); - } - - public static byte ClearBit(byte value, int bit) - { - return (byte)(value & (byte)(~(byte)Math.Pow(2, bit))); - } - - } -} diff --git a/S7.Net.Common/Types/Byte.cs b/S7.Net.Common/Types/Byte.cs deleted file mode 100644 index 5cdd445..0000000 --- a/S7.Net.Common/Types/Byte.cs +++ /dev/null @@ -1,20 +0,0 @@ -namespace S7.Net.Types -{ - public static class Byte - { - // publics - #region ToByteArray - public static byte[] ToByteArray(byte value) - { - byte[] bytes = new byte[] { value}; - return bytes; - } - #endregion - #region FromByteArray - public static byte FromByteArray(byte[] bytes) - { - return bytes[0]; - } - #endregion - } -} diff --git a/S7.Net.Common/Types/ByteArray.cs b/S7.Net.Common/Types/ByteArray.cs deleted file mode 100644 index 0b0c708..0000000 --- a/S7.Net.Common/Types/ByteArray.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System.Collections.Generic; - -namespace S7.Net.Types -{ - class ByteArray - { - List list = new List(); - - public byte[] array - { - get { return list.ToArray(); } - } - - public ByteArray() - { - list = new List(); - } - - public ByteArray(int size) - { - list = new List(size); - } - - public void Clear() - { - list = new List(); - } - - public void Add(byte item) - { - list.Add(item); - } - - public void Add(byte[] items) - { - list.AddRange(items); - } - - public void Add(ByteArray byteArray) - { - list.AddRange(byteArray.array); - } - } -} diff --git a/S7.Net.Common/Types/Class.cs b/S7.Net.Common/Types/Class.cs deleted file mode 100644 index bd47432..0000000 --- a/S7.Net.Common/Types/Class.cs +++ /dev/null @@ -1,234 +0,0 @@ -using System; -using System.Reflection; - -namespace S7.Net.Types -{ - public static class Class - { - /// - /// Gets the size of the struct in bytes. - /// - /// the type of the class - /// the number of bytes - public static int GetClassSize(Type classType) - { - double numBytes = 0.0; - - var properties = classType.GetProperties(); - foreach (var property in properties) - { - switch (property.PropertyType.Name) - { - case "Boolean": - numBytes += 0.125; - break; - case "Byte": - numBytes = Math.Ceiling(numBytes); - numBytes++; - break; - case "Int16": - case "UInt16": - numBytes = Math.Ceiling(numBytes); - if ((numBytes / 2 - Math.Floor(numBytes / 2.0)) > 0) - numBytes++; - numBytes += 2; - break; - case "Int32": - case "UInt32": - numBytes = Math.Ceiling(numBytes); - if ((numBytes / 2 - Math.Floor(numBytes / 2.0)) > 0) - numBytes++; - numBytes += 4; - break; - case "Float": - case "Double": - numBytes = Math.Ceiling(numBytes); - if ((numBytes / 2 - Math.Floor(numBytes / 2.0)) > 0) - numBytes++; - numBytes += 4; - break; - default: - numBytes += GetClassSize(property.PropertyType); - break; - } - } - return (int)numBytes; - } - - /// - /// Creates a struct of a specified type by an array of bytes. - /// - /// - /// The struct type - /// The array of bytes - /// The object depending on the struct type or null if fails(array-length != struct-length - public static void FromBytes(object sourceClass, Type classType, byte[] bytes) - { - if (bytes == null) - return; - - if (bytes.Length != GetClassSize(classType)) - return; - - // and decode it - int bytePos = 0; - int bitPos = 0; - double numBytes = 0.0; - - - var properties = sourceClass.GetType().GetProperties(); - foreach (var property in properties) - { - switch (property.PropertyType.Name) - { - case "Boolean": - // get the value - bytePos = (int)Math.Floor(numBytes); - bitPos = (int)((numBytes - (double)bytePos) / 0.125); - if ((bytes[bytePos] & (int)Math.Pow(2, bitPos)) != 0) - property.SetValue(sourceClass, true, null); - else - property.SetValue(sourceClass, false, null); - numBytes += 0.125; - break; - case "Byte": - numBytes = Math.Ceiling(numBytes); - property.SetValue(sourceClass, (byte)(bytes[(int)numBytes]), null); - numBytes++; - break; - case "Int16": - numBytes = Math.Ceiling(numBytes); - if ((numBytes / 2 - Math.Floor(numBytes / 2.0)) > 0) - numBytes++; - // hier auswerten - ushort source = Word.FromBytes(bytes[(int)numBytes + 1], bytes[(int)numBytes]); - property.SetValue(sourceClass, source.ConvertToShort(), null); - numBytes += 2; - break; - case "UInt16": - numBytes = Math.Ceiling(numBytes); - if ((numBytes / 2 - Math.Floor(numBytes / 2.0)) > 0) - numBytes++; - // hier auswerten - property.SetValue(sourceClass, Word.FromBytes(bytes[(int)numBytes + 1], bytes[(int)numBytes]), null); - numBytes += 2; - break; - case "Int32": - numBytes = Math.Ceiling(numBytes); - if ((numBytes / 2 - Math.Floor(numBytes / 2.0)) > 0) - numBytes++; - // hier auswerten - uint sourceUInt = DWord.FromBytes(bytes[(int)numBytes + 3], - bytes[(int)numBytes + 2], - bytes[(int)numBytes + 1], - bytes[(int)numBytes + 0]); - property.SetValue(sourceClass, sourceUInt.ConvertToInt(), null); - numBytes += 4; - break; - case "UInt32": - numBytes = Math.Ceiling(numBytes); - if ((numBytes / 2 - Math.Floor(numBytes / 2.0)) > 0) - numBytes++; - // hier auswerten - property.SetValue(sourceClass, DWord.FromBytes(bytes[(int)numBytes], - bytes[(int)numBytes + 1], - bytes[(int)numBytes + 2], - bytes[(int)numBytes + 3]), null); - numBytes += 4; - break; - case "Double": - numBytes = Math.Ceiling(numBytes); - if ((numBytes / 2 - Math.Floor(numBytes / 2.0)) > 0) - numBytes++; - // hier auswerten - property.SetValue(sourceClass, Double.FromByteArray(new byte[] { bytes[(int)numBytes], - bytes[(int)numBytes + 1], - bytes[(int)numBytes + 2], - bytes[(int)numBytes + 3] }), null); - numBytes += 4; - break; - default: - var buffer = new byte[GetClassSize(property.PropertyType)]; - if (buffer.Length == 0) - continue; - Buffer.BlockCopy(bytes, (int)Math.Ceiling(numBytes), buffer, 0, buffer.Length); - var propClass = Activator.CreateInstance(property.PropertyType); - FromBytes(propClass, property.PropertyType, buffer); - property.SetValue(sourceClass, propClass, null); - numBytes += buffer.Length; - break; - } - } - } - - /// - /// Creates a byte array depending on the struct type. - /// - /// The struct object - /// A byte array or null if fails. - public static byte[] ToBytes(object sourceClass) - { - Type type = sourceClass.GetType(); - - int size = GetClassSize(type); - byte[] bytes = new byte[size]; - byte[] bytes2 = null; - - int bytePos = 0; - int bitPos = 0; - double numBytes = 0.0; - - var properties = sourceClass.GetType().GetProperties(); - foreach (var property in properties) - { - bytes2 = null; - switch (property.PropertyType.Name) - { - case "Boolean": - // get the value - bytePos = (int)Math.Floor(numBytes); - bitPos = (int)((numBytes - (double)bytePos) / 0.125); - if ((bool)property.GetValue(sourceClass, null)) - bytes[bytePos] |= (byte)Math.Pow(2, bitPos); // is true - else - bytes[bytePos] &= (byte)(~(byte)Math.Pow(2, bitPos)); // is false - numBytes += 0.125; - break; - case "Byte": - numBytes = (int)Math.Ceiling(numBytes); - bytePos = (int)numBytes; - bytes[bytePos] = (byte)property.GetValue(sourceClass, null); - numBytes++; - break; - case "Int16": - bytes2 = Int.ToByteArray((Int16)property.GetValue(sourceClass, null)); - break; - case "UInt16": - bytes2 = Word.ToByteArray((UInt16)property.GetValue(sourceClass, null)); - break; - case "Int32": - bytes2 = DInt.ToByteArray((Int32)property.GetValue(sourceClass, null)); - break; - case "UInt32": - bytes2 = DWord.ToByteArray((UInt32)property.GetValue(sourceClass, null)); - break; - case "Double": - bytes2 = Double.ToByteArray((double)property.GetValue(sourceClass, null)); - break; - } - if (bytes2 != null) - { - // add them - numBytes = Math.Ceiling(numBytes); - if ((numBytes / 2 - Math.Floor(numBytes / 2.0)) > 0) - numBytes++; - bytePos = (int)numBytes; - for (int bCnt = 0; bCnt < bytes2.Length; bCnt++) - bytes[bytePos + bCnt] = bytes2[bCnt]; - numBytes += bytes2.Length; - } - } - return bytes; - } - } -} diff --git a/S7.Net.Common/Types/Counter.cs b/S7.Net.Common/Types/Counter.cs deleted file mode 100644 index 1602693..0000000 --- a/S7.Net.Common/Types/Counter.cs +++ /dev/null @@ -1,61 +0,0 @@ -using System; - -namespace S7.Net.Types -{ - public static class Counter - { - // publics - #region FromByteArray - public static UInt16 FromByteArray(byte[] bytes) - { - // bytes[0] -> HighByte - // bytes[1] -> LowByte - return FromBytes(bytes[1], bytes[0]); - } - #endregion - #region FromBytes - public static UInt16 FromBytes(byte LoVal, byte HiVal) - { - return (UInt16)(HiVal * 256 + LoVal); - } - #endregion - - #region ToByteArray - public static byte[] ToByteArray(UInt16 value) - { - byte[] bytes = new byte[2]; - int x = 2; - long valLong = (long)((UInt16)value); - for (int cnt = 0; cnt < x; cnt++) - { - Int64 x1 = (Int64)Math.Pow(256, (cnt)); - - Int64 x3 = (Int64)(valLong / x1); - bytes[x - cnt - 1] = (byte)(x3 & 255); - valLong -= bytes[x - cnt - 1] * x1; - } - return bytes; - } - - public static byte[] ToByteArray(UInt16[] value) - { - ByteArray arr = new ByteArray(); - foreach (UInt16 val in value) - arr.Add(ToByteArray(val)); - return arr.array; - } - #endregion - #region ToArray - public static UInt16[] ToArray(byte[] bytes) - { - UInt16[] values = new UInt16[bytes.Length / 2]; - - int counter = 0; - for (int cnt = 0; cnt < bytes.Length / 2; cnt++) - values[cnt] = FromByteArray(new byte[] { bytes[counter++], bytes[counter++] }); - - return values; - } - #endregion - } -} diff --git a/S7.Net.Common/Types/DInt.cs b/S7.Net.Common/Types/DInt.cs deleted file mode 100644 index c610efc..0000000 --- a/S7.Net.Common/Types/DInt.cs +++ /dev/null @@ -1,71 +0,0 @@ -using System; - -namespace S7.Net.Types -{ - public static class DInt - { - // publics - #region FromByteArray - public static Int32 FromByteArray(byte[] bytes) - { - return FromBytes(bytes[3], bytes[2], bytes[1], bytes[0]); - } - #endregion - #region FromBytes - public static Int32 FromBytes(byte v1, byte v2, byte v3, byte v4) - { - return (Int32)(v1 + v2 * Math.Pow(2, 8) + v3 * Math.Pow(2, 16) + v4 * Math.Pow(2, 24)); - } - #endregion - - #region ToByteArray - public static byte[] ToByteArray(Int32 value) - { - byte[] bytes = new byte[4]; - int x = 4; - long valLong = (long)((Int32)value); - for (int cnt = 0; cnt < x; cnt++) - { - Int64 x1 = (Int64)Math.Pow(256, (cnt)); - - Int64 x3 = (Int64)(valLong / x1); - bytes[x - cnt - 1] = (byte)(x3 & 255); - valLong -= bytes[x - cnt - 1] * x1; - } - return bytes; - } - - public static byte[] ToByteArray(Int32[] value) - { - ByteArray arr = new ByteArray(); - foreach (Int32 val in value) - arr.Add(ToByteArray(val)); - return arr.array; - } - #endregion - #region ToArray - public static Int32[] ToArray(byte[] bytes) - { - Int32[] values = new Int32[bytes.Length / 4]; - - int counter = 0; - for (int cnt = 0; cnt < bytes.Length / 4; cnt++) - values[cnt] = FromByteArray(new byte[] { bytes[counter++], bytes[counter++], bytes[counter++], bytes[counter++] }); - - return values; - } - #endregion - - // conversion - public static Int32 CDWord(Int64 value) - { - if (value > Int32.MaxValue) - { - value -= (long)Int32.MaxValue + 1; - value = (long)Int32.MaxValue + 1 - value; - value *= -1; - } - return (int)value; - } - } -} diff --git a/S7.Net.Common/Types/DWord.cs b/S7.Net.Common/Types/DWord.cs deleted file mode 100644 index 20a2e67..0000000 --- a/S7.Net.Common/Types/DWord.cs +++ /dev/null @@ -1,59 +0,0 @@ -using System; - -namespace S7.Net.Types -{ - public static class DWord - { - // publics - #region FromByteArray - public static UInt32 FromByteArray(byte[] bytes) - { - return FromBytes(bytes[3], bytes[2], bytes[1], bytes[0]); - } - #endregion - #region FromBytes - public static UInt32 FromBytes(byte v1, byte v2, byte v3, byte v4) - { - return (UInt32)(v1 + v2 * Math.Pow(2, 8) + v3 * Math.Pow(2, 16) + v4 * Math.Pow(2, 24)); - } - #endregion - - #region ToByteArray - public static byte[] ToByteArray(UInt32 value) - { - byte[] bytes = new byte[4]; - int x = 4; - long valLong = (long)((UInt32)value); - for (int cnt = 0; cnt < x; cnt++) - { - Int64 x1 = (Int64)Math.Pow(256, (cnt)); - - Int64 x3 = (Int64)(valLong / x1); - bytes[x - cnt - 1] = (byte)(x3 & 255); - valLong -= bytes[x - cnt - 1] * x1; - } - return bytes; - } - - public static byte[] ToByteArray(UInt32[] value) - { - ByteArray arr = new ByteArray(); - foreach (UInt32 val in value) - arr.Add(ToByteArray(val)); - return arr.array; - } - #endregion - #region ToArray - public static UInt32[] ToArray(byte[] bytes) - { - UInt32[] values = new UInt32[bytes.Length / 4]; - - int counter = 0; - for (int cnt = 0; cnt < bytes.Length / 4; cnt++) - values[cnt] = FromByteArray(new byte[] { bytes[counter++], bytes[counter++], bytes[counter++], bytes[counter++] }); - - return values; - } - #endregion - } -} diff --git a/S7.Net.Common/Types/DataItem.cs b/S7.Net.Common/Types/DataItem.cs deleted file mode 100644 index b5d7e78..0000000 --- a/S7.Net.Common/Types/DataItem.cs +++ /dev/null @@ -1,18 +0,0 @@ -namespace S7.Net.Types -{ - public class DataItem - { - public DataType DataType { get; set; } - public VarType VarType { get; set; } - public int DB { get; set; } - public int StartByteAdr { get; set; } - public int Count { get; set; } - - public object Value { get; set; } - - public DataItem() - { - Count = 1; - } - } -} diff --git a/S7.Net.Common/Types/Double.cs b/S7.Net.Common/Types/Double.cs deleted file mode 100644 index 2223edd..0000000 --- a/S7.Net.Common/Types/Double.cs +++ /dev/null @@ -1,166 +0,0 @@ -using System; - -namespace S7.Net.Types -{ - public static class Double - { - // publics - #region FromByteArray - public static double FromByteArray(byte[] bytes) - { - byte v1 = bytes[0]; - byte v2 = bytes[1]; - byte v3 = bytes[2]; - byte v4 = bytes[3]; - - if ((int)v1 + v2 + v3 + v4 == 0) - { - return 0.0; - } - else - { - // nun String bilden - string txt = ValToBinString(v1) + ValToBinString(v2) + ValToBinString(v3) + ValToBinString(v4); - // erstmal das Vorzeichen - int vz = int.Parse(txt.Substring(0, 1)); - int exd = Conversion.BinStringToInt32(txt.Substring(1, 8)); - string ma = txt.Substring(9, 23); - double mantisse = 1; - double faktor = 1.0; - - //das ist die Anzahl der restlichen bit's - for (int cnt = 0; cnt <= 22; cnt++) - { - faktor = faktor / 2.0; - //entspricht 2^-y - if (ma.Substring(cnt, 1) == "1") - { - mantisse = mantisse + faktor; - } - } - return Math.Pow((-1), vz) * Math.Pow(2, (exd - 127)) * mantisse; - } - } - #endregion - #region FromDWord - public static double FromDWord(Int32 value) - { - byte[] b = DInt.ToByteArray(value); - double d = FromByteArray(b); - return d; - } - - public static double FromDWord(UInt32 value) - { - byte[] b = DWord.ToByteArray(value); - double d = FromByteArray(b); - return d; - } - #endregion - - #region ToByteArray - public static byte[] ToByteArray(double value) - { - double wert = (double)value; - string binString = ""; - byte[] bytes = new byte[4]; - if (wert != 0f) - { - if (wert < 0) - { - wert *= -1; - binString = "1"; - } - else - { - binString = "0"; - } - int exponent = (int)Math.Floor((double)Math.Log(wert) / Math.Log(2.0)); - wert = wert / (Math.Pow(2, exponent)) - 1; - - binString += ValToBinString((byte)(exponent + 127)); - for (int cnt = 1; cnt <= 23; cnt++) - { - if (!(wert - System.Math.Pow(2, -cnt) < 0)) - { - wert = wert - System.Math.Pow(2, -cnt); - binString += "1"; - } - else - binString += "0"; - } - bytes[0] = (byte)BinStringToByte(binString.Substring(0, 8)); - bytes[1] = (byte)BinStringToByte(binString.Substring(8, 8)); - bytes[2] = (byte)BinStringToByte(binString.Substring(16, 8)); - bytes[3] = (byte)BinStringToByte(binString.Substring(24, 8)); - - } - else - { - bytes[0] = 0; - bytes[1] = 0; - bytes[2] = 0; - bytes[3] = 0; - } - return bytes; - } - - public static byte[] ToByteArray(double[] value) - { - ByteArray arr = new ByteArray(); - foreach (double val in value) - arr.Add(ToByteArray(val)); - return arr.array; - } - #endregion - #region ToArray - public static double[] ToArray(byte[] bytes) - { - double[] values = new double[bytes.Length / 4]; - - int counter = 0; - for (int cnt = 0; cnt < bytes.Length / 4; cnt++) - values[cnt] = FromByteArray(new byte[] { bytes[counter++], bytes[counter++], bytes[counter++], bytes[counter++] }); - - return values; - } - #endregion - - // privates - #region ValToBinString - private static string ValToBinString(byte value) - { - string txt = ""; - - for (int cnt = 7; cnt >= 0; cnt += -1) - { - if ((value & (byte)Math.Pow(2, cnt)) > 0) - txt += "1"; - else - txt += "0"; - } - return txt; - } - #endregion - #region BinStringToByte - private static byte? BinStringToByte(string txt) - { - int cnt = 0; - int ret = 0; - - if (txt.Length == 8) - { - for (cnt = 7; cnt >= 0; cnt += -1) - { - if (int.Parse(txt.Substring(cnt, 1)) == 1) - { - ret += (int)(Math.Pow(2, (txt.Length - 1 - cnt))); - } - } - return (byte)ret; - } - return null; - } - #endregion - } -} diff --git a/S7.Net.Common/Types/Int.cs b/S7.Net.Common/Types/Int.cs deleted file mode 100644 index c53f7ac..0000000 --- a/S7.Net.Common/Types/Int.cs +++ /dev/null @@ -1,74 +0,0 @@ -using System; - -namespace S7.Net.Types -{ - public static class Int - { - // publics - #region FromByteArray - public static Int16 FromByteArray(byte[] bytes) - { - // bytes[0] -> HighByte - // bytes[1] -> LowByte - return FromBytes(bytes[1], bytes[0]); - } - #endregion - #region FromBytes - public static Int16 FromBytes(byte LoVal, byte HiVal) - { - return (Int16)(HiVal * 256 + LoVal); - } - #endregion - - #region ToByteArray - public static byte[] ToByteArray(Int16 value) - { - byte[] bytes = new byte[2]; - int x = 2; - long valLong = (long)((Int16)value); - for (int cnt = 0; cnt < x; cnt++) - { - Int64 x1 = (Int64)Math.Pow(256, (cnt)); - - Int64 x3 = (Int64)(valLong / x1); - bytes[x - cnt - 1] = (byte)(x3 & 255); - valLong -= bytes[x - cnt - 1] * x1; - } - return bytes; - } - - public static byte[] ToByteArray(Int16[] value) - { - ByteArray arr = new ByteArray(); - foreach (Int16 val in value) - arr.Add(ToByteArray(val)); - return arr.array; - } - #endregion - #region ToArray - public static Int16[] ToArray(byte[] bytes) - { - Int16[] values = new Int16[bytes.Length / 2]; - - int counter = 0; - for (int cnt = 0; cnt < bytes.Length / 2; cnt++) - values[cnt] = FromByteArray(new byte[] { bytes[counter++], bytes[counter++] }); - - return values; - } - #endregion - - // conversion - public static Int16 CWord(int value) - { - if (value > 32767) - { - value -= 32768; - value = 32768 - value; - value *= -1; - } - return (short)value; - } - - } -} diff --git a/S7.Net.Common/Types/String.cs b/S7.Net.Common/Types/String.cs deleted file mode 100644 index d5f9651..0000000 --- a/S7.Net.Common/Types/String.cs +++ /dev/null @@ -1,34 +0,0 @@ -namespace S7.Net.Types -{ - public static class String - { - // publics - #region ToByteArray - public static byte[] ToByteArray(string value) - { - string txt = (string)value; - char[] ca = txt.ToCharArray(); - byte[] bytes = new byte[txt.Length]; - for (int cnt = 0; cnt <= ca.Length - 1; cnt++) - bytes[cnt] = (byte)Asc(ca[cnt].ToString()); - return bytes; - } - #endregion - - #region FromByteArray - public static string FromByteArray(byte[] bytes) - { - return System.Text.Encoding.ASCII.GetString(bytes); - } - #endregion - - // privates - private static int Asc(string s) - { - byte[] b = System.Text.Encoding.ASCII.GetBytes(s); - if (b.Length > 0) - return b[0]; - return 0; - } - } -} diff --git a/S7.Net.Common/Types/Struct.cs b/S7.Net.Common/Types/Struct.cs deleted file mode 100644 index 15214b2..0000000 --- a/S7.Net.Common/Types/Struct.cs +++ /dev/null @@ -1,237 +0,0 @@ -using System; -using System.Linq; -using System.Globalization; -using System.Reflection; - -namespace S7.Net.Types -{ - public static class Struct - { - /// - /// Gets the size of the struct in bytes. - /// - /// the type of the struct - /// the number of bytes - public static int GetStructSize(Type structType) - { - double numBytes = 0.0; - - System.Reflection.FieldInfo[] infos = structType.GetFields(); - foreach (System.Reflection.FieldInfo info in infos) - { - switch (info.FieldType.Name) - { - case "Boolean": - numBytes += 0.125; - break; - case "Byte": - numBytes = Math.Ceiling(numBytes); - numBytes++; - break; - case "Int16": - case "UInt16": - numBytes = Math.Ceiling(numBytes); - if ((numBytes / 2 - Math.Floor(numBytes / 2.0)) > 0) - numBytes++; - numBytes += 2; - break; - case "Int32": - case "UInt32": - numBytes = Math.Ceiling(numBytes); - if ((numBytes / 2 - Math.Floor(numBytes / 2.0)) > 0) - numBytes++; - numBytes += 4; - break; - case "Float": - case "Double": - numBytes = Math.Ceiling(numBytes); - if ((numBytes / 2 - Math.Floor(numBytes / 2.0)) > 0) - numBytes++; - numBytes += 4; - break; - default: - numBytes += GetStructSize(info.FieldType); - break; - } - } - return (int)numBytes; - } - - /// - /// Creates a struct of a specified type by an array of bytes. - /// - /// The struct type - /// The array of bytes - /// The object depending on the struct type or null if fails(array-length != struct-length - public static object FromBytes(Type structType, byte[] bytes) - { - if (bytes == null) - return null; - - if (bytes.Length != GetStructSize(structType)) - return null; - - // and decode it - int bytePos = 0; - int bitPos = 0; - double numBytes = 0.0; - object structValue = Activator.CreateInstance(structType); - - System.Reflection.FieldInfo[] infos = structValue.GetType().GetFields(); - foreach (System.Reflection.FieldInfo info in infos) - { - switch (info.FieldType.Name) - { - case "Boolean": - // get the value - bytePos = (int)Math.Floor(numBytes); - bitPos = (int)((numBytes - (double)bytePos) / 0.125); - if ((bytes[bytePos] & (int)Math.Pow(2, bitPos)) != 0) - info.SetValue(structValue, true); - else - info.SetValue(structValue, false); - numBytes += 0.125; - break; - case "Byte": - numBytes = Math.Ceiling(numBytes); - info.SetValue(structValue, (byte)(bytes[(int)numBytes])); - numBytes++; - break; - case "Int16": - numBytes = Math.Ceiling(numBytes); - if ((numBytes / 2 - Math.Floor(numBytes / 2.0)) > 0) - numBytes++; - // hier auswerten - ushort source = Word.FromBytes(bytes[(int)numBytes + 1], bytes[(int)numBytes]); - info.SetValue(structValue, source.ConvertToShort()); - numBytes += 2; - break; - case "UInt16": - numBytes = Math.Ceiling(numBytes); - if ((numBytes / 2 - Math.Floor(numBytes / 2.0)) > 0) - numBytes++; - // hier auswerten - info.SetValue(structValue, Word.FromBytes(bytes[(int)numBytes + 1], - bytes[(int)numBytes])); - numBytes += 2; - break; - case "Int32": - numBytes = Math.Ceiling(numBytes); - if ((numBytes / 2 - Math.Floor(numBytes / 2.0)) > 0) - numBytes++; - // hier auswerten - uint sourceUInt = DWord.FromBytes(bytes[(int)numBytes + 3], - bytes[(int)numBytes + 2], - bytes[(int)numBytes + 1], - bytes[(int)numBytes + 0]); - info.SetValue(structValue, sourceUInt.ConvertToInt()); - numBytes += 4; - break; - case "UInt32": - numBytes = Math.Ceiling(numBytes); - if ((numBytes / 2 - Math.Floor(numBytes / 2.0)) > 0) - numBytes++; - // hier auswerten - info.SetValue(structValue, DWord.FromBytes(bytes[(int)numBytes], - bytes[(int)numBytes + 1], - bytes[(int)numBytes + 2], - bytes[(int)numBytes + 3])); - numBytes += 4; - break; - case "Double": - numBytes = Math.Ceiling(numBytes); - if ((numBytes / 2 - Math.Floor(numBytes / 2.0)) > 0) - numBytes++; - // hier auswerten - info.SetValue(structValue, Double.FromByteArray(new byte[] { bytes[(int)numBytes], - bytes[(int)numBytes + 1], - bytes[(int)numBytes + 2], - bytes[(int)numBytes + 3] })); - numBytes += 4; - break; - default: - var buffer = new byte[GetStructSize(info.FieldType)]; - if (buffer.Length == 0) - continue; - Buffer.BlockCopy(bytes, (int)Math.Ceiling(numBytes), buffer, 0, buffer.Length); - info.SetValue(structValue, FromBytes(info.FieldType, buffer)); - numBytes += buffer.Length; - break; - } - } - return structValue; - } - - /// - /// Creates a byte array depending on the struct type. - /// - /// The struct object - /// A byte array or null if fails. - public static byte[] ToBytes(object structValue) - { - Type type = structValue.GetType(); - - int size = Struct.GetStructSize(type); - byte[] bytes = new byte[size]; - byte[] bytes2 = null; - - int bytePos = 0; - int bitPos = 0; - double numBytes = 0.0; - - System.Reflection.FieldInfo[] infos = type.GetFields(); - foreach (System.Reflection.FieldInfo info in infos) - { - bytes2 = null; - switch (info.FieldType.Name) - { - case "Boolean": - // get the value - bytePos = (int)Math.Floor(numBytes); - bitPos = (int)((numBytes - (double)bytePos) / 0.125); - if ((bool)info.GetValue(structValue)) - bytes[bytePos] |= (byte)Math.Pow(2, bitPos); // is true - else - bytes[bytePos] &= (byte)(~(byte)Math.Pow(2, bitPos)); // is false - numBytes += 0.125; - break; - case "Byte": - numBytes = (int)Math.Ceiling(numBytes); - bytePos = (int)numBytes; - bytes[bytePos] = (byte)info.GetValue(structValue); - numBytes++; - break; - case "Int16": - bytes2 = Int.ToByteArray((Int16)info.GetValue(structValue)); - break; - case "UInt16": - bytes2 = Word.ToByteArray((UInt16)info.GetValue(structValue)); - break; - case "Int32": - bytes2 = DInt.ToByteArray((Int32)info.GetValue(structValue)); - break; - case "UInt32": - bytes2 = DWord.ToByteArray((UInt32)info.GetValue(structValue)); - break; - case "Double": - bytes2 = Double.ToByteArray((double)info.GetValue(structValue)); - break; - } - if (bytes2 != null) - { - // add them - numBytes = Math.Ceiling(numBytes); - if ((numBytes / 2 - Math.Floor(numBytes / 2.0)) > 0) - numBytes++; - bytePos = (int)numBytes; - for (int bCnt=0; bCnt HighByte - // bytes[1] -> LowByte - return FromBytes(bytes[1], bytes[0]); - } - #endregion - #region FromBytes - public static UInt16 FromBytes(byte LoVal, byte HiVal) - { - return (UInt16)(HiVal * 256 + LoVal); - } - #endregion - - #region ToByteArray - public static byte[] ToByteArray(UInt16 value) - { - byte[] bytes = new byte[2]; - int x = 2; - long valLong = (long)((UInt16)value); - for (int cnt = 0; cnt < x; cnt++) - { - Int64 x1 = (Int64)Math.Pow(256, (cnt)); - - Int64 x3 = (Int64)(valLong / x1); - bytes[x - cnt - 1] = (byte)(x3 & 255); - valLong -= bytes[x - cnt - 1] * x1; - } - return bytes; - } - - public static byte[] ToByteArray(UInt16[] value) - { - ByteArray arr = new ByteArray(); - foreach (UInt16 val in value) - arr.Add(ToByteArray(val)); - return arr.array; - } - #endregion - #region ToArray - public static UInt16[] ToArray(byte[] bytes) - { - UInt16[] values = new UInt16[bytes.Length / 2]; - - int counter = 0; - for (int cnt = 0; cnt < bytes.Length / 2; cnt++) - values[cnt] = FromByteArray(new byte[] { bytes[counter++], bytes[counter++] }); - - return values; - } - #endregion - } -} diff --git a/packages/NUnit.2.6.2/NUnit.2.6.2.nupkg b/packages/NUnit.2.6.2/NUnit.2.6.2.nupkg deleted file mode 100644 index 26f15bdc7f1075d97c4e8bdd2ee9bdaf7833fcb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94702 zcmb5U1CS;`ur4~bZTw@~-mz`lHg;ymwr$(CZEMH2{q~%9Z@haRPTbcKRgu-5`E_RY zmsQ;zr63Io1_SgThh3GLkZ2@m!Z|Py(0?>oAUq&_CsP||2KxW#i3+fQDD%+%Q}zGe z-E{Wy3V7Js5V@H;Ia}J>@d23V839D5cE9={{zw1(%8w~+1|{B-q_yue}Mh->mM8wBLgD`gRP;RrJ1R- z3xG()(8=7?g%7|Wr)p>ELT~5l>|kmPAd)oU11PaDvvYBGrY0>D0RmEl00M&hN0Gr31 z6you2Y(q(n+&urR!YkUC!0@-XZPRoS8LTXTsu1RW)J6{y=BR%n2zg))ODk zeIoqSk+@?KTlGjB*InGNB3ojKx04iZ2BO*;CEGUnJkaGA90&zyhf!h5Y@&w*A_HGHjup)@h z?FTdCl%J~QfB@g}kN$$-YlHAN! z92qqpZjCF^@S9evD;JFmMBJJYjMKrSf-@w^KWj*XoC!fwL=mHOdg=?l{-#*qaOZq! znN`tP6Z%X%1s*m*2^mqspvabFv5`FEC;@4V$L+_%Z#IS+!YngCHjy*p?JrixJLXww z$L!4N$|)U4Ozq+6V#&gRrW>*iDO0bD241~VhvO5)zquoIY1C)YpZcM+tJ-@(dzlh#7 z(S??_UN^MS*4gm562pT$Q02{ktpjZ8IzjY*bzlwle@>e=|H{(N*_7VJ!{xs#gKFh| zyG=&8Zp<-(+ZA|+K-Nu59&|3(z7V{KtE#c4X;BP5sfY{t4gDCG1{>XlO}mEA*Vi4A z<~>6ct4=rp!)~qWo0ZBBHXCjVf25WvU`&oo>A7=0A16NY*Onj#&TGkMbRY6vF1R|) zfyFU&UN9fAfKW0Y)4eoQLi#Z^v6c{9aes(FyCKESHq9+w*CZmxL~#lzFM=RM6=V2T z`fbIIYJ;LJ$ML`WV6VJTC1A9IUwP-&bH5y!lnWGFuUa4`f=63lNZUh_cAh4Po)E7G|oGU@MvB| z4mfw_kM%**BpyU)3NFF{;K* zT=Tr!c%be&K=I;qmJ~Y(DEl(Ly>PRO*2#tL2MeD{Ph=RibS;(S9Yvenk;v$Lf4=m` zlO5gr2*8+Uc@w5DPjj((*qBY3(pL1X4_)jxVndv~#E<@Q-P}amB^^o)+0lyL&Z@{W z(}&|JHA6-IRFrV$Mu;?RK~Qh`*rhO#ej+67NAFn8?e{82<2K(e8WQCl04AHBI2m%q z34|aR1nW-h9>^Ne@Nw5kTrD+g!`~p+$&F_7GpETPrvkP-*^%vS2lM8q47a_J-1!u= zNtWlH{U|d^zQX*k%;M<~x0mnzx84eZ0Ac={VQnmp80=jCV`(yTGPE^yw|BCpH?gt# z?^t&E8!}C0`R&Dfa?5hlY;ua;RtN(tP1j2^;t>HvYO@%61f->3lX1v(wYeYw#!BT9 zux2DpTTgBk#iVwL&&HJE$A}}%inHgv`;z6nIYn#n>9_m97h9Rt-usa9kfV3abwW^Q zfr=F;j(qt524n=MHgujweWnp@5J zy!Mz;6NtpW?2 zbPA*!yqnB+?^#7(Rd|A8$noa^)|UHY*904@w!V~w64=4_itsx#+{-+04j1My?9d4x z=9!qT;d`zp4mJcy-gU3X8bP}i!ml-*S&yt^l`-GQb5}++P98ABp7z19z7_mvPOIrrQ5{p0MWwD8?)t9eGDKsh8=f;^kZm84b(twZB!%lXY*f z*|A)T@9~hu_uGEsZfE%A=j4D&9-^fC_c#X!ImFN2t9|X~AO-F>bH{FI>~?zF;V0G4 zo7tO=?RU5G_^g13xzSZ=t4&wqe&D>=70yGyECa*WXwB@XOxN@LZg!)D z{0I;L3!6kY0+9}<8vfD0;TxC}>Pi@^QS;FRo4;rhJ$FaO4kCN`4CXQFW(A<8tFHSx zIxNo}lXUK2%)O@+`_7i*ZEQ6n$S9^{@N@AJ%4vk< zcrX0ukm~6c2_Vf4s$n9jzb)YwKkL~wyPR1;c`{i>N!ghRjcwKeI>@iRxwp=VbFskB z6ywN5Kh`f{Y3;NPr?5ShKVDvpJgLl8*x!+c-pb3y3;=0?LoZ2mOOfbgPIiMl!%ou3 zmdsDQq(c?+lp8->YcHeixVM}fdX`ZQCJi*xH>A+)-ll+(KP$E#tJeEe5Mc8QyOOj zgA4HB^*zJ$9L9MBSjA2LAQnD#PEERkPU)(dnurlmKNB03O|v#r9L><9fp5!)ApZj2S>=R`)M6kEM;ZN$IxXhTL|X63*1x$8JsPxA&`;z?3uk5vd6&s)4nd*a)$tr*fJ1^VX?aAO z#HUvAa44Vcjz>D$%$DP58;!NPvUadR&_2@4$Lk0vN^P`2!1eO7IZb!I+?X6(q&e}R zJKK{yK0LeHJG(lHx7->XTs(n%DB|TU&w5_+^03-GX_ve^9cXM(`D}U4v#X;pchSK* zutR${gKzz)pC#reyli|wwi0-MpKPJU{QCS(=CGtN|TCAI>H)0p5gT$l!`2FY$7}YWP zGg<=7wdffZY96+Kx70}7kORNI>P5a8>i^x8U}_RaF(t%xg>yOn(+~K8octurO8yDt zeX5r^#X5&JFYCmA{xNf9G(R2JVj7Y(QmkVpG)P6>)i}>^I^37=;2gOKk7n7Hs(tio z1A~vv>s&*aq;7dCSVI7v_0cKWtm8du(R(w0RKq(?qa*PEEJ;&Fw?-M+o*Vck8io?knL0wPDIGNLrbQ-_ONt$tWZy zHg>?ADVK3Ave5!-fLFK*MMM(jbg51(qor0bPqWNkWC&Mq@1rD+aD#^v{+h|k<7@+pZr#W#K}o+lzHdqGd7o+ z+8B_rj|vn8#iIRWJ%o>NEi*f;MLLsSM~2@Jws{Qh=N+1v64c}iZ=}g5O3293wD2}G zQa~WTA#x%lFJ%@#B0YGp$YdL?Lep$8Mwzblm||#XBT~Vfs1m1}R}m1Fi3&)c4pa7@ z!uSlo%^E=|#Ljxa(jHW41pv$nu7)JZiit<)j6|v*+2Pp6>=t29(Ta$c%o%)Y+g@Gz z#&K0(_$%2-v6THwO2Zzg@o6b+@EP^5-v1&106RY7F485`@FM|g#TL7wrJYh@=_NpU(_FuIpi}pYWg_Pe?^0xV}vNxeNRI(fy{Bt^{3y1g11ikBz z`E-JA3$KmJzP@Icn~&a24bd4;c7X*Iwi7m`St$p{dQMw5eI}X=4n-c>8M*sQ+gthN z?e#k{X(z9ozpm5X*wDqF4?wcsc=pL{6iFz`eBEHqFKN$lIFv^=GQ*2B_=eRBYb)ufo=~L*3;aV>-BpxDg?UecnFIda~d)}x(fc$IU%p-dd z@pv5WR!atH94=AOs(4YTU@k(^ZnS4x^ie6et_4HR_vc*}k2uM>GwrhxkC--&BuFNE z?=Bj4*U(Pi@I<0iKi*TG3&V)#Iyu@CcZNy|@LWr$0m+@F} z7P)pyK*9kWJ2T5z9TniDloQO3gK5{YM*3=A#f}3tI?-jdK&c{9$&F{cs3Hjlm_$Q= zIFUiDs54f8|N0cI{h%O$Y4Wk%Q|6{HB1eO(cSdeB28;e`{BmTk=BkLAX=NBB60@@G zO-gp?4#@2|o|#1ziDgl^tTYPqvTD#A?@%o6qc9ua_;>?UF=wSEC`5rajzA3ilbp0J zMu}`$in7{EaI}8Q)@fS^ekrzXLb<;6igujUsB25sKY0hbflw=tB6bL>6|XOFaMg4Q zqy2aEA?{2^hTH+}c_<|!;@_523pvJ4`^){}QYM{A3AKXE5hmNB(rX;!qvK&6nJb#w zZ$6L8o=|u(gl=*QFZet1pTdXR7*e=Kw1v@i5~K-K9PMWZ7aZA)PD1zT>Zrp^D;=Ta zcQN_mlC9G~)2Y8~>p4TatXW#*j4F=YztAa6WMheX1uIxmaPMj60`o~{RB5#mT8uE* z9fNsd1p&!i&mNu>_Yq2%QQ(tg+LRb7M+o9ZBvkN%DJmuQB2D~zk7aw>Y( zc{f75K7%JH8tx??C9gXd;Wz)j-cakhx(hezG*!Nt?G;G85>NU6EEWPEc{?T&D-{r_ z;_q{cyIcY!r9|;A;?u*fWr9^?y-m$S;~00M(klwmCmuPEiOmYi%ni$Mr3M9na1?xO z+91#xvw(v~|E}9OB%d*-O{_7Mkx)&5Iywj|YMb2Fp0d@;4peLmY6$CXIYFsGI_t8} z_YrgukqHzP7-OFSVbo~habMtwr@ynX!JM0SMCD|Uo^shd!llleI2Ui{oKHKeH~<*w zYm0o#wZHJh`Q)1E4z0Q7mMc!v54Oe!&Xj@-ACDPP=pMpWRT->pGUDMjCg4ucRVIa6 zf^v6p8f`0VftXVZpxvoncIfjiWMhJP55~wz_X#60%S_>&+6RVWzl?5B+cgSrK zn9GfjQY|MGE_ zSqCp7%d9v2*^w#N#|;PH@05LekHG@HW41mq5~?~E(mi%^-n_X=ktCx zpg~4Mr^AD-j1#V}+m=ew)L1p@LSU;&!~#{oQO>7X5M)Jhvf-H3jLfi(-E_#)G%?|4 zR7FiV4#ih|$-n>#fC=^0!-b;jO1T&vK&v5;njeGA)?HgolR(&uF& zdcNULhzmJpgGB`|C2o(|euIcNT?5GA_vB2_7#KbIDRR?dE=-lh$#dWr`Mne5i!3Wb zC90(?&f>vUascn|zX4mniK0h8CfpgmTuljLfJoLlBT`_lsK7a-ysn*z};z@wbJSj`u8w4Bm z>(;4DoMNd*Lz_lKtk>#5jTho6szM%62+aBKrZhDW;OYGf+SA0Qg9q*2*X%{y7H4Nj z-oxs%i)7pu7n7^)HqAZ->TN@IThb?5L>nr#NJBcTYof3A|mT^}0R*&Tj zlk=F3Bkz*tSL6Lo@T;n~hp9L9 zUIJ=M$&G8UO5ki$#ub=1qGsdf5HP0L19CdUnq9wOz1bS}nS}!D1ML$vq=Mp*+yuJR z5NZq$5ppsnX}eluskLllnYhOBIkL_Jb2_Am>?}s3{Kqy(^F^S}Bi9U0=q=L%B)2O| z<`2+QPVKuKh&{znB;B*>HiBl`68~_Rxo#1I=sb;GKE`Y6(5`#X*d4t`&n}_AxEz0*8}$sxgRJGkTiTmz|1B@hdIj69$Dzc{)-4DK_C<%Cpt2f=0+ z*=Of$a=iKWH?H{UvS2vJ?xs-z5vhdA* zx9Apv&GxbmJA1Iteg~Wow&c{W^A>{7O1H3OHh7Le<*eG~Oz*Jf`QK@z6Y8%+;2W|~ zTn_d=uq_CzOsU@Tz-x zbZqd-WseV6J<2A$PuQeXHa^PUUrhFY_7>YWEMc~4){HN3tk*I?HZE|8o>w+#wwRq| z?ysf>YMy0MKm9gSkGa$IWS717v3!tmxC`qbUg62;Y0)G%Ta7+bnx$Z0Y^$n!4mJ-t zT(?}U&o#Z9O5*ivp4?~fLz)FnIQgA=wT+Eqsu-^CJ<&GbJ*T@ z%*7RXA~^0GKkY1qF)Nf{9y#q?5jlF;+}|EBYNJ)eUCy?4<=Qmrp|}i5{$t7gVAlGh zfB)*2GWyfa`|bDe+PSmdYrpZ}v?m}^)$aHAIhOk8FjVtB_($CH^M@k#XSeY(e(&08 zV45Yy;;DxstfD8U)5~6CtJnGE`ssu}yVIqVepF@m;C$rExB!{nt2>nb(W!TOyM=@I zy0X3U`Q76A?;;diD?d}Uk3G z>qfsty1mp*<`sCj{hXR4S=C1b-{qG*^Gmx|C#MAx=I|IM{{rIb+7Mm(U{$z@=aKN_ zd&|>!ok!&Z&=pNsaV<5+{MvItv2;k53LLb}2YWbQ{>2?h$|Tv?>wiuoSx z`)+bKDNPyLxl*3ZW&N=C+4EsW<{7rTfiR)r$}b#L9Dp2txJlv-);5Fc(ztjnX*z-2 zC6bXHl(nLKi*fcz)(C6l)^3sXyMVoB*&}_F^Sj%&pJk|cnozSUf zv@<~DRqp4iWKk~f`Se}yRMmUl-s9*D&5-vkzeMlJ!50z2yS8lY$1=kG(B+k;aUx(j zorl)jJbB#-&Jwl>kLDs5fwL3kM(F9-xD6lo7q-abNZ6|^eTk{1_h!Z#y(ddqDv%i< z0|zmHjh~2`fY$fw&(f}j?)WpCS zf<##7;UP@9YXcug93Vc7FwX7sZDMPaojQv~pkdi8hy3U+r^F?T%ojHWZ_JKzUuI?G zN2qs>xruup#_t*TWo={IX20IQae4nbl)SHHI?IThWIgIRs~Fn1Wkc?2jOvt)-y)lx zE09-Lx&_h2FVC_Esz1|z1^W+}SIGc);<34B7U56*@ z)B7hiW{OukU)edIDH)Y;xAPO^@0M1?xokZU@0^{sRO%1L-RWr!&qf&Qk8KL4R=tfT zv96OiOPCA%JOzo8XHYY%i~;jg>BLXW${ZOzjk0bpfypg)R5n-yEm^$p{I_WzeW+`Y z1lEKe0so{8$Q%cD`TS{PQqZ2}H2NK%^^5Oyo1M=O^G45yo80N+>0UqfOpcfDb%Jju z(8$wil>+!L5xJTJ6)#$0dLfi#mK@rpE5{(2kcVr>NI zQ+u5WKz{BrQu%{Sw%{bQ_c9r5~Df*e9fXlBr3CbJ%H*Ec3hevgbB5*krfu-0&2EP z9T2WShcnP3F_L?+juXLAGv@%NfjV2EtJsCsAJ184SPvC4u#kl1VgM zMz%5iOou|PIp1*k2^YBX?bk%kBQRhfJDzuxI8(1d*DMFflYCxgX5R=^Z~oy12D9 zCtnU~KJ2_)-GkB`ijZjP+cQJdD#|>095J$?d{XR|hME_+tvMVs6f-4Uu)DQsiK_Ly zo_F($n?(U_+_~8>$eC~)1*P8+y*7!S*$7BD1h+KGx%r62?L?3{(l7P z!7@g88pRTXan^i_##*cbrAww~5z%r{ZFKv|%rJMi!vY-rD0sQ&3~{F1xk^yH#ie3F z_#2KbG`ttWcGt>xex{S-sn{j7E>L;mayl-o+?Sqft=+tz>K%8B@*Sg4^fyj*?!CSl zD#j7J6&H&cSZ5|ODxPkl!;PUe)4SAkJhdsz~FJ)Yego=|j4g&5CSmyK*&!3v1IDnaVgWkgUdK?(PHB$1HChYgDe6 zhJ}PIn(CC+O3;tLH;wWuX0sa<(r3aAVT%y-j#W+gjde zoSVM3bmEN|3-dgoF@;~;CEkhKYR*xNmV|-zw^aS_&2AqXRXRJLHnl`GJ#hbR`SnLKGtQ8}<(m;ogtQylpIrNX!6eOc{-S_o% znKn2Zr0cd1UZyO3oKe5lY+t-gU%ZfKum`SL)~;RXJBK~L&~seW&S>_p_-p06LOu4& z_Q?nCAHJt*UsU?Nr4V+6zr1FVx=Lww_-Dj6&NvBalxg0~ozP2-N@Xs5q*Cf0-eA}J>V0?KM&FL=)jDvPGglui)ji7~H68Q5eE6bZ^@)O`; zSb_BGjO`Imj&<%qEAE6w04f3&eRw?2;A#Ky?(vUthl+k4a%N2c3}mG>I8&G~7XfgI zAHseYdCa%NUkWkRPFXWQQjKnvx>A^c^!4ELTSY8!$>6e-^d0kuzyfQeW8-3kFb~2Q z`0G79d+xd5cX7O;^0ImGgzh(xaRV>>VH%ObigU8B(ov8^3*rd&jUTSr-u8m}KXk8% z-g<2WKZczkX?%iG?7q6Iit#H zif+USd-Kc6WAEnD$)L!29mb+t-5m=o^oZdoL&jas64pX>jH=LTY0}#1*f6+E&S%M| zwDj|R$_aXi!_hRt6|Z&QlL|l7cRlJVkc%z7BpTJYLOUmmSkN#;RhZDG>{=1+E2CA$ zLh_udBXpVP*FlN_QD>+&Jt|O*f)cL_{xiFxocPBMNFlG1?9K=V=AjdhOBRc!U~;Iq zu)l!ORfKqvs&ux-P{2F*N8!j22c8cE2kQt;zm*&X5(ZI(!sFx))2*}fOKGzi)FS|l zN-6z$eY7&Jfd*+bS`wdSn<|5Aa!bH$)P~Y}$!`hT&HIgU3<|`xcvqS2Ad%L%qNBa3 z1MQGh>wnA^FV@7i+eQ38*7qvD=vF-k79nBhuwIn7;lCJ0!&exTm+kKXoXH#6UYS}v}ol?Sa-r7TK%y>IUumcG4??;FLwz1+XA+VJAF zQv{rnW?kBAP78;k8%0BC!bK2O%PF)ebJy4sBQ4*R^(z&NN~Gh@)&bSD3ljioji40# zX|66a&0@96g7mB4=MKJ7u`IdT_%s9=F z#uirqlca%GOW!!HLjw|L8hA+<92E0n@C65O=UXT^Y2I? zo`f`iv|0tj)5b}A{v_|l;!!>nF!F};%ZcyW7fO=MbpAbAGT-BzLmyjDS`#zAhl@e4 zRdDu1BBODwx(=e!UlX<6Tf$3P!fd2%QKq+~THgdcU`)+#z8N>2&=v`qioq{Fc26elw&v~KB1F8(k`$VT^Z(7T+JLNVEd z=AT8qh!P4BU+7GFy!Y;_2|b=ro(>?My(cAIWoyIhuMb`uPyDkz zj{72D?oRw-bW#E%s-YKKg=qKUf-i9K8q7v$yTEIv}#*&;a zw!Q?R1zh>z(qo;A0*XZO)Z(jmsxnn{c|22{mAq<~+Sn<6tkOEWEDKQ3fT-!3RY>HT z)&*D|FOSU1>d-h`A`=jk3+MdCz>b~FRCiJK_`+rm(dMk3aRGQ#MCEZ*#<-d;Gi%ec zsSi)il+*oFzQeY*(Pt@u*9&tjgU9}?JZ_lYO&rys!_ zm!>lEdGY`&ZYX1^8_cu!_Kvh&m-@} z_kgi_^_I7IYkcNc<4Rdy9qffQt3u{S8j1|s%E2Y1NX(L$>~}Ipab1}qIbwdmsQLhw zwfBajp;LK%h|kpHa?;9YGw9;1vKe!1KW`}dioR@w2a{0Em00zZss;qg3EBiE&fVV? z4Wi%hN1hULs}~(XaBselGYx!4XP@kGN~|wh5K~_Dy+_- zx+sG??Li0(0bMu!YZ8-<&o${viS-h@5?{7SKzax`JBwR-P!TTlO!x-9p_G_-2`*6P z7sLbh)#ErvP`b=D#PTe^=~CnO66PhnaZshjW&pm2ykQ;%=Uv(gM^<#Hl^E*n_gm#r zd^OgyZ(MN~cGu2)yeD3sF_^q3{`UGEkGqGjkUA%K@Qr6GtWB2 zdY+M)9RRXlv6`_E0mB!D&16D%xG3TIv}Z-Q))xK)CaF7pUpirO#d#|je9eHFGMigg8}sVZlYJIy8AF<+KNmx)F}~iND%~uZbUEI%otU_`W0!% zHu-#si`eT`#Hp5#*D034nLaau!4%Ssj8r7CRF@tHOlN^Eah)F@O;GEtL&{x^7x zOn|eTt!O;nQBC$CqA{55Ah77J+~Y4}TS7~vT-ro0?9K5-lT`K|M^HKMO@LvCNw64Z zsS_@jCm`97Hw7b<+KjUy8I&)?8ZUIYN`t19nmgaghu^Nt1vj zv-yo@?)jUVeD1(%PP$>WP~+p``Mmg^dDX3Hk^Y$=EpPZrhOVVWqy7~29I|Pm}{lgoC;4PG~p)g_>~A@y-T_YckOBmTU7Sq zc=mfKVC95IjNT`ZVP}-P&kPTGB;LnFI6&++`<%ox=I8Z%i-HRhcz#>ivbOLU&n?Ab zHI`cG&Ea0cbq|i#Bccmog>z`4(9O>t*a8hMQ%}!a&zSwRloy|!p&O~o2SC7jm*Jk~ z<+8OHtqQmN+6CtJZ?ZRXS+;{i~HQ09p+F%0q(?Z;@EAJbSlU#E1OTdwd6hdB5=TN_jBCE=dC(4@yJKU zC5#wd3YOrDz2MCm)C=C2-z^C~KrD}Fnoj}sL{GSCUyXU!cM)US(~R-H!iL%dZk~-< z;ffKCgnb3jXv6Dx2BLULb98d>j@TJepy%0PPYM>?nsTR(goBp;VE=m*&#nQa^D?316~wUkybT>BwcU!KnhS&D7|}8+@$|hLh6vqZDVK z6z6`-mZABSn=(?Hks+Q?3|EpFzuDrK;`NiMVL6q1T>s zO>TxN%&nj}3c=x@;1kA=YSt)w+5q59%n9GSDAq2gZRB;2?oXw$*3E>K7VI;9ft{aw zA!zkVtPxqJdRo$GtYdp!B%Z2vo3yStp?kP*=>yNaNu5W^rYis2C_a*NJU)mp`cOtp$R4PMH6x%su4U^A z5||k!7>glcoG6X6;RWcyju*pQ9f=9i$SqGZS5@q(v}#ad^bl2yzC9@^uu=~dQvm82 zS72#x>yZ$h#$LFxP2W&iTy%kZ5B0$F8F$~t3U$xRCjs>mS5X?I4=+Y|8KDZ_otzIylQM6EZ)?(vE^O^J=_MD^)ktR7T!XV^0*>i7=IaV|j&geWkRZ*~l znoX=3J~)KGc*NF)8_Xpn#WNK7C#U1L{mHtR>w)Y`3v$G4L-JW;+mH3f@#C5)&XCv$ zkhuW6ONR0jg>dKJ6lY>OT?b9*5>gX&bG{P*_F{X01w17a?Pw?uik6)E%V(yF*zzj{ zeTOc3&NZc;A^37A_ynA0oyr<`IdljW{Jm0lEVljL~eSYqF+^lfErr; z{<3sU9m?`oP2EPB%pIA9`T2Q`d*I7cSohDkbGf*Q`i5gp1yz&n;iS=OOFT`MEs0(5 zLWq~Dfb6Pajz)N^`Xqu~B2Qa8nKxq008Y_}@-IUXi=jvN;ryDlkj$YEH9002Gu0de z@=pHvTfDaG^{gvv@2F-Y$KgJS6%%?f*BLpX?;ONbqZg_YvjvKlmEv6WX=to6Z|X4t zl81~zw{TYO-T=3y?n$|Gon@mi(GbAN8-hwqU`78`YipdF>aRD zsg+uDui-4*a-IqIyHd{u$!p_j*J%DQbRdFyj1umUWxlS1HjZNk>!2aJCPP>J8(bcq zplxT2_Zhiox+bd`W+X2Lw`;+HLnmM-gG}jWJp5Sx)b(0g z*mR<6%0dX7W&0z_$0EW*=^#B@-)KmitjrM^?(^)C9ti$D0?N)piO=2ToeW`IM(g^w zdH+Io-I1!vPmy%z>iqVMQ`c|=781VR6~9QY$q z!jjlFq>Vq$7S#2@WAL0^kiLqSzf-ZEb^V<*$L_F==m`8>GaG|>oWP?8(5k5g2R}Ne zKHg=Q$14!ZEHxgXBvWpoQf3~M&b9}|-e-PGxpD)oQE!Te%(ZyRL6W{y0WAjce2ZgnG|qk;BY$7O+i%43_~O5|`%_HJ zQaw-9-(=Plj?)Rd3}=g7Hez?|y39_elh6i&aF9V5R4%5ITt3sjY2@{WslpHf#1ppB zc<7e1878+AJ`1sh{RKCbkeFh54yu5J=WzcIP$C-_o&Pg!YMThjineP-;M zk?=t%x;8M)Xeai{qx}_+6c&x)RB1c-E9qYN*(>F~$d!6h-`=u;-!msx8KMPvBQVLH zbY5Tl2wgjvau)6E6>9out#HfTV8KHi5JND&ivEO9u{jlAtB<1hB^JlX=djGdHM=% zJJZX}G3p8f%h(*sxQ3cLA{K*X5_D*FrPwdofzY=-!Ztqlxe3#;CxG0s|N7jJJ5b4Y z&mnp+&LHuwlz$#~`rr}j-X2^snmre+n2U2%6INJ}en|lTWS@s;N}ru9w?()Z-!1D0 zJzCG|@>ENJR`IwArLu3Q6DQar@olf*~Hsfps996-bSC1tO? zLJd1WHT5Y8&!G(MHZK2YQ)#Y{_g-XUeuknePM#F=S1W^oV|s5Vx&A59Unb&&ZamJ!C3{_uV)HSDN1Oo+^jd~5jHF0^-X;o%Ym8u&; z0Pp2@W*ztB4!|%a{(EToU|wcFxvetxK~pb}R{g42-8`KKo>zQJ@{Zyok26-!)Ouy! zlfNZnto9|BNZx&cCw+G7uQT-bjq}r;&!YIj_V|gikG7w@tXx;LFRf=U&IcLJTJ5ah zSP^5xzYVX=a)NdJ5UeZpy%$vo?P0hg@=s$0;Rje} z_H3A$V=rDjc%2vU4;DQ^7!cNl5PpR`H8q$p#s#0z=a4CskFz88ZYnc{B~S!m zIj{Cqy|cm(P+|ftjt{aM%%&T!Qu1q}4FaojM3J%YYKc1|6!Jo=)qECqG*;}0Q2GHw z?bGGr<1JHpf3AABl{n`I@{_ik@|(0+22XMJ@@t^!=~>{91>Mk^x7T%~(BHf`uhG{PBrT!T2auA8>Ei8H3y9_V0tF!q&Q`C? zr6CM{F7TgsiI1eymHkJVi7(lyDQyhjiKT}*KSW?b)mT=JmO}DQ}Nhb&L(0rykGq|V`c82Out77 z7u{X#^Dg^q>9_nle4Ot$aL5m^xUq-%m#-J_a%l;)&n0G0Y{N_-a{`m}C)C=Y;N+0` zx>cOl_aA1aZD}l%$IrnATsE709=pf97pc>d)%vTNU?9G&sqD4DA4(k<{a_%SOC5}_ z(d?$O2ckD(t4YO~Ij+evab6N+3BEW*(bT0PX$U>-P%T1NVzR_fSW9Fl%NOOX#b*kg zp%+sQm(EI?Nlxb5lPsm3&mR{z;vY^grXs6#HHhF&v7 zPRy6GffQj(2!m-^LWd@6nIU-750_j2*&4;6SA(}TpG@7=ey`ge!+FVF=baoPc*V3H zVLXYbW%2E#kZ1m9v?wKXLk54%|J1%u?xX!r)i)`F6gh!v{B|EQM(NVr zl^C5Kl(gdiNH@Jc^wh$C=9KzRG$3A+?%#X4sqG-_6}zQA&_k;*kUtAsO);2wuZx<(ivKSI<$q zkM2zooN`a1(nl=AzPpL6F35~Kub=R)%+ybdM$a_&8k*$5O&VC<3mmA=&Gz#ie1V7k znQxEwTRQnRgjJK@m0(R`Z$))3@&$nerF)tYtLs`!??wg%Eif`DjsvSWy zZm`+5s~Gk?C;I}U(|$3^to)V?ak6&#vN3b1SJ3|lQC}U_#`FB&BE{X^-HN-F6nA%u z2X`nA6{Ki!CnUHQ2vDHF8+Qp#uu?2|i#y+Ze*gTQ=bqQ)X6E*0XJ>Zyb}x5UzsWoP zYdqE{c6^ll*jXF*$-m@)&w-*^y>DXUhWOndyW)YtK)pxmrW}DQL7QqYYfk#+Ppu5W zpM95uXV^Mj{@n&b2ES@1@9}T_x4a^C!p=nDE&UvwZ$40zLd=#{uT=5^y5{7*oy}YG z_C4hVs?a=so+PVo-zbz9zq1cA2z_rJ6P_S{Y;i4mY_Vp$c}lQ){o9NC{`?f*W@CM8 z3V|uKx#gOAdM&u=kqwzX&wzx66W_p}sJdc%2FMuFel3wLqRNe8IN0f$PfTo#8>HRg z3rh+Anq65tN)1yP4d@Lw0)FuY)KIxD?DJjY|OO;qvJr8-@2m2x}&--|Xa z>ge!G_U!4umqBRgT2%tY!Aih)lD|HYD02KY%LMM0rU$|iWz!=$D3PC{rv{($ z4^fj-5aQUD{kbH8S!jceh!47jG|KWC_hw@a1ckA)C1~F|{`P(d!~ah7$m}@4mJ9!iT)WT0OUWsAI$F`a?lX|B#y1@VI>4b1J@j6|Ozbu%6ZS*ov6~yT;q} zAc)>qLWM46lK#D$XP5euM+=VjbDCA5S;VjFrh|J=E<_H?h{#GZ4+pO>@!zX%2Copm zpZ0J55O9t1u3uS4W*;OOgxY7luoEC^|LB&>?n)`~ zJjOP@%$Yr39ls>*Pw)-;{Pd$QbpaI>a{<8FMP>8z59s$Z?YX)3IE+Ny?;C*{98Wx{#|V7q*}NiOm5)nhfK3(I7v8k zS6{n$i*YKK#Aw|^=>56}ilW>fTSJ1qe7@Vg4*@5xE_<(NW6<%s3EyoD(_(+);hSBi z|BKN$K$kWUaWOS@NKVS*R7De~B-okKytALZ^Ta_mYJBjgt$54Uy5YN7 z=h45C?HC0tY=>s`Zm{+$o{v^XwB{{I1CXkBJe3tbf2rGJ&iF)cl^c63rrMH$e8=i( zf=NTFQM=%OpA2~^iG3HDAzRcPt3srN#nsgh7P@5w>+e-IZGU~+L46G8#7_6D7n*>^ z%$oRCzQ(^|Av*lTPKV`@5fVmYyUGBU|F2JJrDu;aybPt=Hs-Hs>8&6B%KiPGlRNxUCG)Jak9D&m^DKRi2%ZWT3w(2L!?#D5l=HnV zMK3|EjdYcxa+@DJ=#`5SM5q1!_D*AZ zF(X@35%8}0=o{|d!S6pMUlx-5*$zU9o6hbG!%kpDuCdq96l2f1G(4z*xRnlFwr53| zy?g~;YXe>7MEkM0<+TQVWA03UPQI5WzFb>Ze3o*gi;HcKuu${(W;R8~M+6 zg3wE`vB>HFw%-3Z>n@S79QP|b`Y!5X*SMwelyCgz_%+R7<|)ZC``DPqX%q3>m6QIG zKks?luK~6_w$1^Grq!><kVy%Uwo`Qo#^bJED%kKzy927e7U3gkrQa5z3+LXhj&M&6@rD+hV!LT%5U@zn7YFsb?XjKShB;U4^}Ld;j)ZbFWxL zuGFZW`s8^!Sv?tm}P7)&2Q>Y1Vs;y{AVvCy%LKjW6m0 zLBY>l-yw0zT7XiD>VJ2bc}3N8b%4zePT^#m!V$?<6ql(Zs!=~4-BFu1e>NK|ho5nV zc6iYzN!!eE580iU6)sfKXYrWwrd*boQ|a%aNE-%JL@@DMk1B;f;}7%lqKNxQs>cFm zQ^C5th9-wtrE;UYYGF8EDjH#cXrml%>=>n(+xdTBdUTVqX_|cX(awKDB!hj_;pipL z+PEU@X$`!;!z%MBVaHdkRsV!|taA=A1Z()Ig+FiMWRH2R&fGw0Uvs=KOt~XI(2-)N zsrYd_qxp-Ma~?hX@KYm5V;%i&{`+KsPMmTgyxDnrYDzHIkH?+ZSO$;6N9Sq-lj!gN=1fWU7q zhZ{813DnCKbIv;l4I#!fc(_6hC7LvYZ!aWe^UDBY5Tt zizwI`@|7&Pi8h*od zQ2~3H6DQhCWC~)46bZn5jJ1DE`?|2C+%It)gSFq`9r=dyHW)g(- zri~qGJh<3peLffs!koSF#nYPj)bUM9?MOOob0}Jfp9o)&+1|NV0;yz+jk@dC zJ{fEeG;?XoS!|cq$tX@ApxqV6d7^#e8GY$cKj%7pS8{XmP6pEPefsceq#X0v>OwmS-F*5c1T=Zvy_zo3c4dc?KJa3ecID+VMs^P@ds$-z(g3#`f(uX;aF9DYUBpI_y3i zDd2cI7i(0HhJP>K{BUCxi28XX>4!z1=cc03=eKxw!AzZ#$3+vTxyRNlYf`?E@^O4r zfPbPG2KTtsn$HHyR#G{YG;fMUmOn}7yo6l$1ijszlD}(r9T8VO89v1foTlz;A37a8 zUL;_XH6bX=i4e;OYbAgXo;kEt7OmMHi#3I+%l>n(f+X&GgdVrHh;B)(G;@hqjRsFkScX!5d_vV2&pCc{;HtQo zw^Af9P4{hOZyIl`XB;IJ%1NkOt}!3X%hXv^^TQ?PQSH!T=8T)>5q3INI4_J;IYzs{ zN>KA%8L^gqMg~v{VoN*;x-!Zszu6~uVIQ{bE}e9mG9sRIoGKP}7B~G5I+weMmnGbh zqh}+L3G+yN^ZPM#29g-l%f`&W3hzT$#Pd6nigGIV{}xg%WbG(`y^62@AYumQq2d$% zl2x-Z#lDUEd85l~o6_UGVH{983q<@Ao$IUVb;Pjm4fDxs0D<5>PU286L(Vllc-U4( zW(?YpD@OD@0Zk2#X+-tg;!?(nFLIhU06SCSiK=-D$&8z`t6$2@?XiRqTpXeElgJBK zX=;8p$!X1V!C+)=C(n|8W$o-Q2Nodgnk?vX62XzPyJQ775S`dv)&q*)!Y6@ZVMCRE zQ8To+X?o#NP+CkI;XDeENPdcAL7#L6?A;F$_1^8qhMIZucdsGBmHTtlpg5S3rrUr2 zgi36LT?gpDLuD9161;uz_W}2)07274e|~h@KD&89XY!Bly)x!+)~Ny<{NJ*gX^b&X zk?9Wmk`N^=;72PaQs)L@iU{uO5wG`FlEE}jynhx;PAiIFz|L}7--Baw0)@eE00hDv zDq#7y_Ygp&!{skPq}`?XqA%KGZa~D)7Ts$dAwE)>e$ylbmoizRabI&{h@d(8bmQ6# z<7nL{iX1U4JsPkH6&)w+C@~9-OV*?}KXF!(yKeYDj6`iGb80zT=vSD}Ur7iJ+x@rx zPI1+$c@!V3-IE1#9Dm!(eZ~@FM0K&cV?0dl2g6)9*6i&LE25+(tPO-0BFIfZB!yhl zU%URo`Ne>-EZa6glG=qV?u}61D8e5=%d%6uFqOgCkKm>3L&zvQE6GCY62<;gE&TKM z6_|S&6Owz47TZSTBp4D6ll+ki%O|EALqxJly{jYwTZs$e&&E;d*|;xiX4De*E+L0niJpt^7Do`iMf3>W*E4*P;x_B+5^0CE?{ z?kfHtYT_b*^HlsllElU4ESfDU-klOvJ6ssA$FUs%{LYTu>DCFN(z1w zQuq0ZLu3|6=C^@?{s!jx9;)2K@QqUT6Oax}30Y#RON8wc4^oklVj4OEtu#QPijkF{ z9~!fnMGV2N%IR$I6c}-Q2&LgvG8f1}?vFp_t^t_gw%LK{yjkG|@U8NCQb>4M~Gh5O?*DaI#*$eH>(!{`}Qp zzyB}S95>rZaiSD6yhI+C4)sfisyT=9I@@7ir2zQ#Urc{I-NzUTeRqbh8=CnO1u1GG zCg6j_Ea4D(<2RMhbXKYX$7B*&Fe&ARcQKOFAEuT*@Wpz|#r`0HQ(8?SP~VLN%le(B zA)EjWuART#m3!>rk-uZ2qEGZIw*EulQ{3a9V(0v*;*6KwX@IrVE`3w({nQ$iFa+v^ zM6D6r-r4($-qr(|ItB*^Hb1X34erRt6g&S24T;~j9z6}^B~9!9NYZ z{EakH=g%N={$gco@!pJhIKrk0XBVd|MVypLv|Pr;z&R^rc1?fRJ0RF(^2^cKXpzO( z=*z~r9zyPm-1_g7;}^i4uYZsU@4$TA5JT!TwSSy^^0cVWpAv7aN~LNn)Z7ZWXK}5v zQPwc)8L`6k6$G`n>7z}nyH;3v{aXJYoSASr?ZxiN(|U<+H7dhO#B(EtlOnT|FNRX?zAx8mvdn7FT8+iAzD^SyLjr`uA=@5Tv^Rokh~0G?VL z*lj@^-ylD{4LQES615#hKWTTNtpEO`ouR%Y{Nl9|o*It!!XT|j6`6H6y7&6;n?u@H zkg<|^9S@ny4N%HK)cM*Drhz`;zr;T``UcrSijc_nQcI2 ze9SK{OM~W_h*J|Ka{PuWr6SmIeO0gmd=0Ot(nYzL!xjFH{a!-qv#eO`m!k}5%{v^p z@-^el0soF%a{Zg_&{XL%3^R!ujIxWZ?e zKhhsOIW)dWx!KUG4g2!2Bu6?Hd4I_R1IfI93|}eCIrLoW77k73G@EHdQO$Q-hyD{qvrhI93)S zl(2KpZ|OiDSzv&;N&mc;pp zf9hS%)*s$4yJ;83JG_153ZRFXEM^HU@NlXzZnnmy%Lig^W5iu~LyG7{W|d762#o)1+DD@|p3D$AU3>Q(p_cop|BcVRLg4QA^V;WD?nvz)_wsFAG6t{Ag> zO3{FMeEulv_)0p9=JG;C6( zVc6h=dug9rD$4`KrQn%5u?}k3nH5xN%Zfng%}>4dq&=6|K2Dml-*0mqAx!YCAHGrP z1Uw}k|3k$`S@NHyVc%Pc`F+0rAUO9 zqxn_ZU&YV(RHiR-yh}> z+sw5p?=OIiPZhmV$|)#iD+k^IU9;zDfl@NMXFxLovVJ-~=XWVv$qUZCx&(O#im~`X z&;s-xUl&Q5Q$HWiC>8h1nAX=Dz9oJivNgto-@1Q+IFj%(Yz+W~*Tnk1OEb_@ZjD%B z7Ps$2V9}{amDr%kdO)dQACxKj9&cZO6#a!PbbQ$(#CO0CE{_HtIFI9HyZW4zyTEo* zS2S!oniu0vTy|_UJ|C?fT;o;FS{wZARnB^w*D0%&oe^wdwvdbnGXM4B3%b+fr6ZGm z!+84Sl*P8bv8VT*X^u`Q9(?TYq|L0a#xgD1&F< zVdyS{%HuIV`Z3G?!w*X@`&dAV3lE9jNia=eA;MV#0Umg}{oYi5Fuq^IyIG;+fn*S_ z@wXgzt7?FBo2|0AdWLt~5tz^IyZd#(=_7h~DuN-tX3Ho?Ld#p9;fC71xcr?2E({gr ztCR`3TSI?7@l~~@(=Ys&EZ-;Y3P$c6{+SP@U9Y<;q|G;?s^;kUy!yrt)W?|t6*?y7 zPE=lfVix1fCww1g7iSqZJ_T7xZGI9cPp~Z6u;VbC(rtYD+DI}4N04rNNWhh85`#W$ zW_Hd;WtEYdK#Q0WgGwoU!LeDwV-Xlv<>i$<@DRZgFV2^$d0$ zhitY)MuY8kjkjf&#S9i`-=(NSi(Jms{9m(Nyeio(>!TrDSVjbHd%ZPcJWY6c!^2hw zvO}HKZiaa!-Pq>uJZkMihA{sA1l*X&MFX<|DaNM?hC&)3XKov1Ljf2~rWdn0KP)yg zQqdpIo7u*|+@T28;dzNhaK(4mJ)*!Wh%=4DKUape{-|{(%c1-P2(S6H7yAPMW-@xe zr!vD1`&o^B5&0n>fJ691N1qKeGve^0I8H;vRiEw+>k6rWY#8q`aI-4ws#ET;M3#Y| zJFWtD*nRa@9MZESE{gwx0sAZ`#eZ9phH{G)C!((uVFg7u% z~O4XbZpK5vW~~fxUjq#>?@;KSbb^w4;2Lc7OYV+Cpp;D6#p7zo$Bn2lF%)HpwjF z+oS&p0C&^1=73}wVb65+VxlK>@$5lAH|9nCiWHiq)?BI0^}&vGr$SmDdomTtX7G}W z0x2gKjw!#xoH8qk=_>oIz>ELKfF$zwNf}fAfQs)+2Jlvf3nF<;bsxG7hToY_hE*hg zh3Z`tN|Dd*O$HsBs!GF^+h}Y(=E5rWzO>NnNsDsS%8G1ON!p$)+-Xl@x!FtyxoVr% zSpJ?b_^}unZQ$1jpGW^6W1K<)DO+dpd!82Rh@{VCA<6MT0zPk7ZNtz2Bn2C)gOsVz z#o_aJ)&9O1P-5Wst>yl!_9PcFTbhSGX&xxnmH>XC!2CK)f$SrKyP12S<1lPIwAL_NVs)4LcLHZ-#0#{+)NxFAAg^Ge~Jo5Ywsu1R>V|`;tWEuRxnM|YWgu6vyMlI z{#ubmM^6u+tNStP8z}0}6#y_uLq0@8|p$DMq%Dy87>4bC{o=unL%L>J1AKBffoC@vZ`S$=Cqb+9V?7*o{j zHDbxKuSQ2G+ec{oB3sd2kXyQ^rj(Ny>abo)WSOpOCSGzd(qVkSuO;Ymo$AUjI<}(J zK{Tf~Nk1#gZl>dsqPA!t1x&k2OU`lVDm7p?>vqU>7&$MiRg0-@%ix(YS9sFQ3ongl zpX}D}Qd=}J7a6Tol0T5DA1#WwOc#suFMQo4Itq+`*1s9;IMx?Z$dg)0E#!H!Z~DHe zaKM-D4$6=oRQO!lNV@`TDB$2zxWrTnvDkNXtln2!EvMY2WtNp19I=h_$Mn#jWSZql zcdyK_@EnOzSE4ir=BEY38?uIf1v)JP%T({HEOpuvNj3f%1Z&Kf`Rm21S(W?pT$V~` zQpd&>@x^FlT9U|Y7ad}{G%BFZ6T5s?=wG-flSRp_qEJ;q%PURJAZ;t^w4q~T!xFKe zW65k!S{v3tGFURzY03|P-G=OwRd3bB6yZ^EMIa7!Y05v&Ae=H5vY1JnGQmvcj)c;x z|6$oMPtx@-KuFCjuveoLpT2*LO+RV)hi{e0uzhJhD<2_{3gkiG70{s1q47Xym8S(0 z1Q_8C8vZlRE7ammFC(H|seiRXIvQIUUqVB)J~4w2sG*XILh#3EGlfKz6u2e_3L1Vv zh{m`|FrPWu-~fGEHtd(GcW1?-J&h~WG0@FxI@m0dl1~jP)b3DZON~_x+!DoVGP0P! zH_r4f8cDEEMzf{@Zf@s3*K@8d{xJXKh_Q{DsnkEt-Wh8lJ?0!9$aR7%TTw=<{cS|w zqD@V6>6m$PSe;IFwwh=FDIW`t`D*P&8GZzRCz%L^dWz7%S#v${g^tUdPPe+cy-DD- znqX8OD}&M{Am81JnU9=v^!UJoZT z3ha5v1)$#4uy_D&+J)esyqVKCnqGTYq3w#&3dp;#+IsREkuXH#C zoyWeDk?>%@`=Un{vxb0%onQ9h7EM-Du;>DUx-)eq zz~&BZO9bP}J~iJ*)BB{+TXz{=w#nVRF|$oG0*xm^wpaJ2=24ZXAe~aR3*F{Pokf<} z4W1k_g-BER>{)WeNPRe$mQ^Lh7``+c#}hDb{-Ax>q^fe#!cfY9epvs+OJ`aOd4{XG zTp7vq=v67T7|e2*7z_-bp3Mf~!lavs;Ad%d@!)CJ5R$7-ku7RSE1)POiJxaKPR1dg zDc!M)Aww)(#EiZX&}LRvb#7RXC9PIaI_5{nCto8B8jM>kCgU*MU5KN{$TjN5faNB`5Q6Td^S6~3#E}XkGNJcZw(^?2RO^uw|pPw-v-{S z2)KCc7RFi2Kj76BhD}Z?^R#61H1e`MNC?5ld5B~;IQSr+Wp148c>^*`@@E4w#JvIB z@QCVwjFcRQ!d(&+57Z23LEHFatBsr0t|YFk%3d3udhj_uz@*KJB`E!Xfb=4uP56L) ze*=62!>a3)L4(bCaOL^q=%_5Eo-WUY&Wpq4O0QDSY=ur6FVj-qLJNK^1*WuQhr#M- z!#A#j_-u+kBSICzcOkfZ>=plwy$YUEhn%ABF7RAY2e6~=h8myK0wX@}ESa1)%`ABQ zcx+MgiwheoHDe?&a|Du)r5jV_z4x8uR%$lwUM-chj8F!)HYKGJ)CwJ1Gw*LY0gD7| z{POE1&D#~MBl1fm^*3B*Y1tSQ09`Gxb3KC&L7}I2(z5HO!B;2B9X{ufHk!Qc-Ej6v z{gpQO3~zdanFmlib*WxVgkubKi87C3jG_)E+U!9w>bFRlmp#%Rgv7D7HCyNk>s^sF z?&PTNbz#gNY5Q5B^3&KZQ4qDgUA4@U_PVR-clky!RCtj>0j z<;=3i;=uM|M800M)^Pk{iOSe@2k$6xWh=7{d*}PFbM541lA(ihML?u8f>i0Team0+ z=!_Irk@e&;w;O>%wi@P}tFY}J;47;%uBv$IVA1u9*0Gt#xWznEJ&ogH{u|@8lb$R^6hmUPLU^sQyWk-t8l4Bw;PIG@ABj^N*Jp|2%u~&HCL`MW7g-tBfIBm+6>E+=-brhx{QYCZ z?QWFZ9pkEP0Bc9}8}YlM&cw(1%%B{RhIHvQ47O`iA&hE|^VSmBwV zNcQN{si25g+R}zSaD$gY$b~;UC0E4jd#9I>h{?!RzW*d_tnS=0*}dw-v#~BC+e>J+ zE@OD31|m7j9sI8=CUbRX{f7FQY!(G?C8A{lyx@?j_xO}WP&?D`| zakCqrmHI$!m#%`8O0EaJnSw6}>=<&Ej@%LzqB>8TU z1_(eCKCf-s#+_*&?b@6!9eHzQ%r!0mv+;Z@>SEj>me2*@dgo5A1u|<}SOaH&sdU2} z9Md1W)dCwHA){kXRLPosW8`;h9x;32=W$4UI;TZug5Y*!Cit~j+HSSsJR7DU$1WnB zj)4sDljf7ug%eV};w`$>e&0WVN*8+VS4b3WZ&thTX)jj0z-k{UZP%c8o?YY95pRqIR&oc#4sxAUacyXBM6 zDXdkubK{t-?|pvSui=A^zcu(^*6B9N{xHdb=Z>(blHJlh+L|Y=;1N{Iz(L7>*Qn=q z(fTK6qvDwUW7plk$YIPgVK#Eiy46ppcNWpwD{>j5pJ~JAxHq0lELoA%R2gMPiLWCD zL{_L`1miSl>MfDXUSx=jlek|vFur|>cg?-dj$apEV@C% zy1OWV8lk;a9I`eAt!vvc_vkFR3a18+Q&plWYi>uzXu&8w~skRQ`4Go>M-S{3T+D7 z1S^5qhcm}GP|DyGJo4Dkd7n(MTs?#=*)4-KdQsxJ9EyBZcEMe;Tc#q4sARo~I=Xtx zX5~k8^Fz~eWU*iE+kF!h+-P|+CgUPr=eKc7qr3X9mH$FIRCvod6LZT`*f903N^~Br z8`-cnT^anPeuq)rrDvnj`haUDJh?NIIhx*gtwxg+SYe+aWB_uev&cL`gC8x|uO(H= zE{7?supz}_GoMgocRp%Lvd?G_Z>vv`NQEpmY8)`nSPy$TvV#43_YB5Jqfh;0YUXh+ zQ@7D~)d4ID7i^C03OAD0MyJFGrs1P82=lu3aQ;|6itN!xi#ugdS2F6ia0(TQ&yzt& z4?6V=16`6K1(_U0m<50lwI9(srvK#%nSf$xZ8*gf{H5t^xCpQ>Yqx23wW6=3x(y-} zN}<91K9=#J`YLDA5&BX%myO$Bge*ajrl*2>iB}N zL?%`io0LGXsq3r?^t|844w8(zWzG4!ZqZIsp=LW3{vy*W!)dHD3sbMN{Lq-M6|*AZ z_F5wQ1($sr70#rw`LeMt8|`y;1EZ6rluZM%{nrF%&!ZJMXzh7>a4tLT3(6+vq-G09 zc$Lt;1z0=y;AHIl8t^SsSefF=x3X26SD7@WggusVbjD*gize)$x1@u z3+Q$VRtJ$yiSsdFLWk~Jk@1!yNnlzqeT0zQSJY@#Xpoj~@>hc5!7qO7qC{^5g}GLd zBkYIu#+jodg2G(d4Hzfyl6HNf?Fxta&XDT;`@D-0oh%*EIM4-xkR(T%OCfD6<4DD? z+nQcUhBPr*KsQpo>X1%_uEM}8qUb5Vp-L}o=mu3y1kVh)Gx#t}PlZ4#ec>9ZTzU0Z zlsa#x>RpsNpH^c53WT6@a)%*kzo7lF5T)zXy}?uEk`U^waz%#J%-^Vo5Mi$pWE8HZ z(jy&G?Tl3_`B3>8+0fS}0_2FwZOax#q~UrGg`%}3VybVjGIn_NZAdv+CEq<6f-LvZ zt1p|9r6g6VR#2`2lMNnl{EM133mK7S0|b;SSQKPeYM_VANSdv)&geV0-`6Ve6p$U- zBD;>7`AxKt2{Xvh$pXwzyEr5ZX|yL-0YE57*16gqEo2i0nnG$eOxvOc+N8^_Izpc< zFsanRCOxvO>=u~O8)m+uK$BK;|%%!=E6^t0HhN_;AWt*sm_Hhq}4o)dC<(af7uiY z%-BzPAS+$ucdEODbJ=l0bj1XCu-gcdE0+_PshHxJ4?@3(w_7}YV~Th=hu)(qnWUqh z=tvYBkGe@Q3x*nID_rO7FK9-m*;yNRV$VzMkp=uvptHZOf}kCeTx6N^>ncvH9%@D_ z5B{o|qCm{%5X@VkRmVw|dXiT*UpC%nC~V~D%y-4fxiTc)8Ort%bq3sO%3f19@O7CX zf5gXa@X{L9JxG9^F9jBiQFh@eRg%bj7+IrDURnHvu^=#``=E1Z7p=UaQ>laHAODnb zUyjVMXNP*o49n)$xfCF>S#Lf~Rypd~oJ@kuu(oyN$P7D2{c*jrcsyj~NcqWfv3x1% ze$XtN<-YW3R}gCv>H6PX9K#hrM|S$P0?hYaPt+udeJp=xO^hScXt6>6)(-R#M)v7L3PgNP(c)K> zF2cFt5E^hRooABdQimBxOYn1T3ic&ng78QK*+$SYX7))67g=32b-I`ngooDexmLZM5ng4Pou zR5e=yc#vOSc(8Xe4Z`t%TfTVzO+m%(uug>#@9Ub?iv|IvBBT zg)KPDk+En?n|1HmC$AR2KP0U*ZiM`cun%;H8Ve41ah$bItu>@Hi!7}#zDH>Z@MzuO z)TLN@TEs)y?QAu(AqJ+p#a_`N6KjfT%IT7dPTrB=5d%_C);1~FLdD9mvrZBzS=5S8 z0!%%UbgNR(N~WmG^g8O&-w9cPGtO`>)gYTBv;EpE8%t#KU&qxMGQV#$Z3rL-eI7^k zZCB4czFqd=8X&#;o7z}3Za+F`1jkI+Fvj9?kpKLSgu^5u=fZPi3l3N}R%D3-`5BXz zfN)RQ|0$Wh7=huRaVF&?YXefOKdYs{p5M9cHUA8xUw$0zumH8zr!PW-0_Fz;#;A!o zH?KOc%%k75J9v~SXyF^JUe*h~6FJ!mN+PmbDhghrWYRua2)gR-8rYr3$J+53bg{uP z+*h9;36;v*Ri6z*;qxtXNkXwY8=J2u;oQuuD?$0!Yfl#G_Q9*>WAKf^NQZSSHIeb5$<~e;s{p^#lcf9;&3NOd_cq6*R@66>&0( z7E59}6($AxwU?hfLNn`8JlMcKxF-t!f=UmBTJ{LaJ%yJyAccgxD98smU44l;MY6l! zoLC2T3sD@rT;DLhGJcet5qV#-0Cene69yHc$RfCB@tN*9Wna(46C_fTxqW%MDd?!{ z_v2S!@Xc2$Dd>mR5+qUM&D}GFFnS1p8sq47LQ!?`z_KnFuaMKCuJG8XMdlFs6HL&0 zTyl9h7UC877<%?9JQmRjEq=Ws_Xn{AHHh*hWGf$U)Fn?IkvtGnuqWCr8y>`8awWXd z)`_P>ex}GUwTR9FTn7*#nz@6E0SspS>;-156$}eEBm+wWG4)tLdT=ZN&TQyV^5P$Y z1E9h&B_D&HLC9;+ca+S5y-VChgupb zT%`$j9oI-hzqeArK#4|;6mH0P9XF*3jSs|zArd?71s2lehR7#=$_J(`UfJ6_Xu(2a zOPDI}^d98xDu5KZ4!dx}=mMWz^Ej3q0xTbcmNlJ^Npc6?eS3>B-hhasRI2?&a-0kr zaV?9Rc-!W8tNh5h>rP4Lsbs4^+%3pSE2@3id5U+&tdD|a(w<}7^j|9YBZ~}1hw{`+ zy%Jz)#N2}n94>gr-_vS_bZ*dfB{Hzg;0bZbjys)uz*scuoxGZGKHYTt?rUjqgZ+gS zPRp%MfXGNdW)_mVP0dFDYxr>CW!|Xp*>cHk8#!F&o#Q4fi{6_w|BNKHxtbuO<)>CB zm7b*?Z;?h)4GkQ5^uO~ZBhl=D$`R#BRLKC=FzaZ<{dd+G^+*WwB8OMd?Zo|* z#!p$T_%0v;-=(Iz=~z?*#rt>x-^cx;;~46y(t0mKGGhU^1mL_nSu$qnsNdfC+19d- z68r}rsDfUd6snW(k_PcI7agFR@4!U5uPJ~>T5KR3bcdFQ2|UOiN_^0@xGLK?f7q6r zZ+#2xYi-zm@L_QA^2t3(PmX;(7&)k?|7Sl+nOSO4usE#rE8)}B%!v(^nEY&ON#b+a zIMc~1u%EOZAerhUSk*0ZLN!R0Ca%e+@HtMp)`+Q8ma&+N0Iv0#3LnHHVu_W zE3SDuC)AMiq}{2iGAceuzjW9G+uzh`+;kHUx1Z=?fUfq2R$>AH5rKazukJ^v4qN{tWT`R=1uMH z=#>@!x1g0b&m*vE{zA1{4>53(Rr$d1O1%=aMdN+gugPl?m6V{Wc%2`7%9obe@LRwt zI{>2-ZQEkyn(@AA9LP3$-Ka3G+H@iv&7YvtxbQdu8WDVvmgNHQPVJHcC-4wtXSZZ%ge;$npTQD6=+P1@f6!AowhcKrr^ zRcKn|DxlgmyZaI9opFt~>Vwjj-B;~7691)n90fH{;cdnFAL+o7C!JQNCY`8kH!;jM>0;>)F0`S{JjZ-U*1Jz&Or9H()Ut=tK|0g@xzn9l{$L*r z`JZdu2V7PdVLe3~pysWjVs<7LJVwW}jS=mp3<|pZC=r1cHyQ^wYiv@~3YMN+f9dOzlJC zVfF6NOU?MiSW|+Hf--~LwaGtp&CGRtqjPscKIJ0CCj8A4`(MpmliLi_fNp$h!TG%6 zX5DiGH>Cy18~G|8p0;^6`&2HF@m!kBvs`bm-(#g29hKic-%y!Wx&HfALAPg7?Mu^d zQ;sxl#VR>_{N$TMf2M`+U5f;r&V{+cWv40A8}j~G4o`?z>^_o;4c(gGhc+=yj)=mq zC%D>Xh@Vo-6UrI(sYJ|OtqCAUS3Pz76%FgT^RQo^%F3xSZa!#av?b>DTf|qKV1w1s9eJJgP!yn+^8lBtn+j9nVpG|tV;l64)h?w^ba*XG9J+#bV~!S7ENCpndR zJe8;M9qy)VHG)?)wzUQJxzF>S-yL(N#%8#`MYeP1dv0p#*fhMTP30yk z$z}!@05m2Gc+A|qBS3r?jjPmdpxinAWG9@+DS`%j4XHheCrQ)zuw{-W(Fw;+E-=QG zPk_K&@Rx&HhgnhgiCSm-n3U)_AAdI|>AirfiMz0!e3PZDuqCZ^<~!#;HQQ%z5qa^k zNU>YKhv_}KMc&=#+1%sLFX{yiVmJA}W)M%8n%BK^758otSHpUN6COV~8}9VqU)&{Y zR%ynx3OmteD;I}M0YXBO;aU|!!5M==jkm(<&u(R~qv?b2hio&rNyq!4$)h1R_jQnD z^-rbT8v(!IXGlTka+O0Qz%o9~HyM47->yYso=>K};@b|Q>e<}7Sovh?P3$n+Ip6jd z-HIV0B137CdkJ*=&qy0Crf#r@QIR^X*jN?!Tk5jcDIug7Y? zjk9o5Q>v%1F&QqaKm7ae&r`O%0Nmt=x${kzeNF#~qx|4Y<@5e7M!CqzEWG5E{g+LL zyUpFZ2F~f1IzyQB$BS9ub7WHC%M;)Anc>TWL2mI?j=}qLi->oZ$YbrR{|}qRhc^Gd zOt#^bSSkspT@?E```-V0zLHK~r{nZEU_X56k_KnFj_Gthx-<|i`K9b2+Ba8@)ggNjfH)kuwE+NxIky$1eVlQVIxot8!jsyLnck(=$3G1P(0R$;W zRm_qv=GDUOU3b$9C9<=YRJh%_EdK|MKyts4Y*wT8-A^|M|M#DI{#vRoQFmfpOm|{k zy8qAUMAsscZ|3}8NcI1>arNJss--uq`gAwqXHNf>x2?|PT`9by=wOt&KPxAHlXeJ; zpZWW@{~lNWZ>0LTg`GN*Z|3~fR9xpw-jU|dg3a%=o8NU$X73~yvsJEJ?&;#@x7_*j zXfqwnH0hIQg-q;DYtfOtvsBLJ!s*|aK9d=3evff*9L>gf1y(G_?-lgQZ@OQ5CwJV3rC2h$yq#JpZG?Hv`8F2vT zm^7cnlBK}A9zKtQ{9=jzm4h2-XUWUrGg-WmQnHZIC5$d(bQPoP7~RC^c19m#^eKt{ zh2)FO&g(!2CfEu86@r;P^GQ0H)zeK1B>J~fho!WP=?RCWxoKva&@oU5)TvltD8$m zpx4&K!_v}T@3lHC^-JpjX>aaD)ABNG>P7S2-m55y(lLxqWV9m5E3b*2PiD#odff$_ zW4)eDN@w3l-zfjyt1~$%y?@TWq;c~5=j=~vB=Px&k`~IX^PSQ{xl?|ev_u}9Pk+mH zOHV0zJIiZ3)7j2A$0b_wWz4>pOwTV$UM0`UzaV*?%vw_3o9cm7wEWvy`L~l*`D;lL zp}!z9lF;7@>Cb+1vkbh~Ph>Akl|<<88&s0XsXxg+QUmc#j2~jThnTex`FsAm$sy7$ z?Fi8Pw0D!|68YGy z81}m=JAnUo>P}X#JwShwpOSyh|0b1EDeXllN%ypOWjdmIK-#`(w8gqZ8;-M#Mxx~=zCp#SLo z5YT6O{{!gDy`Kd7R_{G&C#8eE_a&W_=C^$@jh5uqv~lvm-ut2V=eIq`IET}|fRcX; zl$Pxa@_Fx{ApUdj-V(>A>XIK9&k11)0w z62>n{KMwg`ntoEs?K2(h) zQZGo(1^w;m>ExnwmT2RopL;)@-cc^>^D0oa&s#u$?)_o97fOD0qNMPaY}YqV@{+!N zX?u?CTLAG&pnD1ZhT`KS(6>j%TNuBr@7N44xvKB<44PvgVXUr(pA--qa-OzGD)lg>D2 z+{H4TW!p(Zzb=`FrFs4O03DS&I`asu%1+xcm?PfI{tEp&$-~muv2^7**6W(gWo)$5 zS$RX|kKna+wfzWQTUXmD!oQiH(h}BIc4=e3=Q8cm)_$)5rJMwbeou7*<0mlwVd-eU zk2BrM8*M+&q^n9=*2SbLEuS>XgZh`JUQCAf&nF$_iTyigb(G5)^)lMP=t4$s>fbZV zOGdO0N;6r$7ZX}SO840)eaF_w_zQs+Wo>6Av`D+!y_ zG>eP}TF>|)#-GFZ9VE)>B2i9viE{SHl=Fg2IeTTw*(cMq-!cA=jDLdhlaxZ(-$p2x z$HkJ7$^&sWGFPEG3lyreSfM)CC^YSL%HVh#xlt(sx?Cv%x>6YpbS=~0!1V87`ddIB zHfK^wMz*101qrfn1_@@-FcZp7!ysAA_?MHVEbL6CwWeV&)VqKzW4JBiR%8;x=aShh zEF@RAravgXh!iGNuy9_&A{K5)SkJUaR#ioY3kSV1NtqVlk<%Ii^xVFiYZFkH{VjHF5%x4*&3!-7QUCv^mI zW2k^Pv|bxQK7sIMd45)58Vx6BuTSIhXE5xTLHVs(pOwjR0fuf27h<>$!>OIAzBgq7 z3$IPt-IL=(Jvq+p%geJE!v#Yqzc_XG7@qzRhPjub9)?FSESiM;$ymQBJls>x!`!K; z@8)6UG}N!auoCTfcu1-U*{ofVm0N}Bt1&%>8*0#w7vaqwHR)=4DDQwcIINe=Ak}@Ycbp~kIQqe zK>HX@#c=TzXlFj!S%7vhT#MnJ1!!j>+QD!thDR21xn&XBS%h{lT#I4OVoZ-=(PGp` zyyq&!S7Uk%*J7B{#KYVst~UhnR1Ax*!Tw)@?esUacP$^68?MFieI4?ba{iH}SpFMu z+}w!cdKucg3GLmC<77G7TaNZ_!Ev?%?W{yQt1zEcT)*fxw0Aq&TaE3%2JPH|cJ4$w z>#*I|@p(UF9nSl|WBJyjy$z_hk>|5`Big+S?cR-c??JowV)-_soh@kRJ}lS$JluUh zt|J(dtvt-Za0rG|FFKx8dR(17goW#~r?PNQ_F5Kxl)YygPj`sn z6WQQ!v3Yo8JC^@JEdLHH|3g^*hq3&RApbGs{{#7tV>@72var{{eHx6qx>CAe*nXG zQT`t0`#zQ%!#xKPe}MUYgnEZiei-E+qx=ZUKgIk%L;Ig2{s!^4Sf1~&9LLe#_h|12 zwD%L*`x(>!g6U5n|0LS^9rgdf^%4GKKl4Y}5Bd@ILwHMTANwrB0Neh$ymb5(SwxqR5 z_b2@$>E)#Nl0HlNG3nPNXL4e4T5_l4KFQ}Lk5Bd`hmz+fFG^mL{8;jn$6OwyWpGMy$^|LoQZ7uHoKlgpA?4nbZ7C0@>`Zw&<%N`2 zQ{GB>FXd3mXDP>0{+VJ)ZJXL7wQuTqsh-sO)Y++vQg2V)l=?%eH7zMEGwtlOj%g#) zs?!2#m!~aFTb=f1+GlC4(mSRPNFS3vHGOgVjp=LCA4z{A{mb-I>5UmzW!#c+SH?pb zPi5FLGc(W09F#dB)1P^H=BmtfnY%OJ%siO+UFJ`jmaN#UHd*bm`ezN!D$AOZRh`wC zwI%DptX)~JWgX5sp7m>%B|9lQJG*Um$L##<0oeuFBeF+lUzpvtb@$d2TgyZuDv^ms z6!1;$@XrDNoWuowZyJdsZNSscAqnIxl1R>mwYM$FCb{6Bwu3WtSJIDkBLm2J@UMsr zCdFh38Ab}g>mEu*ga0`OIOE80@XIHGw_8spgI_+CG=RrD8ytv6QVrYUEa>G%=;OK2 z!wblDWGT6x+(d39tH?648e;d7JIMoNEu8J|A&-)W$m8T;vXeYbo*>VYUF0S5B-sn- zb@B{(gX|&n%Qv^g_5=C~qut`^&#o54)A)sqRx=umhYg<0WAR%}^b1Chn>cL}=nv36 znLy*;BtT;!<@SAvtsp)tF%9Uv#4IU1#~TujlB{IXwTx~`j7ciZg&`e8d-uUA^XWTR!HbU&l-F?xv6ql|vX=x>Zp zU}f0X{zoV6k$<>ok5D?3(c%fFEbX1w zVrlQ}kEOlyek?8X;aJ)`pU2YP`8t;N&JVG)cTNIr-I12zUzyQ-Ht`iBzSGxngyf#{ zLmahs5@?%FRHrMWyvIj$GFF(XPR@A9y;B0v$(?ELp3eF4y3Pr{+H}s6^!oDNoF8kn zMpM`8L4O^i4>I~n*X8jttm_I}-{~svgis9fJB1T-Uabi zz>`Q4P?;nXy6~j{l}S2CWRe9u8Fq+N;O8)UHb`XHD=2MCGU?L=pfc@hOA6!se#_K{vdCzIYlr;xrt z%SnHrmE>HY9x{kNmjWuo-ZB{CH9%$Jg*{0o(_u%F$qXokM0`MHQVV;NMCyRb#7{~f zUJq0zGsy)I4*-=(5Oy;O_N`G6Z-5<5f*orN#AibdBr*r64Et9pp+Bx%3h~Ry1c=XN z^a`krOy)5wylFHUb?k z-3@evvE96(tSWLkhTIHDQyQjN_vovAL${W71ATLccjOFhNQ=7??_Jooh3a< zdq;W-=w;F~v`3_8fzFklr+p#42y}t;GVKNF6`)s2uK`^oy$*D-^d``&r2VvCq<3h) z(7R=Fjr2ayCDI2#?~pzM`k-_eT5<=Y4@;i_=OIQPkv^rZDt!)guk;1bx1_It?w7s> z%@3q+A%2k2kEG*3e~^9vdP4e%w!HKU(0@uNfu53n1^S!x8_?gSKY;!rNfO;w6`+!= z0+nSAs3O~e4wjvgM1}x`xgfiMPM70=&X5y;?_;!1ZUvlLM*VU!(0Vx)=n^>{=-=c_ zpu6O3pijzefF6|30{WfY7U-{XJD{iJ_CWuTJJK>JooN}AuCxqFH=q`!2T)b%1=Ona z2C6B2f!dV*K<&!8Kpn~;pn1w*pdVWbfPP{r1bW0$4D?gWaG*ymB|yKhTmbY-%P62< zS;hc8ZW#ykdrK+MA1o7q{%E-n=uei5f&Of{6zDIO$v{t7%7LD=xPkuDQbEga@zC;H zs(~h`UZ6SZ44|XcTA*W8KhUx2OrYb`Akgt@1JF`+HqbJ)5$FWdiod>McM+>a9R$sjHxO zW&@SU9QAgHHv)yxtFD3g8gc{b(uUP)e zF?<`t0~o%C;Xw?4#Ly=3Fb%`e7*59Uc?@5~@D&Vy!SE!82{I2`Vb~SJZWu1Ya0!On zF?X!>2I(6vIC-Y_IUJGltzT?1f=p3@b2v9>W(gd8ji40~hP z7sLJ-UTfvyQVegva5IMYVYn5;Cop^x!>2Iprtz=`hP^O67sEjq4#sd4hGQ@shhaH} zZVW3h+-T$B-574d@Ocbh#PDSd-?w9XIIur4OvW%B!)y$DVOZ|Od?D;(u_pI}PdE=EGc^mmueR`^C-0u{=>?yB`1FQP zANY&`8T>bJl)tjU=Q)qmHPm@Sc~t>-t!K7BFe9(h=Ocygkf+)oXeq3T#UL_6BBqgQldVo|z4vx=@(bDEFK)Z>`zBo3>TR6QIpvuqV2G z4IWbijd#~o`c365b=TJWJY|jbOjK<$INnq5afi%!W`j52sVu0h^wyaR7mBJY@FtWr z%dL-q!@P4Mlp4Gt6D;$%14aJXru<6EJi$;w1?@RvM9nFJp$P3lchEyyh3Ft$n{rD1 z4S|XXepJ~^%!s;}B+(@YoLqU_)*np?XJIBNjswUo0 zchFm5E zCQ#{t>DR2R%{<)11}?GbHkm_K0f!W7Is zQW1h?WW%w@yRzkY&m4@6EGfeVG3=1+0_8?RchLNXPfr&ZH zT>&;5O&mQR9I672_8THo1M92;pHIX~{k0xbx;g_C&w>03{SBsUF7$?KjFcW<6`z6L zx@uEN{Pjjg`h*c2nArZ=K>_)QH}vZ&MSM)aRE4Mk2aWG;3>z$LJQu;@!5WDs2^;5z zUgSKW*bDm>juah74z1yyI#0k`5upy_q=f{{4Kd&i^ZDH&XfQU5M>o_`n?cSksSCl> zgDx-fH%#++M*8cjIUWv+A*3#=ahr#ti903`S*wvSdLs07Ru~k*CUO0jpl`uwRE0E^7#dXxE8>% zqX64}sK!)O*v>tXtcGbVD2)kBr~{MXOM0cZ!fjr`p$0Hr%v0Rwi(LEYB#GpW_EU~| zAc^@BmLd0wn%P{qz{FzyNm#-7^rEfR?9wpa(+~_7vZ@!D^WihB)I)tR?`09%7uEV& zkd(s2t*eflUQt}S+rfBhRz{clC|<}N2nFdfVm4h@8Oa*&srHz6UcPKZF`(mW!ZRrI z`(Sv%-~n&kV<18uz{tLe;-SMF!7qUrwK1kDLQnv`P+dnGZdkxy+pM6>AI^pzr+cKH z6Z+pKTvy?zE_l#8%fu~hsHlK0H>ou{xnRH);BFbH_JGGjy*9B+@!X9<;Isn_Gt#t6 zpq{?w60xMBV3^nE!RT3#QK{CP}BqjX#VJa%{E+Zph^fNNbT~Bl6Ub^=( zh?auB7q?U#c4$7@wS_Wy=5T?&EW;Fm4PQsR#!zq{uRV-6^j>MKfihY8Iic`1j}IqO z8?5jLeBNoKv@r;i+t|O@x<$}qEF+^JOISust;>qfP8mFDUdb4&4Ca7rqn)8$#HtuA z%){-*P@*d>?eP#DR}^poBBQ~1(~=52agK%sf#lH+Brqn*8Dyl=I7u>z>11g>Ws+I6 zX65C4%J7M4n#OEm5l`fqGn&Kl)VbLBq?VponS}=Eah(f$R3*$?R;sAeED1KtZC01% z*{nX3nA7Na2bj^STV-0AEmKZ*O zKJa17$ANDg^GoWg{NQwj*zB*QBxoGvE9f>$YQ1$ZgyxV+8mXkQ@$T7Bz!2L>(T(Eq zfcbEb4P@qoqoJNEKRxNfqE%2ueJmQIiNwl^VK8FiP@RH6HPnxuIC(a7eZp}N)VtHf zrMAUzGs9q1pB$_&r@6!Kc--Jb z41@KmQfLvMrz%7O-s+kVsWM;c(DOH((?B?$2}^>^wI-E*ez#kpI}FAUrw$VA3bg&g zZZArrj$Tn5swHlQ2)|-68PzjmmBp34QMeACIyTyL&jI1kMq)w*fq=V_O=O>#&1~T= z3p9@R)cR*pzmsBagQM`QnndP4W%UVIOv91DVD2o?D`KQtAm7$($ zZyl<^(E?-s`XHDwZUcSby^U=M*5G1W5;V?QFoo)&26O_H8J8KXM|2N#yr;6E!V`YY z6J~<3pn-!-#MV64lWa!&>j}-8jD-kiQx-u|FB1m_U0NZnik+@rZu#4ZY1 zH2Rpy*bxUzepdo>o*z@qR~XG)XMkQoXe2C&#@$8aB?eO&wTwusYO z*cpu&mzK0_?1~Z$@CAe2Nsv*V+G%u6)DN`uY{cgrKPHL8E~+pOnL_<=i~M3fGdN(A znnAp<(C;!LZ!n-P+>N2*1I7j&7i>&muj@S?(c7$dS;$j2osUXVfFAe@(Wq9;`3#$jxL@dHW;anxZi}4Z@!N6 z8f&l{&$Z~$o3(<`tO!_1??_APMtOa({CZ&Vs|=EQIAX$x10UHFfDuos;4}}eMZ>g8 zZy-oQ;=ZK9=dI_1G>C&WSmdp$@&w9zMBttjd)&2Qaue=pzQ%{Tm-mQd^u&jF!ax}8 zi3?vLl!z~iK_flefYG6!;H$@DhX=eWeOGZea^?u|wRmilw+>G9JYI^;!uh6lVr!ze zVn$FrIneihUM$+vL7l}L#4O-VV3Gqe%S%jEKqZ6IOb)c2g5YqJdM`7WVb6oWd1B4R zuc9K28%Hj)actDE24$_Nw;*dh-g0`Y=`9x4TD+wS0v_&46w-TVzJs%im69s9S^y{H zW&3NuQ{bzGRhy}^9LIaSbV$N<4;2JU*jP3(=v8<)hh3P5v-ok3U!~JSAelf3a+!q* zjPm39oRQu-4=$g6t?c#q4KMy=E`~c^$|wZ(ZdmZ;;*J@Lh#n_2Cl(w%?Wnn|stj+1@#x$}nD$ zr@~tcRx4o1gI(KGhuai-pkd<^7GO`Hj;?cjS_Z>B=pY$7Vc4+Z@#Uo@mlT^$c5E@_ z{%5qwU<-VHQjN@xJ4xm&hr!YrDxr51tmBMZx-nIJw$LUQOuX1L&hXqplmTb(^RE6~NU(~PEL+?o;#^;5; zCo@NjABb5LZ)>QK4VRK2_gG*x^ViW+C9J)`6uw$XQ1{jhrtYtq?bM59f@j8N2R%>m zHmIWBXvi;~8N(zKV~NjgT{0#RAu!G}^z2K8>_S7oR0Eg8TkFXaE*wph2gfUzwa|0H zJnr$K<0tsgqFmp&mj*x36b(0Mb`l{)g}VW~q40ZI-m3;L64O=A9U!%|)7-VpQ=(6A zMl}RO!(h1iXB&@k*u^`&1T;V95l<=wSHI0;*3a0$x`9diPJPJ2}5j3@fn2Y1^u}Ne*uVJV4`DJi1CuTiU8|f{``acjN)l1j&LsH zyIN4}xMSTxKK;U;Ai?enTj9{giEK}%V;Nm>wkyN1WoH9ek=f}0`0T(?5;VmyfMWuU z>W?0nch8!LtKcI*BdNiNICe3OD4zM$7K}Kzu@qqnVVIxo0v=i-))WvgW!E!|$D(+& zG(R$72T5Ikhe^iM<9es?B?>mzk0#+YE1gJ)0uzS-I|ukm5jq zUMSKr51vaUTPY!+VtSKNJgi{C$g=X0C8LYWM;4DBUN(Y^t(qgAMlgUrFF(?wJ3g$I zuG{)?fFk2GK#}nLDPZdXjhJ4PFtEv`qCAtB`YS8~?vRJRRmp(ysF{iIinKQR{K8#C z7Dc1{s6nmrt9gDlVsUU;1h-z#D|I|kAOcuqmFNd zJN$(R^8>VSE@;E{itmR-rNK8rNXwR^t+s4Yx8@0Z*5wI%GRvNelX`qHI!G$`>%c*A zRnC2e+OXRf{oy8k($b5PAb;S=y2^Ol0Njjv-5`6!roYnwDM*OFUQ68igB~)QzhY47 z@ew}>7?;o<<3VeMG05hSMp8li{9T4xKBFr1%X3`){Po~-)0Q;dYt=LNunw}RhY zG2XSJQL0htMc11;t9AHBh#O~;8|PV&ZQT$+Ie0|hw`uOAQY`(n?fA_y-FDf~VS}p* z7rZKcmG)jC2P~j2^jLZwO`q_9%NL{< zk`RZo8L6mWSv$?w$X={01@|mk1iK}B`KLJnEo8KS`CE03(E`|>D;p|8&84VsWH-Oj zqOyRy(o^dW%!n3E^stVP7SPR+o@?m2*w>;K42LRjbpu}oq8d_n_i1II`T=nCXR#s5 z87$FwXtg;kX8uzIo>0H|^0L=Pg*4*NM2vThCeSHlDx@CM-#NfBRu=Hq>X$*yy+DNT zRe?uV$=()(ZKx9W9retq509Lo zjkMVqrCUWQbiQ6R{;rsQSi--Z5WWjtiUV{QqkukFnML0LE8*u-7%#KD^k5B}S6#L7 zn4P=9b)i1_q!b#3T@twIJ7rLQb|$X#=#?4j2j3UUQ|2G(pG`MrW|-tvu=S{<5T=Fc z??yz1!|9)Ygo)T+62R`lUL(V|yI3IJY@r6}osEG^-Xt6-XL&}`b*6+aV}AAqC*e_# z*rjO0n;+ZpEk$>>g?Fpp`ij>8s9iol^k?_{L2E&XjP-bCkTKI>ckqP$1qyp}fRy?? zu;+liVP16HO*cZi>pz3?^=D3WVJ(;zjGQLy(SpBT%n~RK%=D4&#;`vL;rIer?Fn=7 z##B|oLTSip^YN<=lS|4S8rGKVCWk+##f}{1o6W_*xGz(U&B)c^D1Nok~; z{zVo&VF(tSEymLsgz-{3&G?-fW#b)>xC~_v%jq9v@h3!7dki~zvnXMfg60J5hOzm( zOc-I;Nh#=sNJcigNvZp+X-VzAVK#aV&9 zI{~{rj4`^mu!m4=lVJ~{XiR??MdSJdDb6=J+myi{Oqm~I8^fNpPt94K)eqfxzT4`E8uSO6^?0zPfs9H@!j%7)EKu;vM~ z>xG`G2R#q#u{y@1?cBgxijIuvku(;NAMAUI^+J{74X0tI-(|pPMMq4&Y zIvY}$%UJ~>?Ws!W$!J?SFjo1vgN;V#FqWQ;bZs=mM?>i5 zxvF$5lQCsb8xN~bOKn|?ZI=UidPL8aKtI#bP|I439x`d0lemGb<>9~$Z3bmI%gx41 z4r@0mp>5E><`$oIB!Q3P5RTy>A)PDO$n~)qM(3oT4&I_mQ}ylvb#=IWU49NKT^8k+TNT-7rxv_1Yb zZM)`c9#NJS+9zC#_EsabPbHfl6|4;^^;Sz57->_R#>z)hb4ar(6p$&zHk#%QAA^zW8*zdZ#kprgT>V^iQ6W`6a zv^+k>r?Co_mlroceNcsOpNp6`^#4y+seD@Ezai_*YTdYE7MSE|obwv?xz zarFI2G{BhX`nOz;Kd(P2h_G~Mh|yW#J4}KWqHQ>UTtxC| zD`|Oz{v-YgkV8EyfxZkH3m;#egW}x8m&{7SJ>dWg=>s1(+gW+b(eL8YmqXgJ)wpEi zB2+-nXfs$J%*H*~&*ngY)xH8Z2tVu9=JF;E#^ z#E+iWA&!Rc=dK#`wn2m%; z4dMzbL96KV5a~ED>XbySc-d?-b`lsxy~jqSK7+Hhy^ip^8`3U1r)GTScHAxFD@Zk~ zUk9;caIKEeMnSZi!*V9=_1mTZvl_&e!Oi^l%Z!-AQ<@8VJ*D8}1}Fdw%a2t`lVPfN2lVol(** zT+@6yHEFd8*NU1^)qm|sQO4$52#yBa6|TnJx;gKPc`4~`JSjz;Fx&I_6)oZWb^v!X zdPX;JkoM+Zx~plq?4;LdR+8vbuzpVGHo{8fGUfx!gW9rYc3d~xa~p8qjx14g9>6r_ z6Zz41;(l+))Q7l7*OuYguu_z;fobzxd@M~p?wP0a1-OqMBF3rRn9m`$H$!fN3!?V< z=B@G-K0x$4C%jQ{>8m`uPfGUU5l>IYxT%p`ynSlp#?`%=trfZ-P{sNIR@%(w<;=G$ zFJLmh#^n*SUqI_w!}`X@+Aw@)@g6OsD{z1uIuJNe;c4735gP$(s&@1H$4(C1&?{k?3Zy2_MkhL*n;kzl`xTKF~A)iZm>~x81g~~1m)Gmw; zWHg7aN!oB|qrTv&RI+nGcXqQpob(4y6>_SWR!_#OWh;ojN=`9dQJDQtdKJMXL&H{A zyrOU#`!=zQn6rzq`eqLd+llBbFx^Qz+oN84B6Vvd{9jix3jTG4-06560sjU-np&WA zMCP$GW)=O>4$@`#E6?q^ed~}%E%h6gcev$VVteGWNfXoa4=vG>6BllgS`lk<;#m*? zY$qiyJO!{LK-n5=$&sX3C5K4xiB&p~SlMb*tO;or`jx8|YTQD<&)A{>QLKr*RnSlD zZOI{wB&1Oc+8rqF02p-ot2we18_TGTQ5Vf6izez%HTzR&v*t*NgAxlAYjze@%F43l zC_uBQ#q2C7Lz!%KQJ%|Xqk+xFjM*4)I2>HWG-6_6th8KLo`NBeaOGOH1Er83*vTRE zBSXFbIuQDiWowpfm1%j3X;G*!vDga66MM&6tl6}d1SqvhK?jn}E1pmSg2V+oE!M<^ z`7B30H~@BJsDUIWF6^##2b=M&3GiaGoJ58c{C^vfc!Zi+SVUW3;f*#eN2Y-d@&P8; zUa*rHUGOM0rfOrwVrig}V(k<%8y0KAf@3Oy90#d1-$Arg-?0Lo(7^J76N%X|-Km`u zwDVgN0Y(8pjd6lG0ho}5oRvjI3zNWV2Wkq+Fo<|@$}V~-yO>MaMc9_I(r5=vPIS|emz6k~Ri%~HuPEla@Ye)gu6=?B%O>l1_#IY;1b2W;pE~+`xoUs{x zwt2RPk2FVYl$0{O*|}xQ#*dLgtz6JdTg1$9{+OF&i>|(2VC%{Nn};bkrYSeZ3HE4j zf)Oj5f?umydi8o(G@h*igmr+L1*nI9x#pKEei=xW0yb)ap?nOfnI7v4Pb#OTINJrKdzt^aoj+G6}2bBYBgdZu)gzs z=UE@nYBfc|Fhwer6tR|rXC!neqCS%7`3Qq-HyTo(RinE%Ye^B|X6H7e&{7}5dKi7& zqK{%EP$A$K<2XXn=0*Iu#0u`gp9@m>Mv)>le6B!5HZL_V$;Zg6EjOtnI*J<6v_tWq zK#vwQ`!y<2mBAHgq_T^xx^l@(-Cch|Dw>fwlQzn#T@3sQjOW8s%_{nJdiY(Os)NKsoV= zR7jg{1+G;QL?nH-J5JjjtKA}{o<`LbRj(mxb6@*a#iPwxpn{tYWu_?2gz3rZM$%CL zQetHzoW#xHIPEQBx;-3Qb}Qq{?CLlwfg}$^6k++P5L$u}i-tjn*f30EfiN}<8C$8O zu|ODGsW7%$O=E#Dwp!)jQ!J>T3Jztj5P@_N|1bl6vXdi_l#?xb!77ua0ag^pX+=O7 zuGP{o5LOJKslwA(AnM?{c&+{WxZJpB0kMzJin#S`+Hb_lV(7C4YpiAyc{|B?J6Y!K zq{rLIGH)jrMjiGvdss-yZX+Cf z-5Y7P(o`c^Dn#{A^>HbS&Dh7W%Loi%C5zQh%Fs&3P-t3Ji^`u?h>>Zcl#r%bN}@^$ zgaZ;q>3~Ej+g{4*z2w;Tl1hLa&PpJv5`ehD`x>s^;3?n+kEk?;3=*1vMkb(1O~8gs zK*{%ml7PD;)B2eVrjL>7V`TamnLb9QkCEwPWcnDHK1QaG>6t#T1C6r-jk5!dvjdH@ z1C6r-O=<@=oE>OVJFwyGK$F^m4QB_M)DCPoJJ6(dpmBDf+R;#@kE`ct_!(#T8E5zz zXZRUs_%&7;ek2|QTM=wUuob~p1X~eoMX(jYRs<8OUv2=G*F~2a`9g*5tIo6VJwX4FLKFTAkebDriJl&7S-2&!$}}#8+9)TPO52S;=sRC~_6si; z|LxURzTH1J^lgmT|CKL3e5mze^{K53 zl|TB$U;6xyb{_wy!Vlm1#^v3Av-PLnbcFolJs#g~HNF}5>pI|-eHpKK>)*^C__ucFkyXkVr=UOV?K^T zkZ|WGC}I}U3vK8JL8)$Soqo;QntzX{ZLc5K`1N%PySTW%WbO5h#AxxyGfoME&|SP^ z3s)0T3Vgp6gSoi4hMp^w1HU=iD%`Q~PwlH`t~xVl1^lNiGYt1ygzq;(gT zF{VgQaae>EB8(!ndVpv&uNoBGqJT?av`7cijQFaieH$EQ<6_8t zD72(|#?`*5FR;xg;@IWb4{x*@loTYcc5HG*K!0&rek8)uBaYF`AdD@Sc}HxPTnWY^ z3N#+5$&?WwO8~gwpcSok#_^9Bq-x_JS6cpJ)5d6Ri@21jqy$QE@e_ zIL`j4!mY=p2vWF#P8#N>{t_6YIV|3=>BPQCZ97^85gjZj-@rvfuCuv9@(|V8oZfR+ zT2f~b0VM!~Y3qpvL+TspU~K}yf~78Q4u=SKUercadSe4j@YdZ1m)m@X=xh#Gda0TX z=%2ei-9{9wbgvw`jV>_BuzOTO+NxlK_L8G%Lr~&ABQGZ}snUHtbva9oA4g=LO+5h) zi7CSr3;VbMK`j|=eN8D}eeg12`wjI(+B0C-8J0K$o(#jj&Z{usZL0(W9=AeB?N+IU zX1szc3`6cQQl@?aol-7Ha_B+DMRpe#(pdjRjiBZinood9q16f&s|EuoE2vd)f>l$J zduimnjYdi&rJ@G*Ue-xeoDo;aR3&|#*H!xwACkSuK?CLlmz&HVb25ji8tC4y2U0Wc zsl<#X*i!6NO7}2Xj7wCsxUci4WSM@JiKTcyx)}XBNacax^PBt(+u}P4V-;~m7RWRw z37E!tA?0AdPkX^SnebQEnOerM6lj>vRo@2OTf!fz>^ro1GQuH$kG znb%eCb%WZJB$yID0hl22_@1vD!9jW<_$=bI1+kO=E5zhfbMPH#&QU{ z6>A@^qNp#IwtMFD(rEL^Q#@;#JUu&?xUWyFpmN@r*fT%r5)ORkv&JUz%;(aZM`zEi zk>IC1vw2nS-WQLTb!v7i{pj&$^YlJ|Y&Li%OmFcZuOXk>%wTB-Rf%kJZpyltPZ13~ zGFpL?vfwoBWJwIM$uk=U0EIw$zXpCDm;21Z{OME1M4qX*@4nB@p~}!RB?XOXe;da0 zH+tWmNVXriFBuvf9O@q$+&Pr+sO|LBMDhr~ATUr5*GxCKD|zt5%*1^1*g$f0;<-~( zbEkGBN2Z>dJTWny92iK(pPSv0?4O>vFfoLFW`~XYKk?Yyi8Du6od0z{iQ}Eyw)}g+zfC+bYr6KfmA@&EoQ%H;cOfkDD)2UYWNon<+co_z0}qBndD$6Vv-If8ke=RY(v)DPEURd#dy58H*+V%7r&vQ?@ zxBAUx@0%#+q4YG%v?x6T8s~H-Vv_IFuMx+yD+kPd@Q2h}L#AICTbSU^q{eGnZ^I|% z5#)ELJqAo2{ki_~I1Y(}h6FRf<>D1XN$+dX&5%JH%DUDMp|73i4 z`oGLaJ20EQ^en_l)DvaUH{h&$zASpm%H5ME_b=hUG8$1yWHh2cmG@NKLJon0|XQR z0ssgAZmd>8jd2%#d7%IR1K9`w7XTapY-wUIZgp;HbS`FcVQpo1Z*prccx`MTq8I=u zpcDWA000000000000000000000002&z59>kxREgU^Br*igRTwijB(l3Gv3AC-FkLD z*Ysmt!1M!MHTH*F7~3j|StYkpN=wRm*zotaA0vXKNQ#*$DJ7+{ii2HuRaS~(JQxv- z=MVqmVU-4VtSFN_`_C8OpMCe@fBg7={O>=+dBpz-_7)1^Kg+@u`!U;O zNp-d?_|Nxw@%4vS_^Ej6mG#&UEB+gQjlK$f6u@Ku`Qqw7KKu&ny_4&my$&mOlNXQY zRaGR{n~J^A9>xXA&1w}EkJiWP`@yDUaZu$!xL&7^K^R10Mf@zNSXo&MzG|-c!zdZ&f>2RnnHL=6H_08#YARfZK%YD_9}jVtXEg#=;bV~HRS@M_6($*B<2Ee9 zsNxJ2e6#pwVXpAa|Mkrx_~zv|0e|T?|K~Sn!5{N`#(8|fA5F@D{~s=Q%c8IR{j{RF zLL@=pE0jqVu^_2}`+SqeeD|EIf-nnMQSiS4Clv{NV)0T~;zohVf_wf;nujre+kH~q z=9>yo!BGl4nX<6pn}`#Rm&8T}C;t5{D;Tb|F7oS?tpI>D2Q0>fCE5x9^ft`ml*Q%} z96ls>P3@=*t{*vCi?6T+waXCkVm@4KvMl5;J=@QA`1zWXWhK}wLuTK`$3MKn?~cN^ zEgAJwkynf}QEbqglb1+$^|%&W7qo<*8|2YpYJsJ_Kz?cg~EW-;8fY2#i8l36ETp zGBnp~BC!YFoCgArj`*2&$++O+UoS_(DJ!EQS%dsM+*;sb_AZH85X(jHKtMil0eKCQ zJG4MX*%@(F2I@xOYX~Tt(#{3tFp3)KB$wf?H6T;c<+=#y(*!Ss;$O=0N7!5jVc ztw8^oRhoX*wm%AczGr0_-mv#!72USn;MvcfKZhS8jW)!ipvs(STA&D)FEU zx1-POhCSHZ!9U@P3wEh7#S6hL&ttAzUR012KAm1b2a0jRz=$c3UUmU=2$3r}kAj;lpC zBz;hKt>q?74U2yeOf?np4oo%v)I}-7jaw?`=GKu1M!98mfv3a$s{s?zr@mTlCDO5g z6guQ!k}2K7t-+~b;TNUiKsdPZR45qYq+F-rBRPx6)L#b6FiE+oKQ(Nq+({<3f~*Oe z6r(FLPtaCevw{nz6}sb`betN@KcXwEt!Az5d3mV7xT$XQShI!E($a-4xyy=R~T9@%GeFWf(4ZlNxHm0TdhjjDjC|MTy z3h{QcNnr6P=bOsnAWbsc)m6Y6{5{}7&7yPzw(IpHdT0>e%OvH-B6%dq>zRNi$}7Hw zhEp*plhqn`SNl`>qIn6XdbvqB-26TKi{sp+8(8jS$Gu_8aFbTL*Ko>R9&Ur6jUVz` zNm%x>&FDe0H|S@gI42o!E2=Tt`cS5Zg@?~#1Fc=4yLUN?1h}}#@`4@ijuJjm+&Z0g zdBIQc4Y74Z=)EyMz>g3sfmONQ3WNKwz^kxSYv@UB#6IY`uwdgIKMOVeE>WfFwQ5FI z1kKII!Td(N>7J8&}ggciWU+A49S#=Xb)0Ncf81(;e>$J= zYfegVib41j_pDYZ>43x8lc!&(S~`{HLc&jvf&o;j45xBUdY2S=2LARi1-lPihl6r!<_6bXu6PlX@!{&+C>@m zrqp1@SWK6)yoee4R?H`*+RRax1@E~kOx7u_QkIxmaLvdWW91N(48X6*#tq3X9w)rJ z4M*aG-Z(-Nfzcwd4ZHcUfrlA@evksdHSzQm0{m{eu!lnUl!g^tpS!Ap#&f{bF1t@& z_rP~(8SD@ox=Z2>m-OPs3)fsoctWsq3NBPhgaL@Pcq85o#}SPUpbpjra?|ru16yDn zMFA)*^pO4PSyTFFy7*V$=^^nC&(j)f-y>0*%s7e==n%^~6WTAb>R*314%Q(x)1$nJ@;CYBI_;iO(F*4=uKmo>-ZKXyW(B|Q z#zB-qrHb&pLGEnBA+A8-N(jU&Uz`6}u&5gC3bmWTK3@Nozr1hq378Q4V()|>{?>qB zX9|oRi*$H}7pm8IV=icU7&crPv8+_N#CDdj$uC^L*^ZpD;v63qF>RsTtk-!Vd=&8f zPp^MD3(mO(6!ACZtEMqf3VVmbjhxb8J0*W7g{cD27!z^2S)(-J#=$s#kS4vwCkboh zIPObmb#W_@9ZO$2SuIx~tZ!N0(%>#3rq9jw zvj9>>&E+tGpt{d%JHIZWQY8XtVm5CiBS}V^ZnNaBOZK-7$JSu?y;7~WoyS_-^>8u% z3{_&#JrAx9TJE?d`{>2MO*bsVbaZf`)ZDXK!zO_h@PfxbCnmGlsL8o?_A@tQh*L92 zjKl0m4Kzy)z@P7L6S(eR%&QC_;>*{kWjVBP2TIdN!KdmTX)c3TCza@oTwEWH`cB(K z&^S!(V3%34_51MQDp_@wnV0mbUS)x(wU-+QxsA6Nrd00>k-h9fr1bKm%RdIAVa1Oe zmsFf6ahupHey$tU`txK{ufm69wOIu$4cB=2cf4s3m(^!}D)Y|K4C^V~M*-#POW9Df$stYLaLV_V1}9cHTk>9ZyCo;gV&hO)p^!aI{31pEKT_4xezx*jAiI% zx&zxnz<3~kk}rbl#KSTg(EcYuZs#>1697Ks+seR(K9;*hLx}@|#@3Z@8DuPiEV*H7x|U|b9Vv2j5e5M7&5QrjM$HxznUIDZ=yZ>uDu1dWGY_nfSipx~>w`rc&dMHDW!{&E0v zv1`Zk!tB!!Ue2rZO=pjZ`H=G>UBFjNn06#WO>&WT68UDQ=jGr7qtJjyh8&49DTJ@Q zhChAZH&QP=nyY-So9|NFl!w*GPuj?+B5 z>0>OOC@Oc^9sScG6gGwF@qF-kiQdq~j^7T#=Q7R1UU!+PK=l_qn?l`jWCdmOdhyoDEVp zw*_^d&9}F`37MTSto^n`0$wv5@KW;E50qYf*fG9jRnMxCZ4qY2iep9an=cxqF{9|G zWi&Ps)d_v%GCetvj^#lAdNDl3nrn_mGsml*1=ZG_$z?pG91>XCamAI^JJ}|dYswf@ z(DG4r;Blx%ED%XkSYfqdal#cV_JUbLX%A-H$VMGlwtIm;S_&*Jb8Qp2LDw#T2(l9p zz1mzy?1NI~#125M3w=^v!5s7q8VqG6Q~^c7x8-eE5R3ik zr{Aj7S_el{+#9SCSwn_s83$HLm;=FWb$Zo-bsii2_=ZdHFK#=%>b%-M%5I0(IIkAh z;`@Osn}-$?0BAQ^z!JW0fw#DY{t9bnWpK0M;x?-olU>B<)Fwy_37I?8h--uj$QA5yj<9~+!M9?P;Q#nLGf~?LMk;%yX zZ^aS>js9IN?P^lM9lb(oz|Vfd_reF?x(NJ+aq*m%Z7q(svW?po)!DyvaprH8q>-a|hauwsWA-;8=4@tVxh|%P-)6B?kfL@t!zyG}O>= zb_E&PRonUzwQJlbKB}_s==^kU5HEBhweH=$;t#Lnmk*bbU6o=i`h)1@F_eWW^n#d) z5TbJd^_X-pxZdBe-d_D^>rS-CR^eBHZSfjVF5rx*dooh$zU=RmiROw0+TUSa=;PGP zT1$MHG0&|&{5?#?Cy)6C3$>M;q}qDoTM-yE7uT+9vd|lW;j4(E>LlYkgtkI09ShdC z*h2_1-1^dgX^8!c`KR^fI^~ucZ9{y;{Kh}bU&U&Fu|E|H-Q`Ifyhn;$s%B7 zsS$QfT2T&3!Gz5Z9VTyX<&_WGTj0$XGEn1Wx#Y6hPP)a?Q*8nn+$dF;J>L`&tRJ)b zu0hvq8;4NjT|ftn8s{MywOH8&cN30K{t;lAHtt#^%7yk&#K1Hgeq)Lt-5Gk5KL+_7 zE1Ffn3Q3I}@XM~jBO~<+GhT5n&q`M>xGF@$d%8Obe<10z4~EakKwSY)jk$^cCfMg6 z!%{Zt?zH6#5i={Hs2Z=_q3j6*<}X^ls@~zu7Cd55pG?D7ouX-+3a&yiI?LD16EX8|3J&c%1i?Y++Q)D;*7Sotd#4T&-5B*9r^JVF@(~9nB=Ae0&78|go?z3W@pP9BhqB#6J>g2q3bX@_aPDq{hF`NlWH?)5?}=*u z5dByc(4-{#5qsRz8ov*6*a%dcF9QCRCBORNclty-TbwxTM1EA{$#&=mVNWhHDf)=@ zI<*Z|2ZqQkT8MTJhntW0fUW8IYFsvks$>Zr_ZZPrNQN!8T|(%xueFj9xhJoGxqSH= zZ22VYTW=-}xk0>!t#CIe=0vUXVKsMCLVsu}*$!NsVkuq^oQ;XWr&OZnb{Uz-?tPPM zNGz@GAvhF9v3Q#M?|zGOj?1De%^A%2H6JmrUf^a~bCnLBhN$&aZasMmUo(gbZsMZX zHE}OaW(H*6>#(rdmT7q7GTAVeOv{?jHLlETq%LGlP{ri&j$O!VVJ7 zxIBfM_xIDn^4OOv<>2(~kXTfCFOtWlfuI(^0g%{L|7G23A5bNh$Qsw3XD*d5uBT6&Tx5xDdO2pg(_%Jmes-37V_^~q@p=2SF zu2!zTXmvK%B3LFYjd9Qk<%MYyL8Lh)Rmsw2pYk=@3Ms~Ot)r1q)rct(NaaL!?!zPl zNjLy%P|w>=dVm$yw`UW^OLfH8xeLL?+ibI91!O|>MkHB?SF)A)98h)WfDH|Cm`8%; zedd=D%s9`!sbm{=O3*2ZpL*3*9)!=GY;N0PbgCA0`Xsc)$0Iiw`L=5;n|znrMq3d| zhbG(wPu7@xF67Xt8rcnBhl|v?p#1T-{!IKuEt8mSBpjBf`<9-5jlY=Rv-4P8iK{*3 zrw!B$dTe*u=unLe>prRl6TJy&Ub1LDR!4v>(p+T0*@w4R!SBw#TNt@?)MPacp_&4l zyhGdFe`5A5g3{Hs434VN2$QP_tp! zCd*u6%Zv<+=k(qN{t)4e_f zgTtkfjhqIx1FeU7LrlK|9%#@H!d)k~TEekb?>V5~JYS7|m-Pzb2&)vxLT!3HkpRiA##bhn_dzVy|X z@Sm@~4BVGkbLV{yT(V;MrgOdXuO-EwL*+SI;mk4RW0r}Cw7jyj%y~u@(y!`=sTvKN zAZB=}B-0-g8$+7+Mf0H}MlD2ydt1EDTo;qlBQD@zqKLh7bc~3mG7CL4O*eJ-ic8UP zPjtdD%Lzwn0AW*VpgxWEvO6bG^|((91d#uOVEnPLCvo|YfNDa-STW^YWUXI(D z(Li;-VY=8Zw7J+Q7KVJ$`!N{g{c#!O{X7}u{g4duekumBFnKtS-~W za|{j~HMPP8$%uIsl%DVyyi`pi@M~$9@jLNNW2EG00c&@NSxI6H`l+`Mz#ApHad$OfN>dwH z(Paswc!7ICC#Qx4{1a2_kK_W`jg&L-N$Zgf*g^{3M)~?>%I;XIfm8=)Yp_~s9odDj zS3kn$lwJ1;I{Wp*<=d;aowunI@vm9QD$4v&{2g<`@?Yg3-K_^`878Ud&nd%N+Pia;M=hN3F z?@|-A;3_Bk&2~4BOrhc?YOmR3H!U=hgy=Q4K16wE>%D_A;m4r^Im8peZJySFs6qK@ zw=C2)-}j2I2|hH;vra7-2HyYSeKu@xy3Mm56`aG{KG?u@?3XbdbeF99iCDkUQQ7^3 z_;y>MFJ&~QvBDgV+MgjtD#~83@|_qE-@+$aLyzAUj*29OfW9nX6}eW%swxx9Tm)`7 znc@!01dy>Uvjt;N!tam#qFpu`j#Af0#dWf$rJ+{ErtWb!qFkb}N+wlTX|Jhw9Fyz2 zEDP7MAQKcX*BP_Aw#RWI0_LKVwmp=26Ws!q?lCHl#dJjhH-RYHK#mdw*Wp%BP_xyf zm+yg)LY@MXYAUo3rkK#`bnV7(4dU+E!oOIa%*uYk_6p;)Dp}4TB|niRXQ>izn%L2m zVv0!49@vxS-j!qtafK%nZi}-<^$joh_rV?#-ANY#CePtV;#~Ez(>tSir*8luL@&o1 zma>};uIx^Pux>Dp*9OKQlFEtkMpLhSB89;k${8JtSDC9^Z?sEDiZTd;Tk7m3m42>) ze0-tsk=Y|R_&0#g5FF^iYkW;CYIC6GL>TSMm+!y*^5wffjCqo`^$yz43Y^69S)IK& z_05%fvch4+mxAWJ22iTC(~~=>V6?2GaZQvhnjCZRjHM6Mp7*xew3?N2jumQjpjgQ+ z>}o<{T`8-QMQ9=0X8Fy z)VBn)b>WAws(K#Nef(fxYbu72&WeteU`nQOl*%Ox^{dhMP3l{|Sw&!fmW5ToWaznERy^Uf1KUS#jJT-+C;#TG1UXKn8>e8<%mO_VMs z#jnM2Fo=gMUo?Oqq{?lM<556gQS9nMY>HNsTMQrzMS7h?rlM|Xj6&jOR>u|+znLy1 zw&VJ$tVcU*%<{flW^y6S@)ugLo?9dv4ac`xw&s=%&_xRa zP}`H&$eSTlZKNfpwVP6epBwc?m=8GkO@BLv4i2M~hWC~Fs+j3%s>7?o&SBn7YG_7f zh!@#1UqDhPDVvMeo3hGR3S2SKwP@q*OqN@A3u;u{$rp7egFtjK7~EXkPOHg$qFbjZ z>9?BPvNG>mI!K2~MAb}`mWeveCq?op^(Am7nAWtnF1nda4p+=4n7&Z62Q}BbycfHR zPvrfM-w|^#)o{5fRm`V?Et7}t7`=w?^Yf0`tWm9MKrF6tP1_SYLh_Tn`7_u}XIQRe zQtpJFw#Lp$Uv*0y?Vf`pYh*ivi=XR4xlX4YQ)%r|=mR^$w&?wB8efWv#)(#CBNmSP zXufSWLF0=y-%mo3gA9l_P@c6)GGtzl0vKLj10TOlyrNAhIImRTaQLGheN9nFGZ5YIO!rOWhMYV9%j{WH3PdzZo#!H9rv^?{kvPc=KM(;SADzAPdTd$8YlhXQyG2En$Pgw6);~1eau&T3h z@6!#(OZ%~L?Q?$yX(prN=))#WJIht`A^ooG%2R=<`18r|OwuwbQ`7$hT+YR44(8Fv)c9ybb z7r*i{DM}-+i;B1fl=1ZYFOr+vE&x#K&ZrRVxgyvQ?Dv${Kab@j=Eu0f^VB-m#kM_8 zII)?FgIe5|1&y8L8(d_ZXK`nFVLU@OP8OGD?k;Vilz*MT&8Bbas9c7rq!@)T@bqLE ztP5QZvT@GWP$r_Wm+2SGvE*2@d=`@XK;oH8X@4--mdxH&2exfsSNG%SyXlb1po4|m z659d)!tiMe27#tCw9E*GYJ0x^O(9jo^MJy40Nwv+4dxvHXcKMglRj$6Dd1zb%L(f#<8dMoT-%?wM!PIRCxl%a}i-GPqmcs2f zJMA!yD^5?;I9sErTZ24a+xF77`_it{lyf;>y0e6JJ?i#`P|n=a9;9doszrqv_PdPK z;uG{KbV1U$OIH@K)w+6gV&{l}9Nw<0A3*rIHM? zTvNq{Xr^LdADef2 zCklRr)=*9%^cqtY+gtPR((uMn(E}yMs10Sht6Er8cJ)!)kywJ%fW4x4?LG~D$g- zKAB_VY8=_)DMHs}_2Dqhuo3hUoywX;Dr4PXxw=ix>5Z-{ZbA>`CJ-YlC_}Jb3tyoc zoItaf@T(kg(CgMi9Ht>wT(7by-Nev+NsP^a_YN|=s0%0I#P`?ynsV4t6_ev5xbM(h z6U1!^=VJh#*?qG^-_Zf?(XG#m^h)WR2z4SV$B{j-dH6H2b$T?y zm;Sz}n@{THP|=COBM$sef7>vW8=cRT^I7{mr70o@oEjxfa^314fsTk9TyuP1hI8-Z zoi#uMp`a6x4L&$tQnMRj$BF_rTa?cHoEh>7CZKmeZo8HM=`9;BRl2iX*Jt*@qeajI zC+pdTWsH7Cf^On?p9R+_9yseAJ=mnKC>=L;W@BSm`P7KYC^kSBw1}~XkZdgt*lo-- zbK$iUsmG9E+u9qQgaqRkjN~p%Symk&!?Z;{x};bv1H3hd-siRiQ|ymwm8m7C6k0B9 zm}2WtGr}pyT(6z0By*x@Oj%|)Ic(-QQOV^*qPM>~ORvk#b;%BqT=oJxrIxt}qz#%^ z?l35EIZQ65_O%nrE*q2yacmz(PMvqw&^l!two&~hE-iiw|8 z?D4WwgR>o=qr5}820_N_N25uvxr*MUfotM5E2_ttA!uYX#;FZX)D~$X@2JMeth`PA zaX88RvpyYkN1gVv9Us6>G(w^!3WAFz*Te;pf{WkZ()gJT?!uO?G@=?Osd6H-FuIiyk0hg-z9Lvbl7lG7n7rZ%L26Nu zihr{+r50n}+X>kMTUehO29a*)ZI3iffU&FM@iUGL>RF#sJW`n-ECKeK4yQ`o=^-C; z@=??YXY`7e<(;AkWw}XZ9g3(N66@WEG^=gNkH8oOpL?-9tb}LL02A*{Yb}t zISl%tkbf}rx0U&X{?{PsI&@G{LQr9VgU^?y*=t=ed$6FFI^{eL*Jv=bltk8ZqRxhE zJHE7N{)dgd8pkz;<4!Yy z0JKnZ_HK*gw(A97pIBw1A04dsMYt}FOYL!>9px(D1NtKq{qReBTbO6U=mPJ9r$q}P zIRHfa#JUZU7;W8h)BO4)hb2)zo5q3*(H2JXs`)(bt$TL;SadAp@7rTfT}7B_!P+d1 zRhq|@UN-1QXKDPrZC*g*%g1!JY&lEKKlF9!Z#`wxn@u*~eEGhwAywNi?4e>=TsqE4 zXpi3HrdEDm)&^5wa|k?7$T9pvDf?rQ!$m$g199}_`|SeBVPdq`w%vr&3>2+~k>TZ( zoM?9?x-yZ(IvTLrC)~8EKWlPBZD|ck`dQgnJFsy=oX}Rtc8+$tMiIJ3{zyNWyo=gB z0_&uqWQktLqzrDbF&x_8*@8;*055#?l$E%wW!0fu2!bfk>kzUIa66)`lI%r{@dYc2 zQw=iCRe@VI0Gls4ms0c80h=SgC~HC zd8At$5%&3}S~$;||)+dM*HmJ=JMZz&eb+%H~mpg40}NUE~nAAfW3N-#$Q; zyM$Iz!Fd*Z#Kuv1aS2PB3uvi&w|N?i9#eUtz4$&%5UbRVlO=YdGduy;N+L(W@|%nc z^!Uu!5xyE4e0rL&9b;<`((*<9s2m9cfxF!sOT#~I81RiBv)aVV{@5;#hXZ)iRx)QOk#36 z%YyZ$yp`YKG}yvYc~&39J}J`qS_CCE7~svrkCQx*RELqsN`R}0L^Kk(whnzIv8z4Z z8`1R|vQ9wX(NrkEWYtx^mTdnSx@q$-RqUbacTu>M&i^W3*F1z>y0Kc5FWd)Ng|;z5 zm$~EwnEDK7lo?t{qUa*4{`Gh5qgk*{={oA0tV&Xey;WXTSmTpWSEi$Z@{j&eDR8}jiu@lQ^QNE+akYj<1NO|RelHA53qZ)o&5+I z95#+G%Fha_F7dul7BgjW5|Ke$C(Ua32dvb1Yl|6N+xoECv3Toi+V?89Uo^CteP+my zw!8chR zQ;0zmv!A%3Fp_Z#OS7%EE!VvHP^RV)&;~DWhlPAy8ai2FK;{2+!oa9W*t>zoPEeFy$-Q=M?2eKb>uOY;`PU+eh|6D5hgGs7p^~=pG2{5Gk|LA3@jFBlccvAeL(Fg|)K1n#@Vpyg-^eX#f+ZJN18R-$QxZ z7Fo;F3IJFvn7*jO_4$6 z#@X3*r?4^r+O(qN%>d7#JpKiX#5oSiJXnTPq{nZ8agq?Kb-IrcNp*oev#U`POO~9$ zgSZYU>i~~RW0O)`iBrZGe7Vlon-os%DO|QJGF|1D*gc?gkyW{?>42$e6Dy8g2S|Ww zaVc^=OKw*|ng)!6m&q@vOjrpvtaTIPBmxJ172Jwk3b+!yq$>ezgA}e340YDX6efR9 zVoZ{R03pEbnFo5BRYQAGx(eV_dm^c(YUa`(YcT!fvt)?gh{L?Imo;PUM&mY15ad-I zJ#!{D%^H{eb1TB_`4mmo3vHpH9+eUptnjkTqXZ2mxR;S9fTRlrTg^3^(ur(F5WABU z4?1W)v3YQ0(_rRi!E-kW&fY%o3sF6{sAI}XU4Y$OT2=EVkp2i0Lz|w}We&A@^({^c z3h0hNkm0>Y@6lpg1@)YJv?HL^h34t4dr4H<%=;r9g-@a}TE9kZpACf~*V>DDmNc95 zVq-UXZD$V&-;H)?06wjYo5*c*)iseYr3uA>$Xk8HmK56vi;1{$=_8ThyyAGj-c+gz z4C=S~Q9&)G`HCVKpQ7a$+kP=Ho(b7B6E}&t;NZBEO9iMICoFK^g`zL5YjvLoV&pjS zVeKWox0`leWM3DYYXWnIZZ_cT2wti*cPwq@22fe$Rz4toX4drO0Sn6ns+SSF$r?OY z!mWm`v4`VgRVy_4R4@!>uwETOo+}=)v)WbOFGaULz`DrB*5o)E3p|cA3u@x2iw;09 z`8UtYk>JE1@1g0|l8LT+5L`g&^7l?x>+JyiXG-k7x(%~&px0WOnh)B&>5UZQN{&K> zLne;b(Gm2q81+2#!<3zjJrAs%SHEzP)-$*NIU(v7{_hM9pDL!GA!_Dw>}nj%la)lqpY zR9n%yThCA8n;1I+dz~DfYAfCIRXconuG-;!6q7z{t~#*O{%|PN=kr7~Oj)IJgHx~0 zBQ71utlGo#!Z}S1tS#L6;JcpRSeet2=7qrb`23-_a0q$roO9nZ_Ek@LF_CyAWJ$n0 zx_Y7Oka&L+NwQ(4`oMe~g8vId1z%+W{U+7S2t2)Oh{6|;N)?ohFA~2@*&R!5xmV|4 z#cWN}nq)=*svxtmnL5mt{KTE+cdSVB5KFQ!SA)8M(E<=z3d(!~-CL46-PD-_inB~e z4#5_ZmFyJ?J^vX7YtlSd{L?HhP_l?9d@R|G5WZH*=ukGXMYc$GDJ6=xJ9C6W6lt}a zYmw?ZFG(#=z@^-u$JZYA;)1dKb5h+N4^buVp-$DDFRoxyh_RzG)~Vp@Z5AJyvoODS z_IM(^yhXL?an&xh>S$!@sXGWg=({1gr^teRJ1 z4*zYPZPvIHD`x|tMb4_B$HFBJiVL$mOCm^W507|r;WpO1Foxgbw)`fGv19nGktg`= zWAQ8O)+4cBr08>)-9U)w+b>_fTk!uM+lK|SGE=*uGiXh$0jWz03fR{WSZUkdLc_|3 zyzP*W-L)Bnj|`iZgDkSrI9=KMM}zp80eqgOr&)djl{fsk5lU@(VDU0vwQmSJJ2X~7 z3h9_M+S|nEAZ2{L&S7@K2-Wy<876JIK#hUJUs!fi-S&0=w!ox`ylt*rnc+v<(F(nc zA>Ddy*OBnmWpMQP=)&F17+df8zu`^yLpm0|#C~Rsv5PEY#ar2!dp3wOw>4w@fd{Z9 z*5Ipf7pXgegu#c8pMsarVuBTSqVtF7Q?x0MW?*l6m|yOD2EYR?2af~DRk7(V3bq3R z%N+-hchEs_KuB=C2Wdev4~j#lkUem3XrHn zZy5l@wtY+Ah0rmmt+@IlOV{AFrjD9PeVM^wn#Fit za?&?Cg^ub67bx(}d8R_N@5~b%tuv3Lfp5#x5&pI zOP9lk*cyYkS{}cXz?E-$)B5!JjyG*j9>>%X&)o^&$+rb+f9!lupe{!bv2~<_r{igc z81gNXIy*Dxg|6AR`ms69H%sathxVP4ER;NxHc2(O&k0)JAn9Nf`tC@>9zWk2=^zC9 zzDS*73%)5*>ma%Bh}6lD^zD%PD}j@49HesYPr7T6gyPg&2C1s_C)F=Vos=ilEJ#6h z!kvOtfa}ED1W7oaWse{U{IhNlB$4n;y8}t^pK5EMkKFPLIfN|%yTS{K{jlg2l&B6r z5Pab$_c6GB3_^2-`strGNeYhO3i>2aGG~R1AXi0%nNP3s7#yL1DUP}oKNU<*e=O~! z!)@6P3HHSOi@Hg=vIcM`*%%+4`qpK|1{nG88V?=Vqkc%Zwvi_| znnY_I@doojNcX(XH+Vz2CPYAWm8dKRtQ`dl$PUw@K_=D$D=miwzik*qf&UrV^V@b$ ziQ}w&atRx6A31?{!Ce&owM3_?aZ#rW4y(BUWCY6qFP8%soR`9{A|9+huUFDmcb!pK zAGweg;L>T6R+f(tWOf^6grBcNjz2*Ne8r0&e|Uu-j-j>`34h_|n15WchqfLrVBYeP zn_myI2uAQS)yDvfI(c_gHC(eKoXCR#TIRyzdvth!KA)bLnC(Z@NwF}Zl-+H4aVVF` zLr1I2d`QT(5Go;VQbUqqcSd0%Suj`Mln`-7Lo*A?e8o+daDuLM=H9(ZnVm}MM80!y zHq&PaqV_=08k?w+p$~1LNjE({lZOG7 z=P0=?(iAIbj#v(wr?}4%Al(lgIqn?tnxUJ|byzZVP1ZMRytgM=oJ3Grc$?pIxGcd+ zy;H5w6!nF~jHhXfHf(N{Gh_o0mziBs5K{nH9OqHoX^UV25$HJ3j zteO;q=FaW2ZnDvME2|UO=FVI?8lEI`WsYRR@wp58`(p~#SUiT#0+o<$E)rqx76*EE z?AF8!89BWMAt;jv!Zpp6MFK&MBt%P(YnZGL5D9u$*g{g24B(oBUw0j7@@I3Xvk6t1 zgPuz0`teBD+Geax`?ji0G0VUfSYZL~&}L@-ra(8sa+4u8u}l3TxaQxb)I0RDF~@5$ zgbTQ3;E==;mf)I2q3F8;*Sp$jIsUoVao+D*BhE9hn!ebyJ3q=HM84ARjoFej$dpUH*!ITONyQ6~?+-A-E8;J`U;D!{+yiyJ}jHvLl5$QpdG`}Cj z!L-kZp07J1N2w-^4}j#q-Z3JoH=8iZf!OPI&||jiHB79Cza$7lOXb@grGnL zO5aK6!{}%;mH%a@(m=!Ep)V@aA?r?D=5(EDA@q@kxkVaw#{~`IeF$5ZQ~k^;0ux>$ zFMlefogY9_*d_tc-&&3?snmR+zT(PC|7;2?*94)a$f71`4tWKsR4$2CFE)Yu&PI|c zoVv82H7+KNb(``D*6wix0Go6jxf1>F>gi2XFERMVq=_Ui-v*Iy2cGb&+k)FX0~~KM z&Y&h!HY#ZBdV~?c*>i)*;)9Hvg8gli@KYaL z=hdyqLR3P8Gof%kkAKOi;pl6d@Eb+F$fO&dg8)*&2wj8-2_$e+uR1zgek_LJO1tyP z@ffs*s6T(!YfQP_Q{c{z#e~fHy3wbpT+%TFjyZJ6Gja$WVCEz-`V^3(>4iRwa}lwqpta++x3G{1R)K5jYJX z#DD=V3LrILq|pYjX{;(Vz-hv2paPvTGE_mIY)WIo3zdXSQdeb9Z7}>>-KJ+;@E2iO zER$KXd}$n-CJFFE$rz+fFM&-RtoZ6jx*hc~xMlR+jK!Y~Zh$**W;LzthP5kTTfI_K zGjyTUIINNqGZnyi4sMb=mbGnr(7+KL0KyQ3dZ^fDn`00ckU8Yg-UF|#sCLS70gVAg zf-Urt+7zr;!g*(O|G7vi_J);Fk)Q+VD&HyDMIRn~s%T3U{I*SwxPB)ECXJat7IH(gu_#04)8&FGML7x=m;58PG%1csX2R#l51eSC{!7)jolcK>;_s|?B z$_xJTEoVhv6Nz_`y-(6Kp%Hu~EnFolMvZjt;5Ln|(QBKP$jYtNH7lSe($;%L9Zi-u zLWNAeZX#Ta{O?+m$_u(jsx&p)Fn@fprdxFT|p*_h8B;Twuj_pDC+8GY5vKl(7n3Xqb!iY9!!rSH(3W7;oFDuru_62>26# z&KJPa`f=zKi`9D&i9bpdl56m{=A|T9Qa(YNiE$i%81u|<(ZLEwWyZ%lRuoAbGjvMb zhe@40UY9wMCC0^6lFOEE<|(MH8Ko30E$h-M9x0eygbC`HAvD%JQ1g4lMlR4 za&VvI79?vDa9kvtGjK3s1sr7$V-Qg%3-Nu<#Xig%8=4sPKeOr*LshEkE$q=Y9%T|m zyb5ETW>c66%5kAz@tdSz*hLj?@m+4Yji)v7Z4~l|+ions3SStiRq~#KQ8$3k&Dxt( zGi<}T*AK(jL+?WMT(yL`jHxmLvYD6RCgo>owWiudl8>sMn19pC5yo7+@V>rj(v}vG zJ#>eu3Tn89pqJh9NL;Ehy_VWoL(aq8Ragt@-r09)J+(c>1$#W}?Xgj$TeFu$`ieBG zRsI00Kvcg9^|{otRv_O*xXo4Oibdq^X)I%Dl;`U=m|m0k8^)+I0wPr1WrX<@HLj(i zbrGk+Mh?29lNV@nA=NL0zN9)qBpK$vM>2gf2i0(&i)dGgW%AbLoqsjK_WS{Z-GL_r zlbYeHFkEO6kP8JrybbSIooi;UM3?#ivBtkxk_&;aSh7{fMN>qTE7+q|M&Gz-8YB~c zcMEh2?PpP%tm#Tpw#`rD;*%fcg^=Oc&W{xZ2WLebT~c$CYpBsl*6TqsYdZp^0-dcO z!lfH=R^$4?#9t>+4i+raWfFEdJ zBfxCwz&#CYg)7k-NiDByUSQHArA^p~l?TTsyN!uupHDaqihVNSaZ&Cw2`3U8K8ui>`o^#w!Cl~=c;RKyFYiz zS`-_nj9RKQrao9P8XgUXq-_8lcM^@ z3__5_c&IRpO5et4NG$ZFWdczAWmC{l-#A&Ztfcdbr&7$^g~N#_ZpMf0faBHn(WS-@ zFMhn>N9sWeL#ciYa&GuH3Ywa>QwN>U$*s@Ra0b{U3U03froHFHEHF*a_B6q?6=rFJ z?JiHWS@lF}6T1QRA%C4F>%#y7uTue~HzLIcW5Do3(}X)JtmkDd01ks#r7H-%S?Y{9 zGpK(}*KOncm-h*J&k$l6HvO#}K1=-tp#Y3iyTVM1Ish8lV1xXjz;lvmIm?jmA+-Ou z5Q#1r-^bVTw{7L%UVoza7OrZ2%rOBCEVG!rKrc3ssv&f03jM;kyo}fjBpLZTt_3b2 zsJq&%ED$kFYdQk4DmS_fGjLPA!&aP+h_f43aN~#nal<#kW!m>p+LKz2!#KI&WX0!} zX&z$#B+~qZvW3WEi#A0V;gm0u_I$l-RyA^p&_TEgIb(9p*#HC4b&Io%@D-+EaZ~?M z?T?FJ#<66sCZ;RHT}@gi^xRp1es6e^5UW{^{EHG2b2S2sI)|2+q`<-$zn(l`5{6)` zk{qwxBv1oa5*npr5o1&3pm`(gpA0+T7AI6tNvkG|DMLudo(X<~1)E$n@X`FliiovN zpBnUZuIbfa=TX0EE5{V^j;*{XB_?Kf38J&etz%$ZFgles>1TO__5ux4lZ)!MJ==iM z#N=ItMDouo6pP72!4<#UT&_c$z#W6{VV=@Izmxvur zl&M;y;Ox9$_>mcIU-SyT3y@3nnuv_;g}6GQR}*61RLuT}ocnjW57OYR#bmnDET@|q>PM=86u%q4roh=HHA4S#GPyn zl{0^s?J*m%CV18Q_{;aR){|n>N=>TC0dl$Ao(K-P3P3KmnvfaAB{$C2;a8lL{YP`%+p1ds$E#QO_xESf<4v|HUzYi@y5}T-vb9(1kV9R* z60gc`a0`v!&u*(#1CUovNVdWE;@4k3y$Dt;!Gqy3J?Eb4XSkeU$g3-L53zjreXZoFv4-dP70oJ#r*cI^~dJ&(uWO) z9kX>*SOJnmlMHeOVOD^M5Qbc2glX;EMi#okW`9LuNUMMQM!pJoHbHOwg}1Nq^cJ` zlHYL4njM#1g%7TXWDvX$A0Wmim;kukj2gO;RF6Mb%xy1xt;wQWR!>L6_8-X3&ZTW` z+n@pXVfY6xW#uK;eQk?p8%lEb0P71TCN{Z?%W7VtQ zefQn}{p!2_=hgTB?<<-B{!$X_B@*kU=52j-Dyrj6zR@zz%-^```1gNnsXAhO5{C&= zi<}X3Nvn4ps$5#WWGZdb60cJI*vo6C)_(QV?p>#(kKVMyo>M`k$tr<3Qpt}HRs}d@ zqouN1Xeg(qQvdy1^BoQqMs!-tMP=<_o960GrPf=AZCzYfY6s{r$MwQiYF>v;qr*Nk z72Q2AxoR>mKdrm$2iiI!sgA9nt0(#yGIF|wZmA!l-%6y>^{%+Z=bDIPDi;l8x0=8+T;*QEk zt;`C0y;<`ae&yRf)fz4NtmYQXV%d+dE*x~BGh!>w7>*Z=L(ojuX#?mn2u_FW+jjS& z11Vn1jK;~aS00Bij>8cRUKj%S!85kpyn>%{^zjFGRCM59w^$cNg10@ai&U&ILc78i z`={TwLUDzKfBbvjlscZo-1wa1RNQ_*|xyN|@r6uP~-h0KzU zt%t9$9eLf1Ty=dA@nCXI)cqh-BP}SZF<-L%c|HY}y%Zl`iVtqnyR%8=CD@;$HNPFU>Bamh+wt4+=!O1-$o8^-JlSus zPfL`V%`6j&+K1P$W>isU1MDvbhg>G#B5Rq;xVf6DxYQf~XjB8U_@HAa4v@9h5Y0U} zAsJw|fyrQL zFKxxZd*q6GXo234S+&x|(!(6tkmk?wL%1n7kYZ}C25VGutObiWsqqZlK*2J9(w>CT zLzIX|NtVd{ku(u6Z`13wfZ37f*`u1JD`vMRnKlPm?Z!h$%Z|&8A5N6-Y1f00`^tEa<^}k#;S-vRdte zhNtfH(^GeVwiWG2s@aC6i=u1-y|Zn1QKOIB zQX}tiU*@Gp+^;!1$??kOI@gcFig$6;&^NGt?Z;(D-c2bbg)(<%#7jE|NT?C8<8j=A zOVlXc#Ellc`g~hLrDy@H)`kU7j?|6i6qK~0Hq;ke>}pq5oC|%=jc{OyWaL?WT|#cNxI@&Ft&$Rl9|VX&CN6tF{^xht zfjW%iL>N%0TXg4uxg7o(L|sTjm$_~Xq4_ZiLrnfFrC+dqC44*})9MK5$GaU@kdV+C zl;UU%ZV~PLf;i8<5mP3>P5SctHWNa$83$_WJ5DO#RG>ei1(xPfsO&G=!#z~QnHxZ^ zZSht)FhF~!zD{|YZ_-$sE)PUqCe*Zglqn^S%LV^)#&jnq9l1_EH_<#5y6PxXju!1V zms32f%qFqc6zKTG86n|3z=lM}S}xiL9qM6mFw|O8phK#}KfxjH=TCH^B$BuE(=9ny)C{QZzqb7%P5 zCqYEr1N1H3rAl|lSoh$nUQ?{LsUnT z?CEZD();iM9H74->RWQbxeT$al#la%f+Y5i_2~Rh&ur8{~mf_NZS|NUXay0ez-)!@H4Am z((GrZ2cP;$Xw|qCdW#tAQEUtvt3p^yQV#d`OVTg_u``N@2$p>F@C@wn>?$X7;@jWq zEzM~#mnFAE`b5F%`y@H+`Jzb?#4Jj&c`S~j?V~gD>%YGEaZfaMghJ|?_sS?-!%YQz zf3I)DqU>jK@fGe^QI$BoO1cswz8;qm*v|zA@e#{f-o;!Xli^lki{^chT1sJ!uajM- zaD)3p-?!R##S&u@fFGQ5;Jk~B-#u7)UJBmSRdf4@6P+Cjf=l?VGer7Ybn;8+tx%Pk zqg4o7>49;v&Wj%r7JX$5eTyU{v7tnUq=&bVwqW&Lk*{il2*;&%v6I?jpTAWhQOALz zKx5QyC>(h}aXZMlA)gRSNjSSiYrBtZ_> z>$L4;=m$B$R<#k{GlpHBMw{8jJf|@8(ma|w9H^bR23D>Q2hx>uJ zG4bSfi|!YzqwZoU|3>NJ%Yv=)J1+L%9W4x?1~r|6m$uW+Bqp3nOH?#mE-WTHt207L#khWXC@&+`k^kp1Xbd zLcK?MUU0b-!grQod5g`aEjG*pIXm!CMki~_s>*LLH|{W(RR@=PJEjx?4at?A9PZ<( zxOZIWy%+EKl$VKaaCeRLwB?1%TiMxeE#8P7MU~ebj}8u!1~>j$pv}*)83DeEs2um9Urg;YvU5lyfn3OGA3bqJO;G-QwEP`UB^617YGfFY&Qb#^S>}8Jx zd-**y{mk+@+_lU%S-c3u5LAMRA~oh$M#uo&JMY21;jutIBGNB~uLsjBS714<#WZn@ zG-mW=nK&`}^;osbxG2SsZ~^UiEq;B=qOZd51~*`#|7iY*W9pf8%Tiy(0RajVEvJ+; zSQ788SM{PW;Tkr$huidFEZep-f(F&-;A&?w2ZA)mT+E3+J9alRxnQ>Q>}Z7pr{_ti zEn6FtN^M3uwo6(1L#Ij#Fg;9(ZZs`lz?}i|KIQEOvuf27_U#y4KBY?fr>vk*WwL=f zl!-j4jk!TQ z&Il}o%p$N>$FLsZZ*o#uO9C0s1e{;Pb-CdX@a^KCv<&ELb{pO$b~z}7j^x-aeZJfT z#-+aX5t!B(tJ{MIA6i|NAIAxQ?2dn$sCz>M?h&4ntYNM<0OdO{dg~E?a)hCfD{wfC zg<6srtO=cfS3p4Z;YjQa(;)?efBA0l<-0!e*Phe}Awk&pG~}|!$aaxW_Oos|g(I6m z3fc27)Qs^8i{s_Ig#iUs6aI@sfF4D3x_5L8U9JVlO+fsC@ROMSJ(}_4&Ie@^|F1PhOXr> zlTy?uRQ#tE;93+mYXh5(gd+A(u_A-YfBK-UM^f{5%Y&^Fj5J2T(t0Q**Xpq*G8j)) z03HuL!085t@S}zCOZRo_RD;hf+Mq>7!;A;UwV04xr|CtSNkqr^NSJ+-6j*$aFcZBO zAJv~8FS2F6*z$SzDr_BeW2wV#Iiz7@xnO4{D->*p1#B-M3?t{4YzC>c)TskwI@MTL zrzS0jxkB0N4#1gxpt;cEZ7r`>6}b&d{2^GT;mw{1ow-0At^-vOLw(yyWGsu#4I%&f z;No>}V__ds#2`d8BvjPW_R5kK&@e1OKjfP#DA-L{#B~l~c^kHJ!;gZhw>^yp3sF$O zLkmgx3t<$YDPd15#tKtid7cFq6bz^vnh|Kt$%qC{IpeKyqPuhq@H=IG4~2U-Npvin zzN4C4i~x1QCl&gYnB^#2V~G0Br3h`OFvR{nm3Wdbc9Gid}em;aC)>(1&R)(}7%?GgqAakrHG6jryL zn}3=Q!8qVMh#9(?!f`>N-Mwx91UF15aR?h&togE~+0mwCci434R=-^ha)sYbc@sj_ z9uz+ABU=D6<)EmHMmkf2LTuI%5W$-W2F>=R_J&h$zMs4B-IiNI7+C8$QU|AM-)aH+ zoBr(#^d5iKK@~N)0I9*6J+9+h0^hLO;HkJ4ZhULdLt2A&LiI(7$ljIi+_~CNOExj( zqn7TDzhesQ)CZ5>X$UT}!m@|M#a$JKhI3L5s{lGd_&Ut;jEh1j!tW_zv=t~xU8Z04 z6ejC%N4~$F^n!c=?O`jfPH_}2`M2Q1Hp%}T^ZiY!be~I8NOtYvZ|;fK z@AcrMTRJux0%YJa*kmynAQ`4;9dc|M^bKBO zi~XEjSg3CB;9&UgAO>)+9Ni}AlV=cd@;?^80^NpChg&&AucGIw{uwdKhMZ3lw zM4Kd{PP8cyM`{#;h@|u7UMAu)ac9YEux$iXK{AN@uM@zZSqYZb7!Xed?`}7SJfWRk z8JF~_G4cRR?B;^w2gV)mJm4PKadw9TgCh*>80CKGz}tWqmnm zGs_F7gLZz-N{_5Zbq@l;WHK7Ht{0#%)%Z7lCo)X&tG@D& zFW>#MR}8rMj$m2jE4``vkpMj?lKVy^?^4BS^d4eL zK@yivDbOF7*riEe@&*$@;^Et|o7jD3*&jkT*(e8NsMKmul1hoYF*Bl9sA04q3=UjNO};)V&jHoay87ZIdQoqo^~@KFwUn!~>3PZLmrwDJzp5dvG1# zTc`8jXV`(dgLKt7batlJkiaTUeo`z{8NHmX>yA9j$r4+}<1?r|4jD!>eNKi0yVL2R z(9i_U6ux1#(eQpuZWQ;EbB-rR5p=+rWXG%deETpmy8xsdFoUTYV_g>?v8dKt{e29kG{8lGO**>H_6=^BVUMKRaF+8kuu6EW!; zxb>o~rD%Kmz^V2+-(=mLsPfTja0#br-aO-M4%`_)+9~9bT7LI>1|O_dPItd`Va|-V zT;SM-5wE+hEsP->Wz-g5)v874=+e}Q{W(Zf2k#n5Y&O5HdwSE4Cv2Ul_X4+d&>G6r ztH-x+GP_@+w>_@s0fo2`EPcoCnk%44z|k62-H2Y5-Bq_mzPY)j9xE1Kn!kN4lA9z8 z)AVtncBSn{TalAz$->In%_NQ!>4aZ}U-8r+VZ&5FB=&h1+L4o7hT7@XXINbh1#dMg zP}y6S-v=eOx@|Rb{NRwRn?Mt0LK#~aD0m0|OMZ6vse%0A3$?eQaoC`p1VEmOx~yGx zgFHYqUl}7JW?rqm4c|UQHyv-!I$CEgb5fzZp5&OMfM4hNws<_qxNB#g^fpX16M#Kb z(7mT@7$jm`i#@PAsY*d_+5e}>q0ud0nlIG}X#+9HZe>33MX#sMA4T0e)O+IzS9XtO zl+y((pU84}zKK3ZF&w0pa}297QnrQ zTUrDu3-8c}T}k00NM*NO6&*v-(+xj_6}ZNphVk;u&6dw$cGIT}zV3hgm%&Q*=lu2;jPH!CvfWfY`+ZdTS?VkrHbg1;yb-4#lwJwP>*AoXv!gQ%KKdK==x?+~e{(_4 zY7hQKe9}n_GNWgeCTLJ`)QcY*75VzVe@d$Rq-5t=ypzH9utWbxTN_Fc4wMoe>`N@Y z3yoVO$S=cal9BZ5yt=gnSXkU_P|Vt4KlSv{8MQri>YqI&PWGI1_w_z&N_^a{5l>TK z!GJF^=FG*!-P%bYeSv2|pNS62^P$E3)yGqy#V;^iD@;G+)d2@%Y%Bvd_bLT=D$A>3 z(Yw2w>>l)TwcI{klVvf^UgHl1A0>*!jh791={pFdk8Llt8blw9n&u6F#&3c9nQclF zp4PV}`$5%Hr=Sa!9=Q+7TrjV7ff9a?GKB9_|6g=Eg`8a(i>DC-HY6=>@6B6hpK6!p zt9v*lqecWCJyrSzmSdRkI=pYai99YhFIMX`iIUw?Q$yYV8ihsq19z+-Z=pP5qK8oi zF~PKvO6-89KS6SlHQQ`@0taPHOzwK;^m*P6xUX`GEY2sEc-~l;=9KDdPJ^3X{w2bV zLu_6@YTd<5aLk2-09A~I(R1Xa?x=Lg=n-PI&?E1>M*+F@m=UXmR+lo@mK!xm42%## z61hEkRm*t~%Tjv$%Q`e+yXr@3mwCQ5H@sWmu}7Co1NkE~$0Ym?AF^$r%|~pxI=zQi0ojX}%n|#j%=2MQhem zEUiEcjczPRToXcRJ&wykI*q;Sgu1iZTao)%5LZ_!)VJ3G0QV)?H_KAv?cSV zo@r|g2~F&&nPYe@ZO9JjXrba=;IwRTIvFR}zNj1R@beZPN?fjoRNEa0ZXl@NaM(xN zP5=)zu0&&vxy6d}?AvL9L;HiR*41NA3Fds(cH2v_!lfI7?@!RU%e5_Udyi;)yD{$V z?%^AiZqoE)ambm46*`|=%IM1YqnKqd%`x5qYqwewT@^w6Y{$Y!1HemauVfjKWX9aK4DXZa?D zywn__P0$T{=qxg=r*_CoVtmJ)dmUCB>P)qUpQ4J(*z|;w(nj(jVp8CZSV#OaLPInQ zSN@JYVmmYo*IvpEF6FLni~PQOm683J-tdg_gwRrvt-D}c#(f4{Y%T*sN>ZF+jvNlX zxIi?9c35|UbVD1WISiF=5J!qfs~^>-bYYF3ZJIL`*TvE8yO=dt*6v(=zN>F_6mD*A zEA54Y%i#vS4idy~A6T@hM4e%j$E-FJ1%E<)brh~)JWGj5X4{Z?vBVnL>?H>J>@o89 zVW|}R0bz8LUS3?9H8>$C+6eVY)Q#0X)5WlE)sZ8 zkn?rZJZxR7s?(iQ`xuv$2J*e~9$yCfv|*n%>|l$N%og6AMA(3lxL$ROZ3!F4j82?} z#rl%0T5g=4mnE0&;=SW16w-S>*?`K`EpWdhfw ziN4`VE@KX8%U686Ny%Z0!pxRud<70Tx3Q{W-2c04aSTAuKIBb9rnG4-=OQTXM^Iq2OfbDgr;(pS<$kB2K4H`>^Ox9%O6?idLInGLe zie}gxxFYx(H!S13h3-$$EzH`$1%F907FvRAvxbQS=oQi$aKRy*njW;fUKEi?!(M6G zX2psmqVYR&N)NKBg+ZJR4BROzfT$@l$f6`>1>uZShrxu1sj=~i6%lJ~2VclzR9Z(- zOio{1lcE!WN=V+fzjgVi{b=lg?LLf?gViWi$V==8g zDL|T%J36ssQhnotZU8i$eTr+4gtY_zt7phpF3&tV-GQF`rX!AYSaXEAjD9-s3WUQ@ zsz=ho(ua8#e85(SFxoqTyM*nPmx53pz3Oqz%0+O!!B%t-8WuuMrpj28OW^x-TdT`Z zY5F(6y(P;fKa2q8HLLC!zq9~Z%>}5LLrKnS(l}@!^A)w{(WrA}T#RwUlL$YgnVV6I zlA?Un&NdPjR836t#==#;nV=?RCuBPtO&bTg7Y=IRRZS>Cjg&XmpAZkPZ&~z})Yo|y zf1pFq;nFTV6?h#Hvqi3S-6kk6Yz^~ydE|rzf>&rfI7XymN#_g|yw~)#TOJz$GUtGNNTZ27oSkxCoAw4Fn zpzy+|KfhKB$r9%qt`ti9Y9j9;HFJuF#c0+|i0=Q76?s=|2Y=@e?ZdTm#Nnf2GljG% zf$eZv`B~aUhJZloI?vpMP~f$@D;Vnfxf9_ufL{koig);O zZN*LrS_i|kJ6v4u!1`0d^Co;e5FV+Cu96kIT!Ri4tw<0i32pO&;i4&7*ucy&-`A9Q z_+!2)W{HSf*x00^G|3<*WRAF4(blHK#wCmLES@DcO4{1Aypg6!IbW2lwEazqm#ZZD zI!lB^X&!wID%jqX__!$h82goo1nOWJZoR>pN9=LGJg&QUpEMup+mEXXzrvhOSWGZL zQdpgdCUCVGps2Q5@Nu8kS_q6xC@`aJ<6p~7Pz)ah{H@Oj7K_pp*&q)D{AoW-__;C0 z95Fk5pw9&UgyVY#ASK4Piv*H3AxJ{yPOu6_&YB_;aHV1ye5un8(7lBlb}td-c+!!< z4p}m?A+F^XDJ2%^mXD5Fnbs@3>64DiZ~!#O5zm~c8tkAqq~q{;;x5b_o=#*khnpYB z9h9)R2YU28BBLa-WeSlDR;n>0yIHo8TXZ%?*`k9I(cwuaW^sskfbGvQs?qV1M76nppU}r$&{@VgmIhzjQkbAXpn*gyk+Tap_$1Z&bXeK=WVVLj$WOi{VF4XS|*psh%gaS{Uq z!3X+{ljUYId>3(#$kcM_l??Sdlrn zgxrdjF(jmu4VnUT4&u??YG{Vq4Yf6ifZR$bFCYgKkXQKu;!%J2AmNBuJdSA8VHjL6 z8VEWWv1p)V3ZW>fPP|C$OC&E4dk93T_2po6EhoMrPZsBE%E6WEpr@ntsPTh%qPh2W z?Ywj(3x}JyllHHuUQ%=&-5ri*T2sKSoqA4feAVR4fYzy(5`qB)5ZM-$fGRele zBQylbLduf=#ZrwT5nx)Je%@qNvV!yF&Iea;Fw}4b9ur1L9jmGkraDXj9XOKP zk_sQ;v`Ml!xl3Y5M?x}1jfvi)Z1r-JRITd<&-MCx}MM*e*(B{|(w@aGOiF!EkY;xmF|+ z?_EutRTD1JnFwf@uU5HchKlGImwB}5QOr@%zOu{2*FQsN$n2X+WbQ%lun;>+JgQRa zQu+C1eLS=WDDxGx*2y{K=89?Z6-9iKap{p%GN%S31941I5(}kg!5-^i zq8N*oXb;r}e5?6=xpSXqEsT!-NJfjnii<7!MaekN&}yo-16$UKSfcH?Rjsl(-E13} z<9G!nRpo}{cEPCeMX-XFKVPu{Qr$t3|7p3&qTap6w>C~RI?4}pwGn9l%tS+*;qb4O z*VKLWtoKliQuIpQN|Y^9fedsYOu3yhN#>@EJxrktI5I0>b%Bw#ruETDNB_K`J|fEI z79^vO7cG7>Z?Qz`|N2W?V*in)Yra)5xaGFwPN>6)is~*z%M;Zn@$BsEw-zx#2vKe` zXCG=oB|B&W@op5W<3r}3Y5lY7rdE9so6Y?I16Z3o8^ zdONXj5^`@V{~V2929tq0e;i8?c4d%ZC^-%3ddkI%j&$jdk}J+h9U9kPd}d{y-f0!; zZO_0t4hyy?7DIBL=8Im)NeeiFXt}dvo-xRcT*`IF_d4UR&KMKvf19G0C}a;X4x_{z z#Pi^_0Y#nPaeyCQ7E2Dv@CQ?O(M#TWTKA@PV+pr}1^IuUz_e*rx7*X8o-q^kHM*WG zQ`LVsW&UdJ?Z{>uvhB|L+2-6yulu&L?r=HV^~i`l6-=`H;FC<5ZPm1A`nDx7B~aCQ|}dt!ltr zx?kqPHV(Ai(mHk2-bAi4uuUimH|P&TWc_Z#!&6|NC&w-)#4Ur8)e~|zAqT!U>qU)Y z-7a)W5k+EFk4vY7F6fOXu9kHHm(uW#2*0!tO3Rc`-68uC1V+Q22Rc@StP|y$ZR~)0 zGq@IlqnQ;_YRY)#kTm}3@lSPG&~uGX{#sI0I1I|iEYBWSSg~}4IRIHuKyC{zVj&r`#Y#u}i{D~EbFlX^X(=dmzbUleS zX;^3{7hASL?R!6i*W|v)RtU8e5j7WG+K}nS^ktT;*Q`=dc@7+p13kwbnd9cf8lD;2 zF~h+$(*|EWWo>~SDU5N6cB4t`$tS;gI)}Eg@J!T1KfdyObh5&~Ex|pBM;7T2SAR;9 z+|eEu31AQ8(Uh#KdF+8yX*~YK1$Z|u@?3Lb;(8x>Jwb;S&aYvp+8hLP=B9%kOO8dZ zY}szq^G>|J@nW?z{XM-W5{UZ=^E63uD8^>yIWXcv&}u*8TMZMk*3Gr@B7io!);xQi zA_EX%=S@QBs<+0KqT@}%3)RCo(R1Djao$uc;+bN2rZ|vxGx2B4fuOEC&@KXYz5sch z(u?Ullg*sTM&<@j|6^;4H#sXmyoL|i06Xgl)qOb^CM_ut*5L=_Vb|Uxl`r2VY$Nd z!32D85Xr(1l45W2&2>6T`3?{v#?{^Q1l%Jj_--UourKjhYkF!=&V!tUO`@jgvFsH| zXa4j2c9Q%yC`Wi67@G$MA{VItkZ<502KoN!HOg_R+gRz@Xp~kA=^5}O8E{+{@k}vi zo%43Jt{%U2s+A#&G`U%Zxk;8vG4hq3h7xb? zYcA5R4beT3r$`4J!C0Fg;)lf1%^bR!Q5e0+2XmEXM>gM{4@*oyv}Z=9L$f$O z7SsFK5(F0#GXVG}rrw+TnvK+JM{ZBvF|($e1b8wiAE4Cb2m%QNyTaXRvuAT(vyncn z$?M5EI>JvA#fM;n|B&2dU?9FL@|7{fWP}WRv$sbk1H3Cvb`D>Ndx5URhUKW50M={l>U)7;qnq-z(p z@oX{*n@mASPr6~SJgpaD7__&!JM_Ogc*)w2RXl5q!x|$I&y(v=r^_6i0N|E6bw$=# z<7o@jUYz4OWi(EifR>(mgChF4o`I)8ipCnxNaRlIAn@EWw%8rpPw*5dI2f`gcNYwV z{U>-YY;J6p;&ybef#;CXMeGR9gC{|?{s=xV*juQ`m1w=ls(=06!u89bjg#+l%GxM{ zuwYaZEGJ4o;zyh;3)NfHenZzzqlYyY-J&FM{~fg?{oMM|r!1YjGM;C&nKRm$tl)`1 z9PtOG)4%`Q!u5;S6(@OwoBNrquGqUVZk=)OZw8 zCuB+ZkgPT7qy)C#*SuR<@AYbH~RrieW-N0$R<1mZy1KNdGod=yif8P9go8x(# z@DQb3A}YJtF>4_(L%po6D?W z8nOni$-YvpY2L@+%KBU~G>a|%MJ`L0!F68U67TV|wt(SG^26Kkjv>}c4l_~iEI>4v zOWlTLP;x{ke8G~f!mLW760~bj<||bz12s0K#e|lxRBWm**AK?%bYkUHWBIrFyUCmT znWq`F|BU!E;m^d}EE5;kdOm%Ie0mT|!9?n#7j`Oonc+(O=-CA<8;?G5Ros;WJ;$8{ z$BoPro(pD`DB&R3^fjNJoL-GgTm0!c?$p%C7*(L23&tYYk;*|mLA@fGx-Qi7+)1gD z(F#O8AB;(|BUFldf_h~#b;+pbxsy{SqtuRiJ{XH+M=K)rB=zcK`f5_obtk1zMl37! zoG=#AF8N{A60FVNyh1tMqut!kY!%9W9`rnS5<(DU3$ z@Z9KJ;rU?J%H&u@L>fg;HyQo;B%(JSeP;S@syZTnEc~$;opC*@K0{VLh^sF7N8?)z z#)v+h-8fnJHu*79d_jLv)}XnLz8IkgixzFfJ$2lRm3-t;!a=2H86B9#W%qNX~DZvkaH zE$};9j}WnC!IYo)XRfF^a4_EB7H6mmN9vm7Irj88c0``?Tr@{68r1Tcq|t_F zh|?1*t}V_`5sucV!}ILv@$9Hv<@soid^8xzCu|hrS>p6Wi))KBREHxr8u46vdR#j) zUwKZNBPR_<^r>poJwu$HXmM?EjtX(C+IG*gr^mCSa+T+!Ir7n9B%iG7muHC66D+PR z&QKYS)-}xY?CJ6Bs9fdwXpVd|T&VbUzJkRyBgpZQSBs~^8jaPSky`A+&7OOo4fjsO zU!J4p$Wi@?{|jI5=*5Qs)DvffmXe?)7qn-qr>q#e@UG|8=fSIEag*nt+40XXq&{M) zp=X6zixSr^=ce{1EHd=mI%{qnkDojT&5nZxvvQ78Sm+sH)}q9<%eg7O$w~@6ug;oR z$Koc>KeOYX;VhgZl@WSYn6)Tz?Q(8vZ^8mX&#klO*75ksbI|NKXc%H2wP?^Y!>q-L zYnO9Vev_69dVZZXzmCaKo`+_~Lj#ffcqM|K6=p3?T)Ui|`kSse&~xjoxph2#@*Fff z4jP8oM=S{RtT1a~;@aihRNsW9fSy}t&8_3{ljoq>anL})-8q#1d8U}PSaI!gZc6Yd zg@2xJXU(@$aF*w#+40iB#hxFFw=jPG=#_s)6=+@r40gq#f3gg6$|c6GEzUtn_Ty>K z!_Se2$LBK7S2O3Up;=%q!wNl%%vnF}1(E@!GSk1(s!v+vB=cVq_hEH!JE8r)hs`b1059Wxg=u3gSl zUmj)1rDx!oGw|pv=9y~NOf@L|XEF-Y^T*7Ej%$}Q)tX0|j_Fx=<}5q`lXA7R(LdUhsx$4bhjMelEJaYyfoy9y;&6=qOrT;93Z+h;SxyW(ta;7@-DDyZy z1J9g+M`tn5RI_HPVPo2JsNwW{G6tVC7JO#f^T>ldJuAdXsSp-V$>^GejE; zvJEcIi62T;R`UI^Xaj(jIp>Ljqc*k_S;0!VLPReH(EiSfyak%~0=Yxa{*k5Y)=*kc z0b>A{pq}RD!8Ndblybm9sDXgvP_VKp7v?fyn&$UX-fifpl(%_Ni4D`^oaM@@;7nJ+ zTP$-U6r2i}4Da$JhUNGZ%QWE(d!JOdxOmK#2?v~S58lzi4!J0~-LVLkMZOB|Zq4l-x>3Ijk)~6MjBVIF29<|VSoE|H zP8TG7^xcRksSVL=x1gqf^@9MXBP|$I$e{(>#UlKAJ2s~aM~B88bCW*TQ?};e@Xl5Z z~H=)-+f3U>UEDjYwa#+Lo zi0ocI#ze4k1{(X!kW(9edOCVYNS=ij?*UQEpfbAyE=6&F{rbxfU%&qR-@__o;P;Bh zJY4YQYX{k9Cg!wIs0?w?Q7bCou zA_$KM`LWCskiaYcvSLBP<+9V~NTRJ05CPzIPau$?6>ru(xK}+is0c$bdwHCN7-M+M zlmEfQapEpYof+0H5L+h%En65kC$5jca(jOMBdAH+F-e`Lf_F=Fc+m&|s=~_WXwWQ` zD=e6Y{K^fE@_;muGFXy|W#et)=*3_1Wk235Ioc#TRr1^eakk%LKbDQ>M_P_%};qd5f-E~Kq}1yoe++V%j_-6@Q8H-bo~ba&1S0}M65 z(B0i2ARrym4N3@7f+!$JBOL-Ft)%{g?>X-|@4L=-*80Eo!P>Lfdq3B8-SynhW@=A7 zXywu{Tj%K)z<#ZQ7Bp*;##pxsQVq9`K&RUn2@Z{3BgET~t>$Kz#^11$RSnZN-Z^0r zq$S1dde>+WBZZ)wVVTP`faGAnWkj)+vGxmiQ-kR0 zy!WALOp5PR`&IgFygR{%kJ5f?Zg`zCTPyq_Nk+cOPna?4zCu+8DJ|frNw(Zf+Ds7S zs~SbjT^M8f7|>YE0d;{aWrssc>>)@4!G{E)_xsOaVLM}9=4&zh7uo`9Of^!G={={= z0OuGtv@8lDPZ~^b0#L>M?)Rbou^b|8y^p6q#i+<{rk(HVqae$T(R7Ao0xwiOOHPRV zAi%{}Xva|`sc(mLB=3<`-E35LRDM^@5;bQ1skYZnrsPzNn#8x|NaZYg2&wE&Og1TM zg3cJh;OL2cE7OFE&{RY9fxEG$Ky(?wD5I!iN+%DzE5cE^(^p)nWli8dqqMJ$2gonB zJqcU~&0>zmUP7yxj(ph?9XdYdi06t;RFMVHfvjr~y${hE(RgnMjHOC>blKv!{-x~4#(Wss2)X6!+EscnEh@sMIxfzXC#U*-~<~)S&91O;%5+}MfXmp z_d?Sro0Q9~90+?iN{-uNp`BFc;WDh0bEZy-uim7r;WCa|CKMa79P#16b%GYN^+zIA z3Jt2YZ67Lu>lB)~^Xf-byldAR0aa;RSyw<0g--0qu&?AiQMsTvs&dhhwS%4CSz8+# zTkkN+V5h;*%-(cT-^4<1I$7n>bTBlUJFHFSCGN+{beYvvbr*xz2Q-RQ?jhjo=!|bdaPP*Py6|P5o z{u+bvgO%b{h@Tie0E#DNR`Dry6sZ);AB6mgQwQ&5vN|YQ89@Bjbl1{ft8By_I=bjd zDUqRZC-H6b_;F?T7v}o`&3F>39TNby%0*sI%WpOiic?PLOff7~qc7}h*X19~OdHBY zZUS8Of}UYKJrsin%wQO8lJxHY-V`-hitp0hJn`;)Vfe@{-Y$^7qJc8WHAD+=vqLbg zViNludIk-dQTd9k@)dW%9YfxptzmR5P)kg7vTNv7M)#WV1dDy)$f47(NOb;G4#n6L z6^q?y_@HfC&2u}(2jo~7UoDzz#i*j!+Oi50STRs?UBb}@o{7~_q}a}yyAC6~jx}Y1 z6DBL4H)!`Mj0{OSu4=@k_CF7xTW><}ux^^Flax@@wBV9Tw!UGrb;buyDcws?cO^}8 z&1xmbaDAM|?)k01QgP<_fEUTNu-DQV6P%&jV=<(^Hu+W&#v923GH4Iu1uzyVmturVgA?s3}G5a zJofZ>u)gz44j4Wf7Jo4v9pjieZdbAo>i5`z#ljA2?0Qx%`LgEcL=E;F++;~wLi&+O z{dkuyRfI*8dWHdcS-g-vrF);PNR&=yOcT0PE4u5|D;U-k2h7AynE(C`cS1A)%oo-= z)NzXIx*^uiB)ODJ0oUCcP2FUjb96(=x8ADQb;_^Mr0B=KC(-(UmK>vEaQ~pD;P_cC@A3&cki)EuSIc z6C*x`nlHe`)6#GyVt+m17g@FACp`x;O7D?tF=?+{zxmyQGLLuA5U%*D-(I?jyweol z;{B^}9pdem*b8e~Co+4F-i1N)a{>ZWf}&Yx;x0|<&C~M*N@$^T%N2+QKuL6I&`&5Z}`Gu75}(a^pRxSG)^K|Qb7+d zZB$u&v+$7G%ywdmE6KIC)G89MvPq=kFrz#0@%8WlZ9ClQYc4U$H(+2%4*_obEj)t8s55|`!io`5VN;;;~t+C4ZD}o{%i$ zeWhU8!-1{gbr)^-iARcW0%G1KRfnepiaox}GuEM9cZW7h>dm9rn#X?if$0$ZQaoT| zO<7hzIWKq7_F?KOR3<9`RyfGNAVoJ`NFKyW*ydb7kKYEGyxep^7^zRZ2-07m>mv9bga^0DH4cQlnwMk z^D~*+>lI7F`@euorGD*x5tBFenv>M~nuIHeSuON2MIQOY?Rk18`}w7oG3|oK6`dwq z;?x>o3n(nfV^lGWDZQ!`w?~22S_md2bJ*xK?dYEYO+Pt&_a)zw+9ENqF0AeYP6tg9 ztpj72;igky>pt3)!QQ}^b9aTSoh*wutjL}#jkL1xrXX$?SX)qAq+&($4s+8UUdVFj zO`i;JX+xrVucf`m#beM7H754YR+8@8ARAModg~kUm^dvyS~*b#Y}}_*IZ+~33mfl+ z{q_&m+QJtJNGEUoUH4P`zCRJct$0xV;c?7C_*{v^mqMzv`!DYYMK)6>EpodcUVaep z#O+&~S({;gNmE5_CJB5o4Rg{Ln5z3I_T1RE^7hBR5G6Gwx=Cz+1L?QD;>WUspDCXb zL{7;TX--NK(GhVG+}Dfq7CrjlH{3Zi-}mVe@oP=?OdZ;yERPMZeA}J05^g^hhN)T12^)Ej z{A9iHHi{S}qfcJU_$ggrj+0zkqs03FHAmCRk;0{=BPvBUDL&pdX4bmc0I`N|`#->S z3}G>Am<3GI>I@|zZ?h?u(>UGntn&ksUNol3`_a|s0!G*gF9k+Zea?FXr+ z&8xxVs@dqW@;~<~8wp6Vu6?pfM0UqC{_uybRm{Lca1Nicci=az$m+Fe#GO+D%&`mh~t_Iz78NrnA3ikW*H zPyJBr3LB1!;gL2-p8wX6XR4HUyg3ejgg!PgZnm9s@Fs$ROCs!kmOheW=0ML-@V|zTW{x zQ%~x;sU!1;3kC$yr(+w( z4>qDe{FF5-xwND>i0QJUAx^vzzx9j6G~kRzEfd2asz=_?`doG~@}8${?2EY*s{8xY zyJ_L;AMXAI8k54yop{Jk72|0B4(%o&-Pkl1r}%Bvjmo3MY5{t%3#{iYU4-@x7O=hf z^{iczTT#b&RdkQegkTv)h`Z|anW7N9z_?AYFx2($S09~ z31A+%*Y*T3MHLkMVo(c;Ak(LU+bt=Vz!Q!~LK?qmRc|n^V8#MxErjyXiA&pik8g(6 zKp5a-pD%qcigSxYMTC@zinLa*H?ySD%i5y)LX7==Gs1|jpUBuL(Z2-!#HBEbfD_1& zD$%BPt{%^NCg~cXKpFLM zgh}9(<0nI2GSd|A;T0}!!9?xPwf)(G`qkhzXL9&pSm8pvOdIs$X)h!%>$!R|HEWuu z7DkT8-qw4lW!rY(Ot|(3;9E4$8h)r_RkGWRq`cz~eK#>Pz1!ZfflYImgjxD69ZS$& zPj(*P=|lGk)`IsyKb@KEd_Q)~RteAVA6IKY!e*r1X7I_{HA}?LB&v>C za)Q&Y@q1GEf{#nG;?EczQLja%BS7>%U(;oU2@~oKEdr18!EL@u{yZO-qo}PBIpJN) zF3x4YIthj>wim@4x`(s`$X!~HH}`FgrF|!#qZ)qODSzEEzal806S381JqMpvMZb|$i$VW&Qw!$6cI3t&z8}6KrKV8O0}sGWZ_M~|T~W}|n(UT%;TiaJoQG7f z+6$Wh{FU^BbS1n18)<^JiLg4u8)oz6bICIps-<0gvP9+MC37& z_A;w$2R+?Fxi!J4wyAzU)&NTR^^GRC&RLnzy&kh^g1U&u z@G)1Y523!92jLRCcHGSo&8<7ZxhlzuTIq(1dob(r>E{X^`)`}myrtgNF5t65(x1VJ zO8oXgujISzvJZZsZ`!wf|K-ws8;2>(!Ah71zRE2ojr0V+UgK6|Dk)x=`>q;=Uu<+S zlk7%8(kMV7bM@IO6w%b%Dce|9y*sE|7rX;I&JFuW`C1pOzhw1I_Z&}YV2kooS{>MJ z-}wDE)wD)0YOF(}G;n~@CHX)ePkTeMPt2e-RTO@xTo5M?hW3d4T<|VM`Q0&K{gpOBH zkF`-yAIv&>m9<}Rot=d1HaiowxA%nMc;8?H9tBg@jIBH6ri0R%N^)1?C00N0q3dxy zc^hTyDH&H-YkG6hYlcbYfiBZ&_@i4TXn#F+88kQ;BqP_jTJWTkpswvF)r(Z8+D>U} zTOGIbPyY9&U2!P_zkLzDTv&yG@x`~M3k9dD#lc)|=|3#@2ZzrFJsxGgsi%l9%bmTz zUeiVtR>xP1a2f4(f*UIy_10`D_>m;0!ZCzTegaWA+bHf``BPs%0v*y zc9GW6g1L}?M1zw_Po{TzqXMX@9WHs(u8>=ex)$R%bLe6sz4EZV=8znpx`in)_QL9u zg%QF$#?puGS`DOFz<&tqpS9Vm8sH-QX^BVki`|R@dri+t`RijHTc( znI?0XW$_a>L1UTN-lyF0K(70T-VD&IM{QPZln|$_M2_k>FRY&&tEBZj95PW|{04L@ z%+7Ig?(dJ^&Uvtf?vWpHe-!$1Tlkp{Qen%%YFI30E^OG9&Qn5I=3A~Yv-A7>J}l{> z_w~f$kK?CV6)C5<)>SgfPQKHSpf-v=G}~k;oEgtA`y@#qOu+n5Mo?IbFFzgwtFA*) z>&eCT^D?aru2#Eo0{}zxeJ0~j4zU*r<0kEg_!EJd+VcaAVFXp+V#`nXU$okBe02oX zGj+c9<6gc1+M08|V-LU+hKIdN}Rg^mDW_Kjkke49i^2Y3~1}%vRMwk-$sBcOP zyD)3KcIoq8mufA08kBX}t!DWTVgiuSu&ccJg$??u4z`>8vYLK!&07JJ?P`zvMuuVY zZkJSQxH0UKwE#zFK%Zf%C76S6^uf<>zbts_Wex&HD&B1OG#$C?a?)*&&d4r{o31}U zdnrhGu-;B+QzYl3nn~WDRlxBpYV0)Fr+LBO2A|NT{a)bPh&YM&%ef{8aP@5R3 z^sUsJB|0<822Ux=ouxfM#0`!}CM5l4G~RlY!vBftb+ggp1+G?8q1v&y^RJC`cj7QB zB?mvc>!8z-G9e2kax96cMh(lY2xCqyz(PFFW=@lapMxek2(LTV0_5!!3Hp97_$mct)v%kO% zKVaBM2OAT~E~RYQQ-*$}MfvJ- zyI&8|V=owSvPwu6Qo9fOfAP{|R7sNGIE&JPGaua63omns7aT<=@!>U zeggh-VpKQbjdpD>$rgR(k$wShrDqelC9cR1iL`*OuZnBG4!!ui)^vyy82vPaKZq6u zu6yAw;VW6L3Els`TCM^Hl4@Q*p^092_n0bl%J|oHACp8HUI)CgzdDo-@omSsUhtkO z!?gZM2-n!bv1@0W!lBtwaDMSiyU26eJsK7CnJux;j1eM?RiG$N5i=HL#GA|f3i3y8 zM+c+DcsFj$eV~YJM^M{p7F2SQgQP|8v#IiU_!-$&%6-{I5`Bf>ic202)M)klJFn73#V%}Z~Z;Nb^|Mx`i1d`?E3$sXW~6vAA;E;S*iF zK3hO>_(DFJYC~F)cd|OU94`PGnHYWixX@z&q2z5w+1y8P@QHX!XFx9;Po>-B2kCe~ zJC?1tu<8IRy(6-n=Oom$XbGfD07=pOZMMfDMt$~cdbFG!#9Bbv5$g&{H5he4r>*Md z&B$jJ9)w&B_>n(a`bz3gsz{Dt$4(Y$TzSn>Pz>9-Fab*}r3sy$9kGzm3TP?*$Kfu) zr4*a(PLxp$?*U8G)>E6O4bbT;+{|b}WC=zAWVhG^1PrFB%SA1HPq_!%+(!@@=xSQ~ zE_y+N?VIu&A?21c!3c0jnZ1;o@Xr^N)s#*)AA=dBWx=SykI0P z*g&mh;Nn$(J$u#H@!0S^={TLK`4qMj%kE3#o7MfHf|Y9l<r-mxb^SY|mz(@_x z+0))9&EvQ6m$*{=4cT#rfKE8m%jT0tKJyaeY&h=V_TaNrj6VO?#n!gQ1=e_&S?XGk zL-3^F@eP+5?jgi7^|~_6Lsy%ZN2F)5QL6JwJC#{fb94K#(z&EVTyOEo6zmh5mGP-y zG_i<76X$DJ1}!Ffb`Ny%S;wi z$wVypz6nxil8);%aLXNhs5DTjp;N5J?27tyoJ1ul|Fg1uy=}SUcjM#jr;!dPPsM!hd07UBZY*@{fWQWlPx16HymcjGUg-2JaTiaNa}bB2XJ?Ka|*iM)~^!(3ZJP}9i@kq9SW zW>BR$>_{g`%~Y|P3-3oGrO*9b%r1?q>Mvg_c}Yik3y#9NByG}qs;^h8mnaI+tygAq z+$O=<8M<8XPpzvtk29-E)pD47f;zsxX4;^HSgf@Ah8IZKNU6Rz2|^6ao_u}x1A3gh z=h^K-Aw0?%xlI_idk`{9N;9KSXFAk<&(QI~B7We^&PsohGsesFXI?LR=KTpxtOnE% zdJXr#yw<4Ycvn}RX)867zq$Zzy-}w#YqtX#n_md>|Jr`+Ae_E$g4MRiI85@ZY!tld zB=DjN-`cm1q2vsA0%K4nx{^fB@)978!`fu4Qy2v`@%rUMi;QGQ za0O)jN@9`Wm|l4d`OJz6<>>SBXR8pZxps+e!r~>>*hrmzQn1m1c)7Tqic1eu`-&#GJ<6KON#xpQA$|K$NBvbBJl23g1CZ#AH0+16{ zoC_fmm7VZ?(|#Ftc!HB_Bq)$L_KGS;-#`eb{u)#E%+$Ptf;nCSBRS^Pur>7QvzcjEwYUT<^(`N(Q(u`&Cl1bjuI8Mr zRm-QXn$>4{bju`tMcOt)=og75RCaW@HDbr?5gk2$9lA7p`5K5O#3sT^y|35TR$m38 zW7^VxMe}_!Z1n318~q8@GkuChBYK0Spc5+}ZS1H}92A1MY7&&_o*!#0lI&x@95*T< zlh0efIF=k#1xoEW%pY)VMlYh4$?K2Q%kOtjd_KILzIz8m$d+Z`i-vxZgPpeCG`^#Z zj?x3p7W^VEj>*rP!;A%$VQ2}Z)%<=i^c6_oc-%+gLh;7&`k4&OkL@2J3Zx_ZAv;HB zlyj`R%BZh}ofhZlAIL|fb|mW4E7Ok&GmThNa_6Y` zaQ+lj9gd4PU^U~Si!Z7U)ZIY7$n~wC=zB^Ox;Le4l$6<^IAET8g;#|t61qW)De;J6 zHfq#}16O4`J~OK?VkK{;thd(^#tT%>N>85+2ETp4IGxT5bd_P zΜM&X+u=@)Lb&h#~8H@wfMw4dUNWhW5<&Laru`bYPQIQ%8zd8#&$B1elxF3ukyT zpQ5_HJ#GEW92{$%N`$}eP}%TypfGSEQ#x-^%AGsc2C!qr%$LpFuY|u)U6Jf(Tr9~j zT2;WF`;JaFl9O1!AV*4AdpxLOwx|X79#lkow>{`-673rz!;CIi$s10ch;y5K=8oOT z>M!33goZf<)YD}ZA2uB52kUmRi_fvixOpFFvc3{scId=y7O8QhKT_JL(Tn_G;h@y5 zS<~T15+1#5LswSZZM4VtVwc8*z{sP9NuLKcZ&{_PA+uW*AeZAjbXpA%l$qI9!ql*& zh&0+KqDZdtH@M%Lh%&fb$_|D96gP9c9W}+XvmDlym~n08Ky)93N~VN$l?_{w_3_unn8&_77y=b5!?ei)UCzitu!B&t|Y^I%x0 zN22qTs29gmV)I~p0%6z7O-tx@!tHr3oSiQ-ds#1B`Bz~V(wbX&ZiR1W{ zW-S@zHXQHp=O}KJ;zxZJ$AkK>`?FSKHj-6=wURE0-Mr0RO&vKHD(r?+t!+m|PrrO5 z9EJLkKb8?OF^L4D#j2L=ysK}1)u2ovee6N;S^-zwvSp<5`C-#583XLwuM`;dkkFnR zg?GnvkA4WqMX!xyANA|qJXv(JXWq!|;FG(JBfk#5g;DdYuKdE(Rztgo1GxKfsWFtL zNb6{rM*{%vHXQ&Rz!d~>1ld9P5Kwn77zB#obB20=Y(O3$J_y_$%H!$|cZIrpz>p{S zp5{1PtyX$tb|f&j^INK;Sko7duHtPY+ujF-B=Ai92!aKed5Kj0-~C1|rF5 z@8RJp&d2BK>F&e}cemrSf$%|{pw3Vi4+Nh8uK*w8pJP3s?#_t+2>5;G&yhX|*q@`k zy}fz8g?74L8sZ z>Vo_e0tC6(06pxXaCcvz2NdCf#3K*D5I|2Pmn>+Qp(%}Yz+@U}ak`U+t z2SR0%erx{Ty(5DnW!>R+NVlDlC504(J0a=y?;!t32oUB1aq>h469{*4x-%7u zbOsqEZ@9bT@Ax@`oqTzLCU8%nH_XWi=mJG@A`Smt0?7S8o#xg3BO-qid%8G55eT3! z5_#vbC*sZm(4D>RHavI1@cl;+d4K2j-}8BwUziQjUzjZn>i$Q1e-HY%gA)IkHd4qS z@d`@t{d4yY>jZMK^F&T$DX0sNf!=TApNAwIp}t7xY!Fg+0s5Ws-=VRw`8UV^T0cl1 z?~23K$X_?~e)p|2-igf7rz1ac2{97Ain(L7q+?K*c|*|E@V9OAf&Z{D<*( zT9S+)S63$(1avnA`Mg|g{xOV diff --git a/packages/NUnit.2.6.2/NUnit.2.6.2.nuspec b/packages/NUnit.2.6.2/NUnit.2.6.2.nuspec deleted file mode 100644 index 985f4e0..0000000 --- a/packages/NUnit.2.6.2/NUnit.2.6.2.nuspec +++ /dev/null @@ -1,30 +0,0 @@ - - - - NUnit - 2.6.2 - NUnit - Charlie Poole - Charlie Poole - http://nunit.org/nuget/license.html - http://nunit.org/ - http://nunit.org/nuget/nunit_32x32.png - false - NUnit features a fluent assert syntax, parameterized, generic and theory tests and is user-extensible. A number of runners, both from the NUnit project and by third parties, are able to execute NUnit tests. - -Version 2.6 is the seventh major release of this well-known and well-tested programming tool. - -This package includes only the framework assembly. You will need to install the NUnit.Runners package unless you are using a third-party runner. - NUnit is a unit-testing framework for all .Net languages with a strong TDD focus. - Version 2.6 is the seventh major release of NUnit. - -Unlike earlier versions, this package includes only the framework assembly. You will need to install the NUnit.Runners package unless you are using a third-party runner. - -The nunit.mocks assembly is now provided by the NUnit.Mocks package. The pnunit.framework assembly is provided by the pNUnit package. - en-US - test testing tdd framework fluent assert theory plugin addin - - - - - \ No newline at end of file diff --git a/packages/NUnit.2.6.2/lib/nunit.framework.dll b/packages/NUnit.2.6.2/lib/nunit.framework.dll deleted file mode 100644 index 3e24ba1ca6260d7d0499624d13d2c5a2cd75b52a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147456 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 W^f}PyK%WDB4)i(D=fM9-4*U=F(vzP6 diff --git a/packages/NUnit.2.6.2/lib/nunit.framework.xml b/packages/NUnit.2.6.2/lib/nunit.framework.xml deleted file mode 100644 index 7702cee..0000000 --- a/packages/NUnit.2.6.2/lib/nunit.framework.xml +++ /dev/null @@ -1,10899 +0,0 @@ - - - - nunit.framework - - - -

- Attribute used to apply a category to a test - - - - - The name of the category - - - - - Construct attribute for a given category based on - a name. The name may not contain the characters ',', - '+', '-' or '!'. However, this is not checked in the - constructor since it would cause an error to arise at - as the test was loaded without giving a clear indication - of where the problem is located. The error is handled - in NUnitFramework.cs by marking the test as not - runnable. - - The name of the category - - - - Protected constructor uses the Type name as the name - of the category. - - - - - The name of the category - - - - - Used to mark a field for use as a datapoint when executing a theory - within the same fixture that requires an argument of the field's Type. - - - - - Used to mark an array as containing a set of datapoints to be used - executing a theory within the same fixture that requires an argument - of the Type of the array elements. - - - - - Attribute used to provide descriptive text about a - test case or fixture. - - - - - Construct the attribute - - Text describing the test - - - - Gets the test description - - - - - Enumeration indicating how the expected message parameter is to be used - - - - Expect an exact match - - - Expect a message containing the parameter string - - - Match the regular expression provided as a parameter - - - Expect a message that starts with the parameter string - - - - ExpectedExceptionAttribute - - - - - - Constructor for a non-specific exception - - - - - Constructor for a given type of exception - - The type of the expected exception - - - - Constructor for a given exception name - - The full name of the expected exception - - - - Gets or sets the expected exception type - - - - - Gets or sets the full Type name of the expected exception - - - - - Gets or sets the expected message text - - - - - Gets or sets the user message displayed in case of failure - - - - - Gets or sets the type of match to be performed on the expected message - - - - - Gets the name of a method to be used as an exception handler - - - - - ExplicitAttribute marks a test or test fixture so that it will - only be run if explicitly executed from the gui or command line - or if it is included by use of a filter. The test will not be - run simply because an enclosing suite is run. - - - - - Default constructor - - - - - Constructor with a reason - - The reason test is marked explicit - - - - The reason test is marked explicit - - - - - Attribute used to mark a test that is to be ignored. - Ignored tests result in a warning message when the - tests are run. - - - - - Constructs the attribute without giving a reason - for ignoring the test. - - - - - Constructs the attribute giving a reason for ignoring the test - - The reason for ignoring the test - - - - The reason for ignoring a test - - - - - Abstract base for Attributes that are used to include tests - in the test run based on environmental settings. - - - - - Constructor with no included items specified, for use - with named property syntax. - - - - - Constructor taking one or more included items - - Comma-delimited list of included items - - - - Name of the item that is needed in order for - a test to run. Multiple itemss may be given, - separated by a comma. - - - - - Name of the item to be excluded. Multiple items - may be given, separated by a comma. - - - - - The reason for including or excluding the test - - - - - PlatformAttribute is used to mark a test fixture or an - individual method as applying to a particular platform only. - - - - - Constructor with no platforms specified, for use - with named property syntax. - - - - - Constructor taking one or more platforms - - Comma-deliminted list of platforms - - - - CultureAttribute is used to mark a test fixture or an - individual method as applying to a particular Culture only. - - - - - Constructor with no cultures specified, for use - with named property syntax. - - - - - Constructor taking one or more cultures - - Comma-deliminted list of cultures - - - - Marks a test to use a combinatorial join of any argument data - provided. NUnit will create a test case for every combination of - the arguments provided. This can result in a large number of test - cases and so should be used judiciously. This is the default join - type, so the attribute need not be used except as documentation. - - - - - PropertyAttribute is used to attach information to a test as a name/value pair.. - - - - - Construct a PropertyAttribute with a name and string value - - The name of the property - The property value - - - - Construct a PropertyAttribute with a name and int value - - The name of the property - The property value - - - - Construct a PropertyAttribute with a name and double value - - The name of the property - The property value - - - - Constructor for derived classes that set the - property dictionary directly. - - - - - Constructor for use by derived classes that use the - name of the type as the property name. Derived classes - must ensure that the Type of the property value is - a standard type supported by the BCL. Any custom - types will cause a serialization Exception when - in the client. - - - - - Gets the property dictionary for this attribute - - - - - Default constructor - - - - - Marks a test to use pairwise join of any argument data provided. - NUnit will attempt too excercise every pair of argument values at - least once, using as small a number of test cases as it can. With - only two arguments, this is the same as a combinatorial join. - - - - - Default constructor - - - - - Marks a test to use a sequential join of any argument data - provided. NUnit will use arguements for each parameter in - sequence, generating test cases up to the largest number - of argument values provided and using null for any arguments - for which it runs out of values. Normally, this should be - used with the same number of arguments for each parameter. - - - - - Default constructor - - - - - Summary description for MaxTimeAttribute. - - - - - Construct a MaxTimeAttribute, given a time in milliseconds. - - The maximum elapsed time in milliseconds - - - - RandomAttribute is used to supply a set of random values - to a single parameter of a parameterized test. - - - - - ValuesAttribute is used to provide literal arguments for - an individual parameter of a test. - - - - - Abstract base class for attributes that apply to parameters - and supply data for the parameter. - - - - - Gets the data to be provided to the specified parameter - - - - - The collection of data to be returned. Must - be set by any derived attribute classes. - We use an object[] so that the individual - elements may have their type changed in GetData - if necessary. - - - - - Construct with one argument - - - - - - Construct with two arguments - - - - - - - Construct with three arguments - - - - - - - - Construct with an array of arguments - - - - - - Get the collection of values to be used as arguments - - - - - Construct a set of doubles from 0.0 to 1.0, - specifying only the count. - - - - - - Construct a set of doubles from min to max - - - - - - - - Construct a set of ints from min to max - - - - - - - - Get the collection of values to be used as arguments - - - - - RangeAttribute is used to supply a range of values to an - individual parameter of a parameterized test. - - - - - Construct a range of ints using default step of 1 - - - - - - - Construct a range of ints specifying the step size - - - - - - - - Construct a range of longs - - - - - - - - Construct a range of doubles - - - - - - - - Construct a range of floats - - - - - - - - RepeatAttribute may be applied to test case in order - to run it multiple times. - - - - - Construct a RepeatAttribute - - The number of times to run the test - - - - RequiredAddinAttribute may be used to indicate the names of any addins - that must be present in order to run some or all of the tests in an - assembly. If the addin is not loaded, the entire assembly is marked - as NotRunnable. - - - - - Initializes a new instance of the class. - - The required addin. - - - - Gets the name of required addin. - - The required addin name. - - - - Summary description for SetCultureAttribute. - - - - - Construct given the name of a culture - - - - - - Summary description for SetUICultureAttribute. - - - - - Construct given the name of a culture - - - - - - SetUpAttribute is used in a TestFixture to identify a method - that is called immediately before each test is run. It is - also used in a SetUpFixture to identify the method that is - called once, before any of the subordinate tests are run. - - - - - Attribute used to mark a class that contains one-time SetUp - and/or TearDown methods that apply to all the tests in a - namespace or an assembly. - - - - - Attribute used to mark a static (shared in VB) property - that returns a list of tests. - - - - - Attribute used in a TestFixture to identify a method that is - called immediately after each test is run. It is also used - in a SetUpFixture to identify the method that is called once, - after all subordinate tests have run. In either case, the method - is guaranteed to be called, even if an exception is thrown. - - - - - Provide actions to execute before and after tests. - - - - - When implemented by an attribute, this interface implemented to provide actions to execute before and after tests. - - - - - Executed before each test is run - - Provides details about the test that is going to be run. - - - - Executed after each test is run - - Provides details about the test that has just been run. - - - - Provides the target for the action attribute - - The target for the action attribute - - - - Adding this attribute to a method within a - class makes the method callable from the NUnit test runner. There is a property - called Description which is optional which you can provide a more detailed test - description. This class cannot be inherited. - - - - [TestFixture] - public class Fixture - { - [Test] - public void MethodToTest() - {} - - [Test(Description = "more detailed description")] - publc void TestDescriptionMethod() - {} - } - - - - - - Descriptive text for this test - - - - - TestCaseAttribute is used to mark parameterized test cases - and provide them with their arguments. - - - - - The ITestCaseData interface is implemented by a class - that is able to return complete testcases for use by - a parameterized test method. - - NOTE: This interface is used in both the framework - and the core, even though that results in two different - types. However, sharing the source code guarantees that - the various implementations will be compatible and that - the core is able to reflect successfully over the - framework implementations of ITestCaseData. - - - - - Gets the argument list to be provided to the test - - - - - Gets the expected result - - - - - Indicates whether a result has been specified. - This is necessary because the result may be - null, so it's value cannot be checked. - - - - - Gets the expected exception Type - - - - - Gets the FullName of the expected exception - - - - - Gets the name to be used for the test - - - - - Gets the description of the test - - - - - Gets a value indicating whether this is ignored. - - true if ignored; otherwise, false. - - - - Gets a value indicating whether this is explicit. - - true if explicit; otherwise, false. - - - - Gets the ignore reason. - - The ignore reason. - - - - Construct a TestCaseAttribute with a list of arguments. - This constructor is not CLS-Compliant - - - - - - Construct a TestCaseAttribute with a single argument - - - - - - Construct a TestCaseAttribute with a two arguments - - - - - - - Construct a TestCaseAttribute with a three arguments - - - - - - - - Gets the list of arguments to a test case - - - - - Gets or sets the expected result. Use - ExpectedResult by preference. - - The result. - - - - Gets or sets the expected result. - - The result. - - - - Gets a flag indicating whether an expected - result has been set. - - - - - Gets a list of categories associated with this test; - - - - - Gets or sets the category associated with this test. - May be a single category or a comma-separated list. - - - - - Gets or sets the expected exception. - - The expected exception. - - - - Gets or sets the name the expected exception. - - The expected name of the exception. - - - - Gets or sets the expected message of the expected exception - - The expected message of the exception. - - - - Gets or sets the type of match to be performed on the expected message - - - - - Gets or sets the description. - - The description. - - - - Gets or sets the name of the test. - - The name of the test. - - - - Gets or sets the ignored status of the test - - - - - Gets or sets the ignored status of the test - - - - - Gets or sets the explicit status of the test - - - - - Gets or sets the reason for not running the test - - - - - Gets or sets the reason for not running the test. - Set has the side effect of marking the test as ignored. - - The ignore reason. - - - - FactoryAttribute indicates the source to be used to - provide test cases for a test method. - - - - - Construct with the name of the data source, which must - be a property, field or method of the test class itself. - - An array of the names of the factories that will provide data - - - - Construct with a Type, which must implement IEnumerable - - The Type that will provide data - - - - Construct with a Type and name. - that don't support params arrays. - - The Type that will provide data - The name of the method, property or field that will provide data - - - - The name of a the method, property or fiend to be used as a source - - - - - A Type to be used as a source - - - - - Gets or sets the category associated with this test. - May be a single category or a comma-separated list. - - - - - [TestFixture] - public class ExampleClass - {} - - - - - Default constructor - - - - - Construct with a object[] representing a set of arguments. - In .NET 2.0, the arguments may later be separated into - type arguments and constructor arguments. - - - - - - Descriptive text for this fixture - - - - - Gets and sets the category for this fixture. - May be a comma-separated list of categories. - - - - - Gets a list of categories for this fixture - - - - - The arguments originally provided to the attribute - - - - - Gets or sets a value indicating whether this should be ignored. - - true if ignore; otherwise, false. - - - - Gets or sets the ignore reason. May set Ignored as a side effect. - - The ignore reason. - - - - Get or set the type arguments. If not set - explicitly, any leading arguments that are - Types are taken as type arguments. - - - - - Attribute used to identify a method that is - called before any tests in a fixture are run. - - - - - Attribute used to identify a method that is called after - all the tests in a fixture have run. The method is - guaranteed to be called, even if an exception is thrown. - - - - - Adding this attribute to a method within a - class makes the method callable from the NUnit test runner. There is a property - called Description which is optional which you can provide a more detailed test - description. This class cannot be inherited. - - - - [TestFixture] - public class Fixture - { - [Test] - public void MethodToTest() - {} - - [Test(Description = "more detailed description")] - publc void TestDescriptionMethod() - {} - } - - - - - - Used on a method, marks the test with a timeout value in milliseconds. - The test will be run in a separate thread and is cancelled if the timeout - is exceeded. Used on a method or assembly, sets the default timeout - for all contained test methods. - - - - - Construct a TimeoutAttribute given a time in milliseconds - - The timeout value in milliseconds - - - - Marks a test that must run in the STA, causing it - to run in a separate thread if necessary. - - On methods, you may also use STAThreadAttribute - to serve the same purpose. - - - - - Construct a RequiresSTAAttribute - - - - - Marks a test that must run in the MTA, causing it - to run in a separate thread if necessary. - - On methods, you may also use MTAThreadAttribute - to serve the same purpose. - - - - - Construct a RequiresMTAAttribute - - - - - Marks a test that must run on a separate thread. - - - - - Construct a RequiresThreadAttribute - - - - - Construct a RequiresThreadAttribute, specifying the apartment - - - - - ValueSourceAttribute indicates the source to be used to - provide data for one parameter of a test method. - - - - - Construct with the name of the factory - for use with languages - that don't support params arrays. - - The name of the data source to be used - - - - Construct with a Type and name - for use with languages - that don't support params arrays. - - The Type that will provide data - The name of the method, property or field that will provide data - - - - The name of a the method, property or fiend to be used as a source - - - - - A Type to be used as a source - - - - - AttributeExistsConstraint tests for the presence of a - specified attribute on a Type. - - - - - The Constraint class is the base of all built-in constraints - within NUnit. It provides the operator overloads used to combine - constraints. - - - - - The IConstraintExpression interface is implemented by all - complete and resolvable constraints and expressions. - - - - - Return the top-level constraint for this expression - - - - - - Static UnsetObject used to detect derived constraints - failing to set the actual value. - - - - - The actual value being tested against a constraint - - - - - The display name of this Constraint for use by ToString() - - - - - Argument fields used by ToString(); - - - - - The builder holding this constraint - - - - - Construct a constraint with no arguments - - - - - Construct a constraint with one argument - - - - - Construct a constraint with two arguments - - - - - Sets the ConstraintBuilder holding this constraint - - - - - Write the failure message to the MessageWriter provided - as an argument. The default implementation simply passes - the constraint and the actual value to the writer, which - then displays the constraint description and the value. - - Constraints that need to provide additional details, - such as where the error occured can override this. - - The MessageWriter on which to display the message - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Test whether the constraint is satisfied by an - ActualValueDelegate that returns the value to be tested. - The default implementation simply evaluates the delegate - but derived classes may override it to provide for delayed - processing. - - An ActualValueDelegate - True for success, false for failure - - - - Test whether the constraint is satisfied by a given reference. - The default implementation simply dereferences the value but - derived classes may override it to provide for delayed processing. - - A reference to the value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. - - The writer on which the actual value is displayed - - - - Default override of ToString returns the constraint DisplayName - followed by any arguments within angle brackets. - - - - - - Returns the string representation of this constraint - - - - - This operator creates a constraint that is satisfied only if both - argument constraints are satisfied. - - - - - This operator creates a constraint that is satisfied if either - of the argument constraints is satisfied. - - - - - This operator creates a constraint that is satisfied if the - argument constraint is not satisfied. - - - - - Returns a DelayedConstraint with the specified delay time. - - The delay in milliseconds. - - - - - Returns a DelayedConstraint with the specified delay time - and polling interval. - - The delay in milliseconds. - The interval at which to test the constraint. - - - - - The display name of this Constraint for use by ToString(). - The default value is the name of the constraint with - trailing "Constraint" removed. Derived classes may set - this to another name in their constructors. - - - - - Returns a ConstraintExpression by appending And - to the current constraint. - - - - - Returns a ConstraintExpression by appending And - to the current constraint. - - - - - Returns a ConstraintExpression by appending Or - to the current constraint. - - - - - Class used to detect any derived constraints - that fail to set the actual value in their - Matches override. - - - - - Constructs an AttributeExistsConstraint for a specific attribute Type - - - - - - Tests whether the object provides the expected attribute. - - A Type, MethodInfo, or other ICustomAttributeProvider - True if the expected attribute is present, otherwise false - - - - Writes the description of the constraint to the specified writer - - - - - AttributeConstraint tests that a specified attribute is present - on a Type or other provider and that the value of the attribute - satisfies some other constraint. - - - - - Abstract base class used for prefixes - - - - - The base constraint - - - - - Construct given a base constraint - - - - - - Constructs an AttributeConstraint for a specified attriute - Type and base constraint. - - - - - - - Determines whether the Type or other provider has the - expected attribute and if its value matches the - additional constraint specified. - - - - - Writes a description of the attribute to the specified writer. - - - - - Writes the actual value supplied to the specified writer. - - - - - Returns a string representation of the constraint. - - - - - BasicConstraint is the abstract base for constraints that - perform a simple comparison to a constant value. - - - - - Initializes a new instance of the class. - - The expected. - The description. - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - NullConstraint tests that the actual value is null - - - - - Initializes a new instance of the class. - - - - - TrueConstraint tests that the actual value is true - - - - - Initializes a new instance of the class. - - - - - FalseConstraint tests that the actual value is false - - - - - Initializes a new instance of the class. - - - - - NaNConstraint tests that the actual value is a double or float NaN - - - - - Test that the actual value is an NaN - - - - - - - Write the constraint description to a specified writer - - - - - - BinaryConstraint is the abstract base of all constraints - that combine two other constraints in some fashion. - - - - - The first constraint being combined - - - - - The second constraint being combined - - - - - Construct a BinaryConstraint from two other constraints - - The first constraint - The second constraint - - - - AndConstraint succeeds only if both members succeed. - - - - - Create an AndConstraint from two other constraints - - The first constraint - The second constraint - - - - Apply both member constraints to an actual value, succeeding - succeeding only if both of them succeed. - - The actual value - True if the constraints both succeeded - - - - Write a description for this contraint to a MessageWriter - - The MessageWriter to receive the description - - - - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. - - The writer on which the actual value is displayed - - - - OrConstraint succeeds if either member succeeds - - - - - Create an OrConstraint from two other constraints - - The first constraint - The second constraint - - - - Apply the member constraints to an actual value, succeeding - succeeding as soon as one of them succeeds. - - The actual value - True if either constraint succeeded - - - - Write a description for this contraint to a MessageWriter - - The MessageWriter to receive the description - - - - CollectionConstraint is the abstract base class for - constraints that operate on collections. - - - - - Construct an empty CollectionConstraint - - - - - Construct a CollectionConstraint - - - - - - Determines whether the specified enumerable is empty. - - The enumerable. - - true if the specified enumerable is empty; otherwise, false. - - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Protected method to be implemented by derived classes - - - - - - - CollectionItemsEqualConstraint is the abstract base class for all - collection constraints that apply some notion of item equality - as a part of their operation. - - - - - Construct an empty CollectionConstraint - - - - - Construct a CollectionConstraint - - - - - - Flag the constraint to use the supplied IComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied IComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied Comparison object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied IEqualityComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied IEqualityComparer object. - - The IComparer object to use. - Self. - - - - Compares two collection members for equality - - - - - Return a new CollectionTally for use in making tests - - The collection to be included in the tally - - - - Flag the constraint to ignore case and return self. - - - - - EmptyCollectionConstraint tests whether a collection is empty. - - - - - Check that the collection is empty - - - - - - - Write the constraint description to a MessageWriter - - - - - - UniqueItemsConstraint tests whether all the items in a - collection are unique. - - - - - Check that all items are unique. - - - - - - - Write a description of this constraint to a MessageWriter - - - - - - CollectionContainsConstraint is used to test whether a collection - contains an expected object as a member. - - - - - Construct a CollectionContainsConstraint - - - - - - Test whether the expected item is contained in the collection - - - - - - - Write a descripton of the constraint to a MessageWriter - - - - - - CollectionEquivalentCOnstraint is used to determine whether two - collections are equivalent. - - - - - Construct a CollectionEquivalentConstraint - - - - - - Test whether two collections are equivalent - - - - - - - Write a description of this constraint to a MessageWriter - - - - - - CollectionSubsetConstraint is used to determine whether - one collection is a subset of another - - - - - Construct a CollectionSubsetConstraint - - The collection that the actual value is expected to be a subset of - - - - Test whether the actual collection is a subset of - the expected collection provided. - - - - - - - Write a description of this constraint to a MessageWriter - - - - - - CollectionOrderedConstraint is used to test whether a collection is ordered. - - - - - Construct a CollectionOrderedConstraint - - - - - Modifies the constraint to use an IComparer and returns self. - - - - - Modifies the constraint to use an IComparer<T> and returns self. - - - - - Modifies the constraint to use a Comparison<T> and returns self. - - - - - Modifies the constraint to test ordering by the value of - a specified property and returns self. - - - - - Test whether the collection is ordered - - - - - - - Write a description of the constraint to a MessageWriter - - - - - - Returns the string representation of the constraint. - - - - - - If used performs a reverse comparison - - - - - CollectionTally counts (tallies) the number of - occurences of each object in one or more enumerations. - - - - - Construct a CollectionTally object from a comparer and a collection - - - - - Try to remove an object from the tally - - The object to remove - True if successful, false if the object was not found - - - - Try to remove a set of objects from the tally - - The objects to remove - True if successful, false if any object was not found - - - - The number of objects remaining in the tally - - - - - ComparisonAdapter class centralizes all comparisons of - values in NUnit, adapting to the use of any provided - IComparer, IComparer<T> or Comparison<T> - - - - - Returns a ComparisonAdapter that wraps an IComparer - - - - - Returns a ComparisonAdapter that wraps an IComparer<T> - - - - - Returns a ComparisonAdapter that wraps a Comparison<T> - - - - - Compares two objects - - - - - Gets the default ComparisonAdapter, which wraps an - NUnitComparer object. - - - - - Construct a ComparisonAdapter for an IComparer - - - - - Compares two objects - - - - - - - - Construct a default ComparisonAdapter - - - - - ComparisonAdapter<T> extends ComparisonAdapter and - allows use of an IComparer<T> or Comparison<T> - to actually perform the comparison. - - - - - Construct a ComparisonAdapter for an IComparer<T> - - - - - Compare a Type T to an object - - - - - Construct a ComparisonAdapter for a Comparison<T> - - - - - Compare a Type T to an object - - - - - Abstract base class for constraints that compare values to - determine if one is greater than, equal to or less than - the other. This class supplies the Using modifiers. - - - - - ComparisonAdapter to be used in making the comparison - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the class. - - - - - Modifies the constraint to use an IComparer and returns self - - - - - Modifies the constraint to use an IComparer<T> and returns self - - - - - Modifies the constraint to use a Comparison<T> and returns self - - - - - Delegate used to delay evaluation of the actual value - to be used in evaluating a constraint - - - - - ConstraintBuilder maintains the stacks that are used in - processing a ConstraintExpression. An OperatorStack - is used to hold operators that are waiting for their - operands to be reognized. a ConstraintStack holds - input constraints as well as the results of each - operator applied. - - - - - Initializes a new instance of the class. - - - - - Appends the specified operator to the expression by first - reducing the operator stack and then pushing the new - operator on the stack. - - The operator to push. - - - - Appends the specified constraint to the expresson by pushing - it on the constraint stack. - - The constraint to push. - - - - Sets the top operator right context. - - The right context. - - - - Reduces the operator stack until the topmost item - precedence is greater than or equal to the target precedence. - - The target precedence. - - - - Resolves this instance, returning a Constraint. If the builder - is not currently in a resolvable state, an exception is thrown. - - The resolved constraint - - - - Gets a value indicating whether this instance is resolvable. - - - true if this instance is resolvable; otherwise, false. - - - - - OperatorStack is a type-safe stack for holding ConstraintOperators - - - - - Initializes a new instance of the class. - - The builder. - - - - Pushes the specified operator onto the stack. - - The op. - - - - Pops the topmost operator from the stack. - - - - - - Gets a value indicating whether this is empty. - - true if empty; otherwise, false. - - - - Gets the topmost operator without modifying the stack. - - The top. - - - - ConstraintStack is a type-safe stack for holding Constraints - - - - - Initializes a new instance of the class. - - The builder. - - - - Pushes the specified constraint. As a side effect, - the constraint's builder field is set to the - ConstraintBuilder owning this stack. - - The constraint. - - - - Pops this topmost constrait from the stack. - As a side effect, the constraint's builder - field is set to null. - - - - - - Gets a value indicating whether this is empty. - - true if empty; otherwise, false. - - - - Gets the topmost constraint without modifying the stack. - - The topmost constraint - - - - ConstraintExpression represents a compound constraint in the - process of being constructed from a series of syntactic elements. - - Individual elements are appended to the expression as they are - reognized. Once an actual Constraint is appended, the expression - returns a resolvable Constraint. - - - - - ConstraintExpressionBase is the abstract base class for the - ConstraintExpression class, which represents a - compound constraint in the process of being constructed - from a series of syntactic elements. - - NOTE: ConstraintExpressionBase is separate because the - ConstraintExpression class was generated in earlier - versions of NUnit. The two classes may be combined - in a future version. - - - - - The ConstraintBuilder holding the elements recognized so far - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the - class passing in a ConstraintBuilder, which may be pre-populated. - - The builder. - - - - Returns a string representation of the expression as it - currently stands. This should only be used for testing, - since it has the side-effect of resolving the expression. - - - - - - Appends an operator to the expression and returns the - resulting expression itself. - - - - - Appends a self-resolving operator to the expression and - returns a new ResolvableConstraintExpression. - - - - - Appends a constraint to the expression and returns that - constraint, which is associated with the current state - of the expression being built. - - - - - Initializes a new instance of the class. - - - - - Initializes a new instance of the - class passing in a ConstraintBuilder, which may be pre-populated. - - The builder. - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding only if a specified number of them succeed. - - - - - Returns a new PropertyConstraintExpression, which will either - test for the existence of the named property on the object - being tested or apply any following constraint to that property. - - - - - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. - - - - - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. - - - - - Returns the constraint provided as an argument - used to allow custom - custom constraints to easily participate in the syntax. - - - - - Returns the constraint provided as an argument - used to allow custom - custom constraints to easily participate in the syntax. - - - - - Returns a constraint that tests two items for equality - - - - - Returns a constraint that tests that two references are the same object - - - - - Returns a constraint that tests whether the - actual value is greater than the suppled argument - - - - - Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument - - - - - Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument - - - - - Returns a constraint that tests whether the - actual value is less than the suppled argument - - - - - Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument - - - - - Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument - - - - - Returns a constraint that tests whether the actual - value is of the exact type supplied as an argument. - - - - - Returns a constraint that tests whether the actual - value is of the exact type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is a collection containing the same elements as the - collection supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is a subset of the collection supplied as an argument. - - - - - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. - - - - - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. - - - - - Returns a new ContainsConstraint. This constraint - will, in turn, make use of the appropriate second-level - constraint, depending on the type of the actual argument. - This overload is only used if the item sought is a string, - since any other type implies that we are looking for a - collection member. - - - - - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value matches the Regex pattern supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value matches the Regex pattern supplied as an argument. - - - - - Returns a constraint that tests whether the path provided - is the same as an expected path after canonicalization. - - - - - Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. - - - - - Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. - - - - - Returns a constraint that tests whether the actual value falls - within a specified range. - - - - - Returns a ConstraintExpression that negates any - following constraint. - - - - - Returns a ConstraintExpression that negates any - following constraint. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them succeed. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if at least one of them succeeds. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them fail. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the Length property of the object being tested. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the Count property of the object being tested. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the Message property of the object being tested. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the InnerException property of the object being tested. - - - - - With is currently a NOP - reserved for future use. - - - - - Returns a constraint that tests for null - - - - - Returns a constraint that tests for True - - - - - Returns a constraint that tests for False - - - - - Returns a constraint that tests for a positive value - - - - - Returns a constraint that tests for a negative value - - - - - Returns a constraint that tests for NaN - - - - - Returns a constraint that tests for empty - - - - - Returns a constraint that tests whether a collection - contains all unique items. - - - - - Returns a constraint that tests whether an object graph is serializable in binary format. - - - - - Returns a constraint that tests whether an object graph is serializable in xml format. - - - - - Returns a constraint that tests whether a collection is ordered - - - - - Helper class with properties and methods that supply - a number of constraints used in Asserts. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding only if a specified number of them succeed. - - - - - Returns a new PropertyConstraintExpression, which will either - test for the existence of the named property on the object - being tested or apply any following constraint to that property. - - - - - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. - - - - - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. - - - - - Returns a constraint that tests two items for equality - - - - - Returns a constraint that tests that two references are the same object - - - - - Returns a constraint that tests whether the - actual value is greater than the suppled argument - - - - - Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument - - - - - Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument - - - - - Returns a constraint that tests whether the - actual value is less than the suppled argument - - - - - Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument - - - - - Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument - - - - - Returns a constraint that tests whether the actual - value is of the exact type supplied as an argument. - - - - - Returns a constraint that tests whether the actual - value is of the exact type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is a collection containing the same elements as the - collection supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is a subset of the collection supplied as an argument. - - - - - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. - - - - - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. - - - - - Returns a new ContainsConstraint. This constraint - will, in turn, make use of the appropriate second-level - constraint, depending on the type of the actual argument. - This overload is only used if the item sought is a string, - since any other type implies that we are looking for a - collection member. - - - - - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. - - - - - Returns a constraint that fails if the actual - value contains the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. - - - - - Returns a constraint that fails if the actual - value starts with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. - - - - - Returns a constraint that fails if the actual - value ends with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value matches the Regex pattern supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value matches the Regex pattern supplied as an argument. - - - - - Returns a constraint that fails if the actual - value matches the pattern supplied as an argument. - - - - - Returns a constraint that tests whether the path provided - is the same as an expected path after canonicalization. - - - - - Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. - - - - - Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. - - - - - Returns a constraint that tests whether the actual value falls - within a specified range. - - - - - Returns a ConstraintExpression that negates any - following constraint. - - - - - Returns a ConstraintExpression that negates any - following constraint. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them succeed. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if at least one of them succeeds. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them fail. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the Length property of the object being tested. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the Count property of the object being tested. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the Message property of the object being tested. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the InnerException property of the object being tested. - - - - - Returns a constraint that tests for null - - - - - Returns a constraint that tests for True - - - - - Returns a constraint that tests for False - - - - - Returns a constraint that tests for a positive value - - - - - Returns a constraint that tests for a negative value - - - - - Returns a constraint that tests for NaN - - - - - Returns a constraint that tests for empty - - - - - Returns a constraint that tests whether a collection - contains all unique items. - - - - - Returns a constraint that tests whether an object graph is serializable in binary format. - - - - - Returns a constraint that tests whether an object graph is serializable in xml format. - - - - - Returns a constraint that tests whether a collection is ordered - - - - - The ConstraintOperator class is used internally by a - ConstraintBuilder to represent an operator that - modifies or combines constraints. - - Constraint operators use left and right precedence - values to determine whether the top operator on the - stack should be reduced before pushing a new operator. - - - - - The precedence value used when the operator - is about to be pushed to the stack. - - - - - The precedence value used when the operator - is on the top of the stack. - - - - - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. - - - - - - The syntax element preceding this operator - - - - - The syntax element folowing this operator - - - - - The precedence value used when the operator - is about to be pushed to the stack. - - - - - The precedence value used when the operator - is on the top of the stack. - - - - - PrefixOperator takes a single constraint and modifies - it's action in some way. - - - - - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. - - - - - - Returns the constraint created by applying this - prefix to another constraint. - - - - - - - Negates the test of the constraint it wraps. - - - - - Constructs a new NotOperator - - - - - Returns a NotConstraint applied to its argument. - - - - - Abstract base for operators that indicate how to - apply a constraint to items in a collection. - - - - - Constructs a CollectionOperator - - - - - Represents a constraint that succeeds if all the - members of a collection match a base constraint. - - - - - Returns a constraint that will apply the argument - to the members of a collection, succeeding if - they all succeed. - - - - - Represents a constraint that succeeds if any of the - members of a collection match a base constraint. - - - - - Returns a constraint that will apply the argument - to the members of a collection, succeeding if - any of them succeed. - - - - - Represents a constraint that succeeds if none of the - members of a collection match a base constraint. - - - - - Returns a constraint that will apply the argument - to the members of a collection, succeeding if - none of them succeed. - - - - - Represents a constraint that succeeds if the specified - count of members of a collection match a base constraint. - - - - - Construct an ExactCountOperator for a specified count - - The expected count - - - - Returns a constraint that will apply the argument - to the members of a collection, succeeding if - none of them succeed. - - - - - Represents a constraint that simply wraps the - constraint provided as an argument, without any - further functionality, but which modifes the - order of evaluation because of its precedence. - - - - - Constructor for the WithOperator - - - - - Returns a constraint that wraps its argument - - - - - Abstract base class for operators that are able to reduce to a - constraint whether or not another syntactic element follows. - - - - - Operator used to test for the presence of a named Property - on an object and optionally apply further tests to the - value of that property. - - - - - Constructs a PropOperator for a particular named property - - - - - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. - - - - - - Gets the name of the property to which the operator applies - - - - - Operator that tests for the presence of a particular attribute - on a type and optionally applies further tests to the attribute. - - - - - Construct an AttributeOperator for a particular Type - - The Type of attribute tested - - - - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. - - - - - Operator that tests that an exception is thrown and - optionally applies further tests to the exception. - - - - - Construct a ThrowsOperator - - - - - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. - - - - - Abstract base class for all binary operators - - - - - Reduce produces a constraint from the operator and - any arguments. It takes the arguments from the constraint - stack and pushes the resulting constraint on it. - - - - - - Abstract method that produces a constraint by applying - the operator to its left and right constraint arguments. - - - - - Gets the left precedence of the operator - - - - - Gets the right precedence of the operator - - - - - Operator that requires both it's arguments to succeed - - - - - Construct an AndOperator - - - - - Apply the operator to produce an AndConstraint - - - - - Operator that requires at least one of it's arguments to succeed - - - - - Construct an OrOperator - - - - - Apply the operator to produce an OrConstraint - - - - - ContainsConstraint tests a whether a string contains a substring - or a collection contains an object. It postpones the decision of - which test to use until the type of the actual argument is known. - This allows testing whether a string is contained in a collection - or as a substring of another string using the same syntax. - - - - - Initializes a new instance of the class. - - The expected. - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Flag the constraint to use the supplied IComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied IComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied Comparison object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied IEqualityComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied IEqualityComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to ignore case and return self. - - - - - Applies a delay to the match so that a match can be evaluated in the future. - - - - - Creates a new DelayedConstraint - - The inner constraint two decorate - The time interval after which the match is performed - If the value of is less than 0 - - - - Creates a new DelayedConstraint - - The inner constraint two decorate - The time interval after which the match is performed - The time interval used for polling - If the value of is less than 0 - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for if the base constraint fails, false if it succeeds - - - - Test whether the constraint is satisfied by a delegate - - The delegate whose value is to be tested - True for if the base constraint fails, false if it succeeds - - - - Test whether the constraint is satisfied by a given reference. - Overridden to wait for the specified delay period before - calling the base constraint with the dereferenced value. - - A reference to the value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Write the actual value for a failing constraint test to a MessageWriter. - - The writer on which the actual value is displayed - - - - Returns the string representation of the constraint. - - - - - EmptyDirectoryConstraint is used to test that a directory is empty - - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. - - The writer on which the actual value is displayed - - - - EmptyConstraint tests a whether a string or collection is empty, - postponing the decision about which test is applied until the - type of the actual argument is known. - - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - EqualConstraint is able to compare an actual value with the - expected value provided in its constructor. Two objects are - considered equal if both are null, or if both have the same - value. NUnit has special semantics for some object types. - - - - - If true, strings in error messages will be clipped - - - - - NUnitEqualityComparer used to test equality. - - - - - Initializes a new instance of the class. - - The expected value. - - - - Flag the constraint to use a tolerance when determining equality. - - Tolerance value to be used - Self. - - - - Flag the constraint to use the supplied IComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied IComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied IComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied Comparison object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied IEqualityComparer object. - - The IComparer object to use. - Self. - - - - Flag the constraint to use the supplied IEqualityComparer object. - - The IComparer object to use. - Self. - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write a failure message. Overridden to provide custom - failure messages for EqualConstraint. - - The MessageWriter to write to - - - - Write description of this constraint - - The MessageWriter to write to - - - - Display the failure information for two collections that did not match. - - The MessageWriter on which to display - The expected collection. - The actual collection - The depth of this failure in a set of nested collections - - - - Displays a single line showing the types and sizes of the expected - and actual enumerations, collections or arrays. If both are identical, - the value is only shown once. - - The MessageWriter on which to display - The expected collection or array - The actual collection or array - The indentation level for the message line - - - - Displays a single line showing the point in the expected and actual - arrays at which the comparison failed. If the arrays have different - structures or dimensions, both values are shown. - - The MessageWriter on which to display - The expected array - The actual array - Index of the failure point in the underlying collections - The indentation level for the message line - - - - Display the failure information for two IEnumerables that did not match. - - The MessageWriter on which to display - The expected enumeration. - The actual enumeration - The depth of this failure in a set of nested collections - - - - Flag the constraint to ignore case and return self. - - - - - Flag the constraint to suppress string clipping - and return self. - - - - - Flag the constraint to compare arrays as collections - and return self. - - - - - Switches the .Within() modifier to interpret its tolerance as - a distance in representable values (see remarks). - - Self. - - Ulp stands for "unit in the last place" and describes the minimum - amount a given value can change. For any integers, an ulp is 1 whole - digit. For floating point values, the accuracy of which is better - for smaller numbers and worse for larger numbers, an ulp depends - on the size of the number. Using ulps for comparison of floating - point results instead of fixed tolerances is safer because it will - automatically compensate for the added inaccuracy of larger numbers. - - - - - Switches the .Within() modifier to interpret its tolerance as - a percentage that the actual values is allowed to deviate from - the expected value. - - Self - - - - Causes the tolerance to be interpreted as a TimeSpan in days. - - Self - - - - Causes the tolerance to be interpreted as a TimeSpan in hours. - - Self - - - - Causes the tolerance to be interpreted as a TimeSpan in minutes. - - Self - - - - Causes the tolerance to be interpreted as a TimeSpan in seconds. - - Self - - - - Causes the tolerance to be interpreted as a TimeSpan in milliseconds. - - Self - - - - Causes the tolerance to be interpreted as a TimeSpan in clock ticks. - - Self - - - - EqualityAdapter class handles all equality comparisons - that use an IEqualityComparer, IEqualityComparer<T> - or a ComparisonAdapter. - - - - - Compares two objects, returning true if they are equal - - - - - Returns true if the two objects can be compared by this adapter. - The base adapter cannot handle IEnumerables except for strings. - - - - - Returns an EqualityAdapter that wraps an IComparer. - - - - - Returns an EqualityAdapter that wraps an IEqualityComparer. - - - - - Returns an EqualityAdapter that wraps an IEqualityComparer<T>. - - - - - Returns an EqualityAdapter that wraps an IComparer<T>. - - - - - Returns an EqualityAdapter that wraps a Comparison<T>. - - - - - EqualityAdapter that wraps an IComparer. - - - - - Returns true if the two objects can be compared by this adapter. - Generic adapter requires objects of the specified type. - - - - - EqualityAdapter that wraps an IComparer. - - - - Helper routines for working with floating point numbers - - - The floating point comparison code is based on this excellent article: - http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm - - - "ULP" means Unit in the Last Place and in the context of this library refers to - the distance between two adjacent floating point numbers. IEEE floating point - numbers can only represent a finite subset of natural numbers, with greater - accuracy for smaller numbers and lower accuracy for very large numbers. - - - If a comparison is allowed "2 ulps" of deviation, that means the values are - allowed to deviate by up to 2 adjacent floating point values, which might be - as low as 0.0000001 for small numbers or as high as 10.0 for large numbers. - - - - - Compares two floating point values for equality - First floating point value to be compared - Second floating point value t be compared - - Maximum number of representable floating point values that are allowed to - be between the left and the right floating point values - - True if both numbers are equal or close to being equal - - - Floating point values can only represent a finite subset of natural numbers. - For example, the values 2.00000000 and 2.00000024 can be stored in a float, - but nothing inbetween them. - - - This comparison will count how many possible floating point values are between - the left and the right number. If the number of possible values between both - numbers is less than or equal to maxUlps, then the numbers are considered as - being equal. - - - Implementation partially follows the code outlined here: - http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ - - - - - Compares two double precision floating point values for equality - First double precision floating point value to be compared - Second double precision floating point value t be compared - - Maximum number of representable double precision floating point values that are - allowed to be between the left and the right double precision floating point values - - True if both numbers are equal or close to being equal - - - Double precision floating point values can only represent a limited series of - natural numbers. For example, the values 2.0000000000000000 and 2.0000000000000004 - can be stored in a double, but nothing inbetween them. - - - This comparison will count how many possible double precision floating point - values are between the left and the right number. If the number of possible - values between both numbers is less than or equal to maxUlps, then the numbers - are considered as being equal. - - - Implementation partially follows the code outlined here: - http://www.anttirt.net/2007/08/19/proper-floating-point-comparisons/ - - - - - - Reinterprets the memory contents of a floating point value as an integer value - - - Floating point value whose memory contents to reinterpret - - - The memory contents of the floating point value interpreted as an integer - - - - - Reinterprets the memory contents of a double precision floating point - value as an integer value - - - Double precision floating point value whose memory contents to reinterpret - - - The memory contents of the double precision floating point value - interpreted as an integer - - - - - Reinterprets the memory contents of an integer as a floating point value - - Integer value whose memory contents to reinterpret - - The memory contents of the integer value interpreted as a floating point value - - - - - Reinterprets the memory contents of an integer value as a double precision - floating point value - - Integer whose memory contents to reinterpret - - The memory contents of the integer interpreted as a double precision - floating point value - - - - Union of a floating point variable and an integer - - - The union's value as a floating point variable - - - The union's value as an integer - - - The union's value as an unsigned integer - - - Union of a double precision floating point variable and a long - - - The union's value as a double precision floating point variable - - - The union's value as a long - - - The union's value as an unsigned long - - - - Tests whether a value is greater than the value supplied to its constructor - - - - - The value against which a comparison is to be made - - - - - Initializes a new instance of the class. - - The expected value. - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Tests whether a value is greater than or equal to the value supplied to its constructor - - - - - The value against which a comparison is to be made - - - - - Initializes a new instance of the class. - - The expected value. - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Tests whether a value is less than the value supplied to its constructor - - - - - The value against which a comparison is to be made - - - - - Initializes a new instance of the class. - - The expected value. - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Tests whether a value is less than or equal to the value supplied to its constructor - - - - - The value against which a comparison is to be made - - - - - Initializes a new instance of the class. - - The expected value. - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - MessageWriter is the abstract base for classes that write - constraint descriptions and messages in some form. The - class has separate methods for writing various components - of a message, allowing implementations to tailor the - presentation as needed. - - - - - Construct a MessageWriter given a culture - - - - - Method to write single line message with optional args, usually - written to precede the general failure message. - - The message to be written - Any arguments used in formatting the message - - - - Method to write single line message with optional args, usually - written to precede the general failure message, at a givel - indentation level. - - The indentation level of the message - The message to be written - Any arguments used in formatting the message - - - - Display Expected and Actual lines for a constraint. This - is called by MessageWriter's default implementation of - WriteMessageTo and provides the generic two-line display. - - The constraint that failed - - - - Display Expected and Actual lines for given values. This - method may be called by constraints that need more control over - the display of actual and expected values than is provided - by the default implementation. - - The expected value - The actual value causing the failure - - - - Display Expected and Actual lines for given values, including - a tolerance value on the Expected line. - - The expected value - The actual value causing the failure - The tolerance within which the test was made - - - - Display the expected and actual string values on separate lines. - If the mismatch parameter is >=0, an additional line is displayed - line containing a caret that points to the mismatch point. - - The expected string value - The actual string value - The point at which the strings don't match or -1 - If true, case is ignored in locating the point where the strings differ - If true, the strings should be clipped to fit the line - - - - Writes the text for a connector. - - The connector. - - - - Writes the text for a predicate. - - The predicate. - - - - Writes the text for an expected value. - - The expected value. - - - - Writes the text for a modifier - - The modifier. - - - - Writes the text for an actual value. - - The actual value. - - - - Writes the text for a generalized value. - - The value. - - - - Writes the text for a collection value, - starting at a particular point, to a max length - - The collection containing elements to write. - The starting point of the elements to write - The maximum number of elements to write - - - - Abstract method to get the max line length - - - - - Static methods used in creating messages - - - - - Static string used when strings are clipped - - - - - Returns the representation of a type as used in NUnitLite. - This is the same as Type.ToString() except for arrays, - which are displayed with their declared sizes. - - - - - - - Converts any control characters in a string - to their escaped representation. - - The string to be converted - The converted string - - - - Return the a string representation for a set of indices into an array - - Array of indices for which a string is needed - - - - Get an array of indices representing the point in a enumerable, - collection or array corresponding to a single int index into the - collection. - - The collection to which the indices apply - Index in the collection - Array of indices - - - - Clip a string to a given length, starting at a particular offset, returning the clipped - string with ellipses representing the removed parts - - The string to be clipped - The maximum permitted length of the result string - The point at which to start clipping - The clipped string - - - - Clip the expected and actual strings in a coordinated fashion, - so that they may be displayed together. - - - - - - - - - Shows the position two strings start to differ. Comparison - starts at the start index. - - The expected string - The actual string - The index in the strings at which comparison should start - Boolean indicating whether case should be ignored - -1 if no mismatch found, or the index where mismatch found - - - - The Numerics class contains common operations on numeric values. - - - - - Checks the type of the object, returning true if - the object is a numeric type. - - The object to check - true if the object is a numeric type - - - - Checks the type of the object, returning true if - the object is a floating point numeric type. - - The object to check - true if the object is a floating point numeric type - - - - Checks the type of the object, returning true if - the object is a fixed point numeric type. - - The object to check - true if the object is a fixed point numeric type - - - - Test two numeric values for equality, performing the usual numeric - conversions and using a provided or default tolerance. If the tolerance - provided is Empty, this method may set it to a default tolerance. - - The expected value - The actual value - A reference to the tolerance in effect - True if the values are equal - - - - Compare two numeric values, performing the usual numeric conversions. - - The expected value - The actual value - The relationship of the values to each other - - - - NUnitComparer encapsulates NUnit's default behavior - in comparing two objects. - - - - - Compares two objects - - - - - - - - Returns the default NUnitComparer. - - - - - Generic version of NUnitComparer - - - - - - Compare two objects of the same type - - - - - NUnitEqualityComparer encapsulates NUnit's handling of - equality tests between objects. - - - - - - - - - - Compares two objects for equality within a tolerance - - The first object to compare - The second object to compare - The tolerance to use in the comparison - - - - - If true, all string comparisons will ignore case - - - - - If true, arrays will be treated as collections, allowing - those of different dimensions to be compared - - - - - Comparison objects used in comparisons for some constraints. - - - - - Compares two objects for equality within a tolerance. - - - - - Helper method to compare two arrays - - - - - Method to compare two DirectoryInfo objects - - first directory to compare - second directory to compare - true if equivalent, false if not - - - - Returns the default NUnitEqualityComparer - - - - - Gets and sets a flag indicating whether case should - be ignored in determining equality. - - - - - Gets and sets a flag indicating that arrays should be - compared as collections, without regard to their shape. - - - - - Gets and sets an external comparer to be used to - test for equality. It is applied to members of - collections, in place of NUnit's own logic. - - - - - Gets the list of failure points for the last Match performed. - - - - - FailurePoint class represents one point of failure - in an equality test. - - - - - The location of the failure - - - - - The expected value - - - - - The actual value - - - - - Indicates whether the expected value is valid - - - - - Indicates whether the actual value is valid - - - - - PathConstraint serves as the abstract base of constraints - that operate on paths and provides several helper methods. - - - - - The expected path used in the constraint - - - - - The actual path being tested - - - - - Flag indicating whether a caseInsensitive comparison should be made - - - - - Construct a PathConstraint for a give expected path - - The expected path - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Returns true if the expected path and actual path match - - - - - Returns the string representation of this constraint - - - - - Canonicalize the provided path - - - The path in standardized form - - - - Test whether two paths are the same - - The first path - The second path - Indicates whether case should be ignored - - - - - Test whether one path is under another path - - The first path - supposed to be the parent path - The second path - supposed to be the child path - Indicates whether case should be ignored - - - - - Test whether one path is the same as or under another path - - The first path - supposed to be the parent path - The second path - supposed to be the child path - - - - - Modifies the current instance to be case-insensitve - and returns it. - - - - - Modifies the current instance to be case-sensitve - and returns it. - - - - - Summary description for SamePathConstraint. - - - - - Initializes a new instance of the class. - - The expected path - - - - Test whether the constraint is satisfied by a given value - - The expected path - The actual path - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - SubPathConstraint tests that the actual path is under the expected path - - - - - Initializes a new instance of the class. - - The expected path - - - - Test whether the constraint is satisfied by a given value - - The expected path - The actual path - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - SamePathOrUnderConstraint tests that one path is under another - - - - - Initializes a new instance of the class. - - The expected path - - - - Test whether the constraint is satisfied by a given value - - The expected path - The actual path - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Predicate constraint wraps a Predicate in a constraint, - returning success if the predicate is true. - - - - - Construct a PredicateConstraint from a predicate - - - - - Determines whether the predicate succeeds when applied - to the actual value. - - - - - Writes the description to a MessageWriter - - - - - NotConstraint negates the effect of some other constraint - - - - - Initializes a new instance of the class. - - The base constraint to be negated. - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for if the base constraint fails, false if it succeeds - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Write the actual value for a failing constraint test to a MessageWriter. - - The writer on which the actual value is displayed - - - - AllItemsConstraint applies another constraint to each - item in a collection, succeeding if they all succeed. - - - - - Construct an AllItemsConstraint on top of an existing constraint - - - - - - Apply the item constraint to each item in the collection, - failing if any item fails. - - - - - - - Write a description of this constraint to a MessageWriter - - - - - - SomeItemsConstraint applies another constraint to each - item in a collection, succeeding if any of them succeeds. - - - - - Construct a SomeItemsConstraint on top of an existing constraint - - - - - - Apply the item constraint to each item in the collection, - succeeding if any item succeeds. - - - - - - - Write a description of this constraint to a MessageWriter - - - - - - NoItemConstraint applies another constraint to each - item in a collection, failing if any of them succeeds. - - - - - Construct a NoItemConstraint on top of an existing constraint - - - - - - Apply the item constraint to each item in the collection, - failing if any item fails. - - - - - - - Write a description of this constraint to a MessageWriter - - - - - - ExactCoutConstraint applies another constraint to each - item in a collection, succeeding only if a specified - number of items succeed. - - - - - Construct an ExactCountConstraint on top of an existing constraint - - - - - - - Apply the item constraint to each item in the collection, - succeeding only if the expected number of items pass. - - - - - - - Write a description of this constraint to a MessageWriter - - - - - - PropertyExistsConstraint tests that a named property - exists on the object provided through Match. - - Originally, PropertyConstraint provided this feature - in addition to making optional tests on the vaue - of the property. The two constraints are now separate. - - - - - Initializes a new instance of the class. - - The name of the property. - - - - Test whether the property exists for a given object - - The object to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Write the actual value for a failing constraint test to a - MessageWriter. - - The writer on which the actual value is displayed - - - - Returns the string representation of the constraint. - - - - - - PropertyConstraint extracts a named property and uses - its value as the actual value for a chained constraint. - - - - - Initializes a new instance of the class. - - The name. - The constraint to apply to the property. - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. - - The writer on which the actual value is displayed - - - - Returns the string representation of the constraint. - - - - - - RangeConstraint tests whethe two values are within a - specified range. - - - - - Initializes a new instance of the class. - - From. - To. - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - ResolvableConstraintExpression is used to represent a compound - constraint being constructed at a point where the last operator - may either terminate the expression or may have additional - qualifying constraints added to it. - - It is used, for example, for a Property element or for - an Exception element, either of which may be optionally - followed by constraints that apply to the property or - exception. - - - - - Create a new instance of ResolvableConstraintExpression - - - - - Create a new instance of ResolvableConstraintExpression, - passing in a pre-populated ConstraintBuilder. - - - - - Resolve the current expression to a Constraint - - - - - This operator creates a constraint that is satisfied only if both - argument constraints are satisfied. - - - - - This operator creates a constraint that is satisfied only if both - argument constraints are satisfied. - - - - - This operator creates a constraint that is satisfied only if both - argument constraints are satisfied. - - - - - This operator creates a constraint that is satisfied if either - of the argument constraints is satisfied. - - - - - This operator creates a constraint that is satisfied if either - of the argument constraints is satisfied. - - - - - This operator creates a constraint that is satisfied if either - of the argument constraints is satisfied. - - - - - This operator creates a constraint that is satisfied if the - argument constraint is not satisfied. - - - - - Appends an And Operator to the expression - - - - - Appends an Or operator to the expression. - - - - - ReusableConstraint wraps a resolved constraint so that it - may be saved and reused as needed. - - - - - Construct a ReusableConstraint - - The constraint or expression to be reused - - - - Conversion operator from a normal constraint to a ReusableConstraint. - - The original constraint to be wrapped as a ReusableConstraint - - - - - Returns the string representation of the constraint. - - A string representing the constraint - - - - Resolves the ReusableConstraint by returning the constraint - that it originally wrapped. - - A resolved constraint - - - - SameAsConstraint tests whether an object is identical to - the object passed to its constructor - - - - - Initializes a new instance of the class. - - The expected object. - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - BinarySerializableConstraint tests whether - an object is serializable in binary format. - - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. - - The writer on which the actual value is displayed - - - - Returns the string representation - - - - - BinarySerializableConstraint tests whether - an object is serializable in binary format. - - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. - - The writer on which the actual value is displayed - - - - Returns the string representation of this constraint - - - - - StringConstraint is the abstract base for constraints - that operate on strings. It supports the IgnoreCase - modifier for string operations. - - - - - The expected value - - - - - Indicates whether tests should be case-insensitive - - - - - Constructs a StringConstraint given an expected value - - The expected value - - - - Modify the constraint to ignore case in matching. - - - - - EmptyStringConstraint tests whether a string is empty. - - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - NullEmptyStringConstraint tests whether a string is either null or empty. - - - - - Constructs a new NullOrEmptyStringConstraint - - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - SubstringConstraint can test whether a string contains - the expected substring. - - - - - Initializes a new instance of the class. - - The expected. - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - StartsWithConstraint can test whether a string starts - with an expected substring. - - - - - Initializes a new instance of the class. - - The expected string - - - - Test whether the constraint is matched by the actual value. - This is a template method, which calls the IsMatch method - of the derived class. - - - - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - EndsWithConstraint can test whether a string ends - with an expected substring. - - - - - Initializes a new instance of the class. - - The expected string - - - - Test whether the constraint is matched by the actual value. - This is a template method, which calls the IsMatch method - of the derived class. - - - - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - RegexConstraint can test whether a string matches - the pattern provided. - - - - - Initializes a new instance of the class. - - The pattern. - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True for success, false for failure - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - ThrowsConstraint is used to test the exception thrown by - a delegate by applying a constraint to it. - - - - - Initializes a new instance of the class, - using a constraint to be applied to the exception. - - A constraint to apply to the caught exception. - - - - Executes the code of the delegate and captures any exception. - If a non-null base constraint was provided, it applies that - constraint to the exception. - - A delegate representing the code to be tested - True if an exception is thrown and the constraint succeeds, otherwise false - - - - Converts an ActualValueDelegate to a TestDelegate - before calling the primary overload. - - - - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. - - The writer on which the actual value is displayed - - - - Returns the string representation of this constraint - - - - - Get the actual exception thrown - used by Assert.Throws. - - - - - ThrowsNothingConstraint tests that a delegate does not - throw an exception. - - - - - Test whether the constraint is satisfied by a given value - - The value to be tested - True if no exception is thrown, otherwise false - - - - Converts an ActualValueDelegate to a TestDelegate - before calling the primary overload. - - - - - - - Write the constraint description to a MessageWriter - - The writer on which the description is displayed - - - - Write the actual value for a failing constraint test to a - MessageWriter. The default implementation simply writes - the raw value of actual, leaving it to the writer to - perform any formatting. - - The writer on which the actual value is displayed - - - - Modes in which the tolerance value for a comparison can - be interpreted. - - - - - The tolerance was created with a value, without specifying - how the value would be used. This is used to prevent setting - the mode more than once and is generally changed to Linear - upon execution of the test. - - - - - The tolerance is used as a numeric range within which - two compared values are considered to be equal. - - - - - Interprets the tolerance as the percentage by which - the two compared values my deviate from each other. - - - - - Compares two values based in their distance in - representable numbers. - - - - - The Tolerance class generalizes the notion of a tolerance - within which an equality test succeeds. Normally, it is - used with numeric types, but it can be used with any - type that supports taking a difference between two - objects and comparing that difference to a value. - - - - - Constructs a linear tolerance of a specdified amount - - - - - Constructs a tolerance given an amount and ToleranceMode - - - - - Tests that the current Tolerance is linear with a - numeric value, throwing an exception if it is not. - - - - - Returns an empty Tolerance object, equivalent to - specifying no tolerance. In most cases, it results - in an exact match but for floats and doubles a - default tolerance may be used. - - - - - Returns a zero Tolerance object, equivalent to - specifying an exact match. - - - - - Gets the ToleranceMode for the current Tolerance - - - - - Gets the value of the current Tolerance instance. - - - - - Returns a new tolerance, using the current amount as a percentage. - - - - - Returns a new tolerance, using the current amount in Ulps. - - - - - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of days. - - - - - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of hours. - - - - - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of minutes. - - - - - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of seconds. - - - - - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of milliseconds. - - - - - Returns a new tolerance with a TimeSpan as the amount, using - the current amount as a number of clock ticks. - - - - - Returns true if the current tolerance is empty. - - - - - TypeConstraint is the abstract base for constraints - that take a Type as their expected value. - - - - - The expected Type used by the constraint - - - - - Construct a TypeConstraint for a given Type - - - - - - Write the actual value for a failing constraint test to a - MessageWriter. TypeConstraints override this method to write - the name of the type. - - The writer on which the actual value is displayed - - - - ExactTypeConstraint is used to test that an object - is of the exact type provided in the constructor - - - - - Construct an ExactTypeConstraint for a given Type - - The expected Type. - - - - Test that an object is of the exact type specified - - The actual value. - True if the tested object is of the exact type provided, otherwise false. - - - - Write the description of this constraint to a MessageWriter - - The MessageWriter to use - - - - ExceptionTypeConstraint is a special version of ExactTypeConstraint - used to provided detailed info about the exception thrown in - an error message. - - - - - Constructs an ExceptionTypeConstraint - - - - - Write the actual value for a failing constraint test to a - MessageWriter. Overriden to write additional information - in the case of an Exception. - - The MessageWriter to use - - - - InstanceOfTypeConstraint is used to test that an object - is of the same type provided or derived from it. - - - - - Construct an InstanceOfTypeConstraint for the type provided - - The expected Type - - - - Test whether an object is of the specified type or a derived type - - The object to be tested - True if the object is of the provided type or derives from it, otherwise false. - - - - Write a description of this constraint to a MessageWriter - - The MessageWriter to use - - - - AssignableFromConstraint is used to test that an object - can be assigned from a given Type. - - - - - Construct an AssignableFromConstraint for the type provided - - - - - - Test whether an object can be assigned from the specified type - - The object to be tested - True if the object can be assigned a value of the expected Type, otherwise false. - - - - Write a description of this constraint to a MessageWriter - - The MessageWriter to use - - - - AssignableToConstraint is used to test that an object - can be assigned to a given Type. - - - - - Construct an AssignableToConstraint for the type provided - - - - - - Test whether an object can be assigned to the specified type - - The object to be tested - True if the object can be assigned a value of the expected Type, otherwise false. - - - - Write a description of this constraint to a MessageWriter - - The MessageWriter to use - - - - Thrown when an assertion failed. - - - - - The error message that explains - the reason for the exception - - - The error message that explains - the reason for the exception - The exception that caused the - current exception - - - - Serialization Constructor - - - - - Thrown when an assertion failed. - - - - - - - The error message that explains - the reason for the exception - The exception that caused the - current exception - - - - Serialization Constructor - - - - - Thrown when a test executes inconclusively. - - - - - The error message that explains - the reason for the exception - - - The error message that explains - the reason for the exception - The exception that caused the - current exception - - - - Serialization Constructor - - - - - Thrown when an assertion failed. - - - - - - - The error message that explains - the reason for the exception - The exception that caused the - current exception - - - - Serialization Constructor - - - - - - - - - - - Compares two objects of a given Type for equality within a tolerance - - The first object to compare - The second object to compare - The tolerance to use in the comparison - - - - - The different targets a test action attribute can be applied to - - - - - Default target, which is determined by where the action attribute is attached - - - - - Target a individual test case - - - - - Target a suite of test cases - - - - - Delegate used by tests that execute code and - capture any thrown exception. - - - - - The Assert class contains a collection of static methods that - implement the most common assertions used in NUnit. - - - - - We don't actually want any instances of this object, but some people - like to inherit from it to add other static methods. Hence, the - protected constructor disallows any instances of this object. - - - - - The Equals method throws an AssertionException. This is done - to make sure there is no mistake by calling this function. - - - - - - - override the default ReferenceEquals to throw an AssertionException. This - implementation makes sure there is no mistake in calling this function - as part of Assert. - - - - - - - Helper for Assert.AreEqual(double expected, double actual, ...) - allowing code generation to work consistently. - - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Throws a with the message and arguments - that are passed in. This allows a test to be cut short, with a result - of success returned to NUnit. - - The message to initialize the with. - Arguments to be used in formatting the message - - - - Throws a with the message and arguments - that are passed in. This allows a test to be cut short, with a result - of success returned to NUnit. - - The message to initialize the with. - - - - Throws a with the message and arguments - that are passed in. This allows a test to be cut short, with a result - of success returned to NUnit. - - - - - Throws an with the message and arguments - that are passed in. This is used by the other Assert functions. - - The message to initialize the with. - Arguments to be used in formatting the message - - - - Throws an with the message that is - passed in. This is used by the other Assert functions. - - The message to initialize the with. - - - - Throws an . - This is used by the other Assert functions. - - - - - Throws an with the message and arguments - that are passed in. This causes the test to be reported as ignored. - - The message to initialize the with. - Arguments to be used in formatting the message - - - - Throws an with the message that is - passed in. This causes the test to be reported as ignored. - - The message to initialize the with. - - - - Throws an . - This causes the test to be reported as ignored. - - - - - Throws an with the message and arguments - that are passed in. This causes the test to be reported as inconclusive. - - The message to initialize the with. - Arguments to be used in formatting the message - - - - Throws an with the message that is - passed in. This causes the test to be reported as inconclusive. - - The message to initialize the with. - - - - Throws an . - This causes the test to be reported as Inconclusive. - - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint to be applied - The actual value to test - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested - The message that will be displayed on failure - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - An ActualValueDelegate returning the value to be tested - A Constraint expression to be applied - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint to be applied - The actual value to test - - - - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - - - - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display if the condition is false - Arguments to be used in formatting the message - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display if the condition is false - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - - - - Asserts that the code represented by a delegate throws an exception - that satisfies the constraint provided. - - A TestDelegate to be executed - A ThrowsConstraint used in the test - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - Used as a synonym for That in rare cases where a private setter - causes a Visual Basic compilation error. - - A Constraint to be applied - The actual value to test - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - Used as a synonym for That in rare cases where a private setter - causes a Visual Basic compilation error. - - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - Used as a synonym for That in rare cases where a private setter - causes a Visual Basic compilation error. - - - This method is provided for use by VB developers needing to test - the value of properties with private setters. - - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Verifies that a delegate throws a particular exception when called. - - A constraint to be satisfied by the exception - A TestSnippet delegate - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Verifies that a delegate throws a particular exception when called. - - A constraint to be satisfied by the exception - A TestSnippet delegate - The message that will be displayed on failure - - - - Verifies that a delegate throws a particular exception when called. - - A constraint to be satisfied by the exception - A TestSnippet delegate - - - - Verifies that a delegate throws a particular exception when called. - - The exception Type expected - A TestSnippet delegate - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Verifies that a delegate throws a particular exception when called. - - The exception Type expected - A TestSnippet delegate - The message that will be displayed on failure - - - - Verifies that a delegate throws a particular exception when called. - - The exception Type expected - A TestSnippet delegate - - - - Verifies that a delegate throws a particular exception when called. - - Type of the expected exception - A TestSnippet delegate - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Verifies that a delegate throws a particular exception when called. - - Type of the expected exception - A TestSnippet delegate - The message that will be displayed on failure - - - - Verifies that a delegate throws a particular exception when called. - - Type of the expected exception - A TestSnippet delegate - - - - Verifies that a delegate throws an exception when called - and returns it. - - A TestDelegate - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Verifies that a delegate throws an exception when called - and returns it. - - A TestDelegate - The message that will be displayed on failure - - - - Verifies that a delegate throws an exception when called - and returns it. - - A TestDelegate - - - - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. - - The expected Exception Type - A TestDelegate - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. - - The expected Exception Type - A TestDelegate - The message that will be displayed on failure - - - - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. - - The expected Exception Type - A TestDelegate - - - - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. - - The expected Exception Type - A TestDelegate - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. - - The expected Exception Type - A TestDelegate - The message that will be displayed on failure - - - - Verifies that a delegate throws an exception of a certain Type - or one derived from it when called and returns it. - - The expected Exception Type - A TestDelegate - - - - Verifies that a delegate does not throw an exception - - A TestSnippet delegate - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Verifies that a delegate does not throw an exception. - - A TestSnippet delegate - The message that will be displayed on failure - - - - Verifies that a delegate does not throw an exception. - - A TestSnippet delegate - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display in case of failure - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display in case of failure - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - - - - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition - The message to display in case of failure - - - - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition - - - - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition - The message to display in case of failure - - - - Asserts that a condition is false. If the condition is true the method throws - an . - - The evaluated condition - - - - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. - - The object that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. - - The object that is to be tested - The message to display in case of failure - - - - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. - - The object that is to be tested - - - - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. - - The object that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. - - The object that is to be tested - The message to display in case of failure - - - - Verifies that the object that is passed in is not equal to null - If the object is null then an - is thrown. - - The object that is to be tested - - - - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. - - The object that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. - - The object that is to be tested - The message to display in case of failure - - - - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. - - The object that is to be tested - - - - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. - - The object that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. - - The object that is to be tested - The message to display in case of failure - - - - Verifies that the object that is passed in is equal to null - If the object is not null then an - is thrown. - - The object that is to be tested - - - - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. - - The value that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. - - The value that is to be tested - The message to display in case of failure - - - - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. - - The value that is to be tested - - - - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. - - The value that is to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. - - The value that is to be tested - The message to display in case of failure - - - - Verifies that the double that is passed in is an NaN value. - If the object is not NaN then an - is thrown. - - The value that is to be tested - - - - Assert that a string is empty - that is equal to string.Empty - - The string to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Assert that a string is empty - that is equal to string.Empty - - The string to be tested - The message to display in case of failure - - - - Assert that a string is empty - that is equal to string.Empty - - The string to be tested - - - - Assert that an array, list or other collection is empty - - An array, list or other collection implementing ICollection - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Assert that an array, list or other collection is empty - - An array, list or other collection implementing ICollection - The message to display in case of failure - - - - Assert that an array, list or other collection is empty - - An array, list or other collection implementing ICollection - - - - Assert that a string is not empty - that is not equal to string.Empty - - The string to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Assert that a string is not empty - that is not equal to string.Empty - - The string to be tested - The message to display in case of failure - - - - Assert that a string is not empty - that is not equal to string.Empty - - The string to be tested - - - - Assert that an array, list or other collection is not empty - - An array, list or other collection implementing ICollection - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Assert that an array, list or other collection is not empty - - An array, list or other collection implementing ICollection - The message to display in case of failure - - - - Assert that an array, list or other collection is not empty - - An array, list or other collection implementing ICollection - - - - Assert that a string is either null or equal to string.Empty - - The string to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Assert that a string is either null or equal to string.Empty - - The string to be tested - The message to display in case of failure - - - - Assert that a string is either null or equal to string.Empty - - The string to be tested - - - - Assert that a string is not null or empty - - The string to be tested - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Assert that a string is not null or empty - - The string to be tested - The message to display in case of failure - - - - Assert that a string is not null or empty - - The string to be tested - - - - Asserts that an object may be assigned a value of a given Type. - - The expected Type. - The object under examination - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object may be assigned a value of a given Type. - - The expected Type. - The object under examination - The message to display in case of failure - - - - Asserts that an object may be assigned a value of a given Type. - - The expected Type. - The object under examination - - - - Asserts that an object may be assigned a value of a given Type. - - The expected Type. - The object under examination - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object may be assigned a value of a given Type. - - The expected Type. - The object under examination - The message to display in case of failure - - - - Asserts that an object may be assigned a value of a given Type. - - The expected Type. - The object under examination - - - - Asserts that an object may not be assigned a value of a given Type. - - The expected Type. - The object under examination - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object may not be assigned a value of a given Type. - - The expected Type. - The object under examination - The message to display in case of failure - - - - Asserts that an object may not be assigned a value of a given Type. - - The expected Type. - The object under examination - - - - Asserts that an object may not be assigned a value of a given Type. - - The expected Type. - The object under examination - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object may not be assigned a value of a given Type. - - The expected Type. - The object under examination - The message to display in case of failure - - - - Asserts that an object may not be assigned a value of a given Type. - - The expected Type. - The object under examination - - - - Asserts that an object is an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object is an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - - - - Asserts that an object is an instance of a given type. - - The expected Type - The object being examined - - - - Asserts that an object is an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object is an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - - - - Asserts that an object is an instance of a given type. - - The expected Type - The object being examined - - - - Asserts that an object is an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object is an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - - - - Asserts that an object is an instance of a given type. - - The expected Type - The object being examined - - - - Asserts that an object is not an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object is not an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - - - - Asserts that an object is not an instance of a given type. - - The expected Type - The object being examined - - - - Asserts that an object is not an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object is not an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - - - - Asserts that an object is not an instance of a given type. - - The expected Type - The object being examined - - - - Asserts that an object is not an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object is not an instance of a given type. - - The expected Type - The object being examined - The message to display in case of failure - - - - Asserts that an object is not an instance of a given type. - - The expected Type - The object being examined - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are equal. If they are not, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. - - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. - - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - The message to display in case of failure - - - - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. - - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - - - - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. - - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. - - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - The message to display in case of failure - - - - Verifies that two doubles are equal considering a delta. If the - expected value is infinity then the delta value is ignored. If - they are not equal then an is - thrown. - - The expected value - The actual value - The maximum acceptable difference between the - the expected and the actual - - - - Verifies that two objects are equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are not equal an is thrown. - - The value that is expected - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two objects are equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are not equal an is thrown. - - The value that is expected - The actual value - The message to display in case of failure - - - - Verifies that two objects are equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are not equal an is thrown. - - The value that is expected - The actual value - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - The message to display in case of failure - - - - Verifies that two values are not equal. If they are equal, then an - is thrown. - - The expected value - The actual value - - - - Verifies that two objects are not equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are equal an is thrown. - - The value that is expected - The actual value - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that two objects are not equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are equal an is thrown. - - The value that is expected - The actual value - The message to display in case of failure - - - - Verifies that two objects are not equal. Two objects are considered - equal if both are null, or if both have the same value. NUnit - has special semantics for some object types. - If they are equal an is thrown. - - The value that is expected - The actual value - - - - Asserts that two objects refer to the same object. If they - are not the same an is thrown. - - The expected object - The actual object - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that two objects refer to the same object. If they - are not the same an is thrown. - - The expected object - The actual object - The message to display in case of failure - - - - Asserts that two objects refer to the same object. If they - are not the same an is thrown. - - The expected object - The actual object - - - - Asserts that two objects do not refer to the same object. If they - are the same an is thrown. - - The expected object - The actual object - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that two objects do not refer to the same object. If they - are the same an is thrown. - - The expected object - The actual object - The message to display in case of failure - - - - Asserts that two objects do not refer to the same object. If they - are the same an is thrown. - - The expected object - The actual object - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than the second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - The message to display in case of failure - - - - Verifies that the first value is greater than or equal tothe second - value. If it is not, then an - is thrown. - - The first value, expected to be greater - The second value, expected to be less - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - The message to display in case of failure - - - - Verifies that the first value is less than or equal to the second - value. If it is not, then an - is thrown. - - The first value, expected to be less - The second value, expected to be greater - - - - Asserts that an object is contained in a list. - - The expected object - The list to be examined - The message to display in case of failure - Array of objects to be used in formatting the message - - - - Asserts that an object is contained in a list. - - The expected object - The list to be examined - The message to display in case of failure - - - - Asserts that an object is contained in a list. - - The expected object - The list to be examined - - - - Gets the number of assertions executed so far and - resets the counter to zero. - - - - - AssertionHelper is an optional base class for user tests, - allowing the use of shorter names for constraints and - asserts and avoiding conflict with the definition of - , from which it inherits much of its - behavior, in certain mock object frameworks. - - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. Works - identically to Assert.That - - A Constraint to be applied - The actual value to test - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. Works - identically to Assert.That. - - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. Works - identically to Assert.That - - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested - The message that will be displayed on failure - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - An ActualValueDelegate returning the value to be tested - A Constraint expression to be applied - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint to be applied - The actual value to test - - - - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - - - - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an assertion exception on failure. - - A Constraint to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that a condition is true. If the condition is false the method throws - an . Works Identically to Assert.That. - - The evaluated condition - The message to display if the condition is false - Arguments to be used in formatting the message - - - - Asserts that a condition is true. If the condition is false the method throws - an . Works Identically to Assert.That. - - The evaluated condition - The message to display if the condition is false - - - - Asserts that a condition is true. If the condition is false the method throws - an . Works Identically Assert.That. - - The evaluated condition - - - - Asserts that the code represented by a delegate throws an exception - that satisfies the constraint provided. - - A TestDelegate to be executed - A ThrowsConstraint used in the test - - - - Returns a ListMapper based on a collection. - - The original collection - - - - - Provides static methods to express the assumptions - that must be met for a test to give a meaningful - result. If an assumption is not met, the test - should produce an inconclusive result. - - - - - The Equals method throws an AssertionException. This is done - to make sure there is no mistake by calling this function. - - - - - - - override the default ReferenceEquals to throw an AssertionException. This - implementation makes sure there is no mistake in calling this function - as part of Assert. - - - - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. - - A Constraint expression to be applied - The actual value to test - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. - - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. - - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. - - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. - - A Constraint expression to be applied - An ActualValueDelegate returning the value to be tested - The message that will be displayed on failure - - - - Apply a constraint to an actual value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. - - An ActualValueDelegate returning the value to be tested - A Constraint expression to be applied - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. - - A Constraint expression to be applied - The actual value to test - - - - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. - - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure - - - - Apply a constraint to a referenced value, succeeding if the constraint - is satisfied and throwing an InconclusiveException on failure. - - A Constraint expression to be applied - The actual value to test - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display if the condition is false - Arguments to be used in formatting the message - - - - Asserts that a condition is true. If the condition is false the method throws - an . - - The evaluated condition - The message to display if the condition is false - - - - Asserts that a condition is true. If the condition is false the - method throws an . - - The evaluated condition - - - - Asserts that the code represented by a delegate throws an exception - that satisfies the constraint provided. - - A TestDelegate to be executed - A ThrowsConstraint used in the test - - - - A set of Assert methods operationg on one or more collections - - - - - The Equals method throws an AssertionException. This is done - to make sure there is no mistake by calling this function. - - - - - - - override the default ReferenceEquals to throw an AssertionException. This - implementation makes sure there is no mistake in calling this function - as part of Assert. - - - - - - - Asserts that all items contained in collection are of the type specified by expectedType. - - IEnumerable containing objects to be considered - System.Type that all objects in collection must be instances of - - - - Asserts that all items contained in collection are of the type specified by expectedType. - - IEnumerable containing objects to be considered - System.Type that all objects in collection must be instances of - The message that will be displayed on failure - - - - Asserts that all items contained in collection are of the type specified by expectedType. - - IEnumerable containing objects to be considered - System.Type that all objects in collection must be instances of - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that all items contained in collection are not equal to null. - - IEnumerable containing objects to be considered - - - - Asserts that all items contained in collection are not equal to null. - - IEnumerable containing objects to be considered - The message that will be displayed on failure - - - - Asserts that all items contained in collection are not equal to null. - - IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Ensures that every object contained in collection exists within the collection - once and only once. - - IEnumerable of objects to be considered - - - - Ensures that every object contained in collection exists within the collection - once and only once. - - IEnumerable of objects to be considered - The message that will be displayed on failure - - - - Ensures that every object contained in collection exists within the collection - once and only once. - - IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - - - - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. - If comparer is not null then it will be used to compare the objects. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - - - - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - - - - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. - If comparer is not null then it will be used to compare the objects. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - The message that will be displayed on failure - - - - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that expected and actual are exactly equal. The collections must have the same count, - and contain the exact same objects in the same order. - If comparer is not null then it will be used to compare the objects. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - - - - Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - - - - Asserts that expected and actual are equivalent, containing the same objects but the match may be in any order. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that expected and actual are not exactly equal. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - - - - Asserts that expected and actual are not exactly equal. - If comparer is not null then it will be used to compare the objects. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - - - - Asserts that expected and actual are not exactly equal. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - - - - Asserts that expected and actual are not exactly equal. - If comparer is not null then it will be used to compare the objects. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - The message that will be displayed on failure - - - - Asserts that expected and actual are not exactly equal. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that expected and actual are not exactly equal. - If comparer is not null then it will be used to compare the objects. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The IComparer to use in comparing objects from each IEnumerable - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that expected and actual are not equivalent. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - - - - Asserts that expected and actual are not equivalent. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - - - - Asserts that expected and actual are not equivalent. - - The first IEnumerable of objects to be considered - The second IEnumerable of objects to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that collection contains actual as an item. - - IEnumerable of objects to be considered - Object to be found within collection - - - - Asserts that collection contains actual as an item. - - IEnumerable of objects to be considered - Object to be found within collection - The message that will be displayed on failure - - - - Asserts that collection contains actual as an item. - - IEnumerable of objects to be considered - Object to be found within collection - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that collection does not contain actual as an item. - - IEnumerable of objects to be considered - Object that cannot exist within collection - - - - Asserts that collection does not contain actual as an item. - - IEnumerable of objects to be considered - Object that cannot exist within collection - The message that will be displayed on failure - - - - Asserts that collection does not contain actual as an item. - - IEnumerable of objects to be considered - Object that cannot exist within collection - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that superset is not a subject of subset. - - The IEnumerable superset to be considered - The IEnumerable subset to be considered - - - - Asserts that superset is not a subject of subset. - - The IEnumerable superset to be considered - The IEnumerable subset to be considered - The message that will be displayed on failure - - - - Asserts that superset is not a subject of subset. - - The IEnumerable superset to be considered - The IEnumerable subset to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Asserts that superset is a subset of subset. - - The IEnumerable superset to be considered - The IEnumerable subset to be considered - - - - Asserts that superset is a subset of subset. - - The IEnumerable superset to be considered - The IEnumerable subset to be considered - The message that will be displayed on failure - - - - Asserts that superset is a subset of subset. - - The IEnumerable superset to be considered - The IEnumerable subset to be considered - The message that will be displayed on failure - Arguments to be used in formatting the message - - - - Assert that an array, list or other collection is empty - - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - Arguments to be used in formatting the message - - - - Assert that an array, list or other collection is empty - - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - - - - Assert that an array,list or other collection is empty - - An array, list or other collection implementing IEnumerable - - - - Assert that an array, list or other collection is empty - - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - Arguments to be used in formatting the message - - - - Assert that an array, list or other collection is empty - - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - - - - Assert that an array,list or other collection is empty - - An array, list or other collection implementing IEnumerable - - - - Assert that an array, list or other collection is ordered - - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - Arguments to be used in formatting the message - - - - Assert that an array, list or other collection is ordered - - An array, list or other collection implementing IEnumerable - The message to be displayed on failure - - - - Assert that an array, list or other collection is ordered - - An array, list or other collection implementing IEnumerable - - - - Assert that an array, list or other collection is ordered - - An array, list or other collection implementing IEnumerable - A custom comparer to perform the comparisons - The message to be displayed on failure - Arguments to be used in formatting the message - - - - Assert that an array, list or other collection is ordered - - An array, list or other collection implementing IEnumerable - A custom comparer to perform the comparisons - The message to be displayed on failure - - - - Assert that an array, list or other collection is ordered - - An array, list or other collection implementing IEnumerable - A custom comparer to perform the comparisons - - - - Static helper class used in the constraint-based syntax - - - - - Creates a new SubstringConstraint - - The value of the substring - A SubstringConstraint - - - - Creates a new CollectionContainsConstraint. - - The item that should be found. - A new CollectionContainsConstraint - - - - Summary description for DirectoryAssert - - - - - The Equals method throws an AssertionException. This is done - to make sure there is no mistake by calling this function. - - - - - - - override the default ReferenceEquals to throw an AssertionException. This - implementation makes sure there is no mistake in calling this function - as part of Assert. - - - - - - - We don't actually want any instances of this object, but some people - like to inherit from it to add other static methods. Hence, the - protected constructor disallows any instances of this object. - - - - - Verifies that two directories are equal. Two directories are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - A directory containing the value that is expected - A directory containing the actual value - The message to display if directories are not equal - Arguments to be used in formatting the message - - - - Verifies that two directories are equal. Two directories are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - A directory containing the value that is expected - A directory containing the actual value - The message to display if directories are not equal - - - - Verifies that two directories are equal. Two directories are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - A directory containing the value that is expected - A directory containing the actual value - - - - Verifies that two directories are equal. Two directories are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - A directory path string containing the value that is expected - A directory path string containing the actual value - The message to display if directories are not equal - Arguments to be used in formatting the message - - - - Verifies that two directories are equal. Two directories are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - A directory path string containing the value that is expected - A directory path string containing the actual value - The message to display if directories are not equal - - - - Verifies that two directories are equal. Two directories are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - A directory path string containing the value that is expected - A directory path string containing the actual value - - - - Asserts that two directories are not equal. If they are equal - an is thrown. - - A directory containing the value that is expected - A directory containing the actual value - The message to display if directories are not equal - Arguments to be used in formatting the message - - - - Asserts that two directories are not equal. If they are equal - an is thrown. - - A directory containing the value that is expected - A directory containing the actual value - The message to display if directories are not equal - - - - Asserts that two directories are not equal. If they are equal - an is thrown. - - A directory containing the value that is expected - A directory containing the actual value - - - - Asserts that two directories are not equal. If they are equal - an is thrown. - - A directory path string containing the value that is expected - A directory path string containing the actual value - The message to display if directories are equal - Arguments to be used in formatting the message - - - - Asserts that two directories are not equal. If they are equal - an is thrown. - - A directory path string containing the value that is expected - A directory path string containing the actual value - The message to display if directories are equal - - - - Asserts that two directories are not equal. If they are equal - an is thrown. - - A directory path string containing the value that is expected - A directory path string containing the actual value - - - - Asserts that the directory is empty. If it is not empty - an is thrown. - - A directory to search - The message to display if directories are not equal - Arguments to be used in formatting the message - - - - Asserts that the directory is empty. If it is not empty - an is thrown. - - A directory to search - The message to display if directories are not equal - - - - Asserts that the directory is empty. If it is not empty - an is thrown. - - A directory to search - - - - Asserts that the directory is empty. If it is not empty - an is thrown. - - A directory to search - The message to display if directories are not equal - Arguments to be used in formatting the message - - - - Asserts that the directory is empty. If it is not empty - an is thrown. - - A directory to search - The message to display if directories are not equal - - - - Asserts that the directory is empty. If it is not empty - an is thrown. - - A directory to search - - - - Asserts that the directory is not empty. If it is empty - an is thrown. - - A directory to search - The message to display if directories are not equal - Arguments to be used in formatting the message - - - - Asserts that the directory is not empty. If it is empty - an is thrown. - - A directory to search - The message to display if directories are not equal - - - - Asserts that the directory is not empty. If it is empty - an is thrown. - - A directory to search - - - - Asserts that the directory is not empty. If it is empty - an is thrown. - - A directory to search - The message to display if directories are not equal - Arguments to be used in formatting the message - - - - Asserts that the directory is not empty. If it is empty - an is thrown. - - A directory to search - The message to display if directories are not equal - - - - Asserts that the directory is not empty. If it is empty - an is thrown. - - A directory to search - - - - Asserts that path contains actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - Arguments to be used in formatting the message - - - - Asserts that path contains actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - - - - Asserts that path contains actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - - - - Asserts that path contains actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - Arguments to be used in formatting the message - - - - Asserts that path contains actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - - - - Asserts that path contains actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - - - - Asserts that path does not contain actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - Arguments to be used in formatting the message - - - - Asserts that path does not contain actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - - - - Asserts that path does not contain actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - - - - Asserts that path does not contain actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - Arguments to be used in formatting the message - - - - Asserts that path does not contain actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - The message to display if directory is not within the path - - - - Asserts that path does not contain actual as a subdirectory or - an is thrown. - - A directory to search - sub-directory asserted to exist under directory - - - - Summary description for FileAssert. - - - - - The Equals method throws an AssertionException. This is done - to make sure there is no mistake by calling this function. - - - - - - - override the default ReferenceEquals to throw an AssertionException. This - implementation makes sure there is no mistake in calling this function - as part of Assert. - - - - - - - We don't actually want any instances of this object, but some people - like to inherit from it to add other static methods. Hence, the - protected constructor disallows any instances of this object. - - - - - Verifies that two Streams are equal. Two Streams are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - The expected Stream - The actual Stream - The message to display if Streams are not equal - Arguments to be used in formatting the message - - - - Verifies that two Streams are equal. Two Streams are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - The expected Stream - The actual Stream - The message to display if objects are not equal - - - - Verifies that two Streams are equal. Two Streams are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - The expected Stream - The actual Stream - - - - Verifies that two files are equal. Two files are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - A file containing the value that is expected - A file containing the actual value - The message to display if Streams are not equal - Arguments to be used in formatting the message - - - - Verifies that two files are equal. Two files are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - A file containing the value that is expected - A file containing the actual value - The message to display if objects are not equal - - - - Verifies that two files are equal. Two files are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - A file containing the value that is expected - A file containing the actual value - - - - Verifies that two files are equal. Two files are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - The path to a file containing the value that is expected - The path to a file containing the actual value - The message to display if Streams are not equal - Arguments to be used in formatting the message - - - - Verifies that two files are equal. Two files are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - The path to a file containing the value that is expected - The path to a file containing the actual value - The message to display if objects are not equal - - - - Verifies that two files are equal. Two files are considered - equal if both are null, or if both have the same value byte for byte. - If they are not equal an is thrown. - - The path to a file containing the value that is expected - The path to a file containing the actual value - - - - Asserts that two Streams are not equal. If they are equal - an is thrown. - - The expected Stream - The actual Stream - The message to be displayed when the two Stream are the same. - Arguments to be used in formatting the message - - - - Asserts that two Streams are not equal. If they are equal - an is thrown. - - The expected Stream - The actual Stream - The message to be displayed when the Streams are the same. - - - - Asserts that two Streams are not equal. If they are equal - an is thrown. - - The expected Stream - The actual Stream - - - - Asserts that two files are not equal. If they are equal - an is thrown. - - A file containing the value that is expected - A file containing the actual value - The message to display if Streams are not equal - Arguments to be used in formatting the message - - - - Asserts that two files are not equal. If they are equal - an is thrown. - - A file containing the value that is expected - A file containing the actual value - The message to display if objects are not equal - - - - Asserts that two files are not equal. If they are equal - an is thrown. - - A file containing the value that is expected - A file containing the actual value - - - - Asserts that two files are not equal. If they are equal - an is thrown. - - The path to a file containing the value that is expected - The path to a file containing the actual value - The message to display if Streams are not equal - Arguments to be used in formatting the message - - - - Asserts that two files are not equal. If they are equal - an is thrown. - - The path to a file containing the value that is expected - The path to a file containing the actual value - The message to display if objects are not equal - - - - Asserts that two files are not equal. If they are equal - an is thrown. - - The path to a file containing the value that is expected - The path to a file containing the actual value - - - - GlobalSettings is a place for setting default values used - by the framework in performing asserts. - - - - - Default tolerance for floating point equality - - - - - Helper class with properties and methods that supply - a number of constraints used in Asserts. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding only if a specified number of them succeed. - - - - - Returns a new PropertyConstraintExpression, which will either - test for the existence of the named property on the object - being tested or apply any following constraint to that property. - - - - - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. - - - - - Returns a new AttributeConstraint checking for the - presence of a particular attribute on an object. - - - - - Returns a new CollectionContainsConstraint checking for the - presence of a particular object in the collection. - - - - - Returns a ConstraintExpression that negates any - following constraint. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them succeed. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if at least one of them succeeds. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them fail. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the Length property of the object being tested. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the Count property of the object being tested. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the Message property of the object being tested. - - - - - Returns a new ConstraintExpression, which will apply the following - constraint to the InnerException property of the object being tested. - - - - - Interface implemented by a user fixture in order to - validate any expected exceptions. It is only called - for test methods marked with the ExpectedException - attribute. - - - - - Method to handle an expected exception - - The exception to be handled - - - - Helper class with properties and methods that supply - a number of constraints used in Asserts. - - - - - Returns a constraint that tests two items for equality - - - - - Returns a constraint that tests that two references are the same object - - - - - Returns a constraint that tests whether the - actual value is greater than the suppled argument - - - - - Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument - - - - - Returns a constraint that tests whether the - actual value is greater than or equal to the suppled argument - - - - - Returns a constraint that tests whether the - actual value is less than the suppled argument - - - - - Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument - - - - - Returns a constraint that tests whether the - actual value is less than or equal to the suppled argument - - - - - Returns a constraint that tests whether the actual - value is of the exact type supplied as an argument. - - - - - Returns a constraint that tests whether the actual - value is of the exact type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is of the type supplied as an argument or a derived type. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is assignable from the type supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is a collection containing the same elements as the - collection supplied as an argument. - - - - - Returns a constraint that tests whether the actual value - is a subset of the collection supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value matches the Regex pattern supplied as an argument. - - - - - Returns a constraint that tests whether the path provided - is the same as an expected path after canonicalization. - - - - - Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. - - - - - Returns a constraint that tests whether the path provided - is the same path or under an expected path after canonicalization. - - - - - Returns a constraint that tests whether the actual value falls - within a specified range. - - - - - Returns a ConstraintExpression that negates any - following constraint. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them succeed. - - - - - Returns a constraint that tests for null - - - - - Returns a constraint that tests for True - - - - - Returns a constraint that tests for False - - - - - Returns a constraint that tests for a positive value - - - - - Returns a constraint that tests for a negative value - - - - - Returns a constraint that tests for NaN - - - - - Returns a constraint that tests for empty - - - - - Returns a constraint that tests whether a collection - contains all unique items. - - - - - Returns a constraint that tests whether an object graph is serializable in binary format. - - - - - Returns a constraint that tests whether an object graph is serializable in xml format. - - - - - Returns a constraint that tests whether a collection is ordered - - - - - The Iz class is a synonym for Is intended for use in VB, - which regards Is as a keyword. - - - - - The List class is a helper class with properties and methods - that supply a number of constraints used with lists and collections. - - - - - List.Map returns a ListMapper, which can be used to map - the original collection to another collection. - - - - - - - ListMapper is used to transform a collection used as an actual argument - producing another collection to be used in the assertion. - - - - - Construct a ListMapper based on a collection - - The collection to be transformed - - - - Produces a collection containing all the values of a property - - The collection of property values - - - - - Randomizer returns a set of random values in a repeatable - way, to allow re-running of tests if necessary. - - - - - Get a randomizer for a particular member, returning - one that has already been created if it exists. - This ensures that the same values are generated - each time the tests are reloaded. - - - - - Get a randomizer for a particular parameter, returning - one that has already been created if it exists. - This ensures that the same values are generated - each time the tests are reloaded. - - - - - Construct a randomizer using a random seed - - - - - Construct a randomizer using a specified seed - - - - - Return an array of random doubles between 0.0 and 1.0. - - - - - - - Return an array of random doubles with values in a specified range. - - - - - Return an array of random ints with values in a specified range. - - - - - Get a random seed for use in creating a randomizer. - - - - - The SpecialValue enum is used to represent TestCase arguments - that cannot be used as arguments to an Attribute. - - - - - Null represents a null value, which cannot be used as an - argument to an attriute under .NET 1.x - - - - - Basic Asserts on strings. - - - - - The Equals method throws an AssertionException. This is done - to make sure there is no mistake by calling this function. - - - - - - - override the default ReferenceEquals to throw an AssertionException. This - implementation makes sure there is no mistake in calling this function - as part of Assert. - - - - - - - Asserts that a string is found within another string. - - The expected string - The string to be examined - The message to display in case of failure - Arguments used in formatting the message - - - - Asserts that a string is found within another string. - - The expected string - The string to be examined - The message to display in case of failure - - - - Asserts that a string is found within another string. - - The expected string - The string to be examined - - - - Asserts that a string is not found within another string. - - The expected string - The string to be examined - The message to display in case of failure - Arguments used in formatting the message - - - - Asserts that a string is found within another string. - - The expected string - The string to be examined - The message to display in case of failure - - - - Asserts that a string is found within another string. - - The expected string - The string to be examined - - - - Asserts that a string starts with another string. - - The expected string - The string to be examined - The message to display in case of failure - Arguments used in formatting the message - - - - Asserts that a string starts with another string. - - The expected string - The string to be examined - The message to display in case of failure - - - - Asserts that a string starts with another string. - - The expected string - The string to be examined - - - - Asserts that a string does not start with another string. - - The expected string - The string to be examined - The message to display in case of failure - Arguments used in formatting the message - - - - Asserts that a string does not start with another string. - - The expected string - The string to be examined - The message to display in case of failure - - - - Asserts that a string does not start with another string. - - The expected string - The string to be examined - - - - Asserts that a string ends with another string. - - The expected string - The string to be examined - The message to display in case of failure - Arguments used in formatting the message - - - - Asserts that a string ends with another string. - - The expected string - The string to be examined - The message to display in case of failure - - - - Asserts that a string ends with another string. - - The expected string - The string to be examined - - - - Asserts that a string does not end with another string. - - The expected string - The string to be examined - The message to display in case of failure - Arguments used in formatting the message - - - - Asserts that a string does not end with another string. - - The expected string - The string to be examined - The message to display in case of failure - - - - Asserts that a string does not end with another string. - - The expected string - The string to be examined - - - - Asserts that two strings are equal, without regard to case. - - The expected string - The actual string - The message to display in case of failure - Arguments used in formatting the message - - - - Asserts that two strings are equal, without regard to case. - - The expected string - The actual string - The message to display in case of failure - - - - Asserts that two strings are equal, without regard to case. - - The expected string - The actual string - - - - Asserts that two strings are not equal, without regard to case. - - The expected string - The actual string - The message to display in case of failure - Arguments used in formatting the message - - - - Asserts that two strings are Notequal, without regard to case. - - The expected string - The actual string - The message to display in case of failure - - - - Asserts that two strings are not equal, without regard to case. - - The expected string - The actual string - - - - Asserts that a string matches an expected regular expression pattern. - - The regex pattern to be matched - The actual string - The message to display in case of failure - Arguments used in formatting the message - - - - Asserts that a string matches an expected regular expression pattern. - - The regex pattern to be matched - The actual string - The message to display in case of failure - - - - Asserts that a string matches an expected regular expression pattern. - - The regex pattern to be matched - The actual string - - - - Asserts that a string does not match an expected regular expression pattern. - - The regex pattern to be used - The actual string - The message to display in case of failure - Arguments used in formatting the message - - - - Asserts that a string does not match an expected regular expression pattern. - - The regex pattern to be used - The actual string - The message to display in case of failure - - - - Asserts that a string does not match an expected regular expression pattern. - - The regex pattern to be used - The actual string - - - - The TestCaseData class represents a set of arguments - and other parameter info to be used for a parameterized - test case. It provides a number of instance modifiers - for use in initializing the test case. - - Note: Instance modifiers are getters that return - the same instance after modifying it's state. - - - - - The argument list to be provided to the test - - - - - The expected result to be returned - - - - - Set to true if this has an expected result - - - - - The expected exception Type - - - - - The FullName of the expected exception - - - - - The name to be used for the test - - - - - The description of the test - - - - - A dictionary of properties, used to add information - to tests without requiring the class to change. - - - - - If true, indicates that the test case is to be ignored - - - - - If true, indicates that the test case is marked explicit - - - - - The reason for ignoring a test case - - - - - Initializes a new instance of the class. - - The arguments. - - - - Initializes a new instance of the class. - - The argument. - - - - Initializes a new instance of the class. - - The first argument. - The second argument. - - - - Initializes a new instance of the class. - - The first argument. - The second argument. - The third argument. - - - - Sets the expected result for the test - - The expected result - A modified TestCaseData - - - - Sets the expected exception type for the test - - Type of the expected exception. - The modified TestCaseData instance - - - - Sets the expected exception type for the test - - FullName of the expected exception. - The modified TestCaseData instance - - - - Sets the name of the test case - - The modified TestCaseData instance - - - - Sets the description for the test case - being constructed. - - The description. - The modified TestCaseData instance. - - - - Applies a category to the test - - - - - - - Applies a named property to the test - - - - - - - - Applies a named property to the test - - - - - - - - Applies a named property to the test - - - - - - - - Ignores this TestCase. - - - - - - Ignores this TestCase, specifying the reason. - - The reason. - - - - - Marks this TestCase as Explicit - - - - - - Marks this TestCase as Explicit, specifying the reason. - - The reason. - - - - - Gets the argument list to be provided to the test - - - - - Gets the expected result - - - - - Returns true if the result has been set - - - - - Gets the expected exception Type - - - - - Gets the FullName of the expected exception - - - - - Gets the name to be used for the test - - - - - Gets the description of the test - - - - - Gets a value indicating whether this is ignored. - - true if ignored; otherwise, false. - - - - Gets a value indicating whether this is explicit. - - true if explicit; otherwise, false. - - - - Gets the ignore reason. - - The ignore reason. - - - - Gets a list of categories associated with this test. - - - - - Gets the property dictionary for this test - - - - - Provide the context information of the current test - - - - - Constructs a TestContext using the provided context dictionary - - A context dictionary - - - - Get the current test context. This is created - as needed. The user may save the context for - use within a test, but it should not be used - outside the test for which it is created. - - - - - Gets a TestAdapter representing the currently executing test in this context. - - - - - Gets a ResultAdapter representing the current result for the test - executing in this context. - - - - - Gets the directory containing the current test assembly. - - - - - Gets the directory to be used for outputing files created - by this test run. - - - - - TestAdapter adapts a Test for consumption by - the user test code. - - - - - Constructs a TestAdapter for this context - - The context dictionary - - - - The name of the test. - - - - - The FullName of the test - - - - - The properties of the test. - - - - - ResultAdapter adapts a TestResult for consumption by - the user test code. - - - - - Construct a ResultAdapter for a context - - The context holding the result - - - - The TestState of current test. This maps to the ResultState - used in nunit.core and is subject to change in the future. - - - - - The TestStatus of current test. This enum will be used - in future versions of NUnit and so is to be preferred - to the TestState value. - - - - - Provides details about a test - - - - - Creates an instance of TestDetails - - The fixture that the test is a member of, if available. - The method that implements the test, if available. - The full name of the test. - A string representing the type of test, e.g. "Test Case". - Indicates if the test represents a suite of tests. - - - - The fixture that the test is a member of, if available. - - - - - The method that implements the test, if available. - - - - - The full name of the test. - - - - - A string representing the type of test, e.g. "Test Case". - - - - - Indicates if the test represents a suite of tests. - - - - - The ResultState enum indicates the result of running a test - - - - - The result is inconclusive - - - - - The test was not runnable. - - - - - The test has been skipped. - - - - - The test has been ignored. - - - - - The test succeeded - - - - - The test failed - - - - - The test encountered an unexpected exception - - - - - The test was cancelled by the user - - - - - The TestStatus enum indicates the result of running a test - - - - - The test was inconclusive - - - - - The test has skipped - - - - - The test succeeded - - - - - The test failed - - - - - Helper class with static methods used to supply constraints - that operate on strings. - - - - - Returns a constraint that succeeds if the actual - value contains the substring supplied as an argument. - - - - - Returns a constraint that fails if the actual - value contains the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value starts with the substring supplied as an argument. - - - - - Returns a constraint that fails if the actual - value starts with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value ends with the substring supplied as an argument. - - - - - Returns a constraint that fails if the actual - value ends with the substring supplied as an argument. - - - - - Returns a constraint that succeeds if the actual - value matches the Regex pattern supplied as an argument. - - - - - Returns a constraint that fails if the actual - value matches the pattern supplied as an argument. - - - - - Returns a ConstraintExpression, which will apply - the following constraint to all members of a collection, - succeeding if all of them succeed. - - - - - TextMessageWriter writes constraint descriptions and messages - in displayable form as a text stream. It tailors the display - of individual message components to form the standard message - format of NUnit assertion failure messages. - - - - - Prefix used for the expected value line of a message - - - - - Prefix used for the actual value line of a message - - - - - Length of a message prefix - - - - - Construct a TextMessageWriter - - - - - Construct a TextMessageWriter, specifying a user message - and optional formatting arguments. - - - - - - - Method to write single line message with optional args, usually - written to precede the general failure message, at a givel - indentation level. - - The indentation level of the message - The message to be written - Any arguments used in formatting the message - - - - Display Expected and Actual lines for a constraint. This - is called by MessageWriter's default implementation of - WriteMessageTo and provides the generic two-line display. - - The constraint that failed - - - - Display Expected and Actual lines for given values. This - method may be called by constraints that need more control over - the display of actual and expected values than is provided - by the default implementation. - - The expected value - The actual value causing the failure - - - - Display Expected and Actual lines for given values, including - a tolerance value on the expected line. - - The expected value - The actual value causing the failure - The tolerance within which the test was made - - - - Display the expected and actual string values on separate lines. - If the mismatch parameter is >=0, an additional line is displayed - line containing a caret that points to the mismatch point. - - The expected string value - The actual string value - The point at which the strings don't match or -1 - If true, case is ignored in string comparisons - If true, clip the strings to fit the max line length - - - - Writes the text for a connector. - - The connector. - - - - Writes the text for a predicate. - - The predicate. - - - - Write the text for a modifier. - - The modifier. - - - - Writes the text for an expected value. - - The expected value. - - - - Writes the text for an actual value. - - The actual value. - - - - Writes the text for a generalized value. - - The value. - - - - Writes the text for a collection value, - starting at a particular point, to a max length - - The collection containing elements to write. - The starting point of the elements to write - The maximum number of elements to write - - - - Write the generic 'Expected' line for a constraint - - The constraint that failed - - - - Write the generic 'Expected' line for a given value - - The expected value - - - - Write the generic 'Expected' line for a given value - and tolerance. - - The expected value - The tolerance within which the test was made - - - - Write the generic 'Actual' line for a constraint - - The constraint for which the actual value is to be written - - - - Write the generic 'Actual' line for a given value - - The actual value causing a failure - - - - Gets or sets the maximum line length for this writer - - - - - Helper class with properties and methods that supply - constraints that operate on exceptions. - - - - - Creates a constraint specifying the exact type of exception expected - - - - - Creates a constraint specifying the exact type of exception expected - - - - - Creates a constraint specifying the type of exception expected - - - - - Creates a constraint specifying the type of exception expected - - - - - Creates a constraint specifying an expected exception - - - - - Creates a constraint specifying an exception with a given InnerException - - - - - Creates a constraint specifying an expected TargetInvocationException - - - - - Creates a constraint specifying an expected TargetInvocationException - - - - - Creates a constraint specifying an expected TargetInvocationException - - - - - Creates a constraint specifying that no exception is thrown - - - - diff --git a/packages/NUnit.2.6.2/license.txt b/packages/NUnit.2.6.2/license.txt deleted file mode 100644 index 724e465..0000000 --- a/packages/NUnit.2.6.2/license.txt +++ /dev/null @@ -1,15 +0,0 @@ -Copyright © 2002-2012 Charlie Poole -Copyright © 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov -Copyright © 2000-2002 Philip A. Craig - -This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. - -Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: - -1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment (see the following) in the product documentation is required. - -Portions Copyright © 2002-2012 Charlie Poole or Copyright © 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov or Copyright © 2000-2002 Philip A. Craig - -2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. - -3. This notice may not be removed or altered from any source distribution. diff --git a/packages/Should.1.1.12.0/Should.1.1.12.0.nupkg b/packages/Should.1.1.12.0/Should.1.1.12.0.nupkg deleted file mode 100644 index 9149a1f9576b7eae1ed6c45c1c9656d7ed4d867f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16895 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 diff --git a/packages/Should.1.1.12.0/Should.1.1.12.0.nuspec b/packages/Should.1.1.12.0/Should.1.1.12.0.nuspec deleted file mode 100644 index 1f0efe7..0000000 --- a/packages/Should.1.1.12.0/Should.1.1.12.0.nuspec +++ /dev/null @@ -1,16 +0,0 @@ - - - - Should - 1.1.12.0 - Should - Eric Hexter - Eric Hexter - false - The Should Assertion Library provides a set of extension methods for test assertions for AAA and BDD style tests. It provides assertions only, and as a result it is Test runner agnostic. The assertions are a direct fork of the xUnit test assertions. This project was born because test runners Should be independent of the the assertions! - The Should Assertion Library provides a set of extension methods for test assertions for AAA and BDD style tests. It provides assertions only, and as a result it is Test runner agnostic. The assertions are a direct fork of the xUnit test assertions. This project was born because test runners Should be independent of the the assertions! - - - - - \ No newline at end of file diff --git a/packages/Should.1.1.12.0/lib/Should.dll b/packages/Should.1.1.12.0/lib/Should.dll deleted file mode 100644 index f0f7443db0146b44fcf5f4feabb820cb2a40b028..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26624 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 P{yPui|LgvrwZQ)YBF;|S diff --git a/packages/repositories.config b/packages/repositories.config deleted file mode 100644 index ca49c01..0000000 --- a/packages/repositories.config +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file