text:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using TestFirst.Net.Lang;
using TestFirst.Net.Matcher.Internal;

namespace TestFirst.Net.Matcher
{
    /// <summary>
    /// Usage:
    /// <para>
    /// AList
    ///     .InOrder()
    ///         .WithOnly(AString.containing("x"))
    ///         .And(AString.EqualTo("foo"))
    /// </para>
    /// </summary>
    public static class AList
    {
        // ReSharper enable PossibleMultipleEnumeration
        public interface IListMatcher<in T> : IMatcher<IEnumerable<T>>, IMatcher<IEnumerable>, IMatcher
        {
        }

        /// <summary>
        /// A list matcher which can have additional matchers added
        /// </summary>
        /// <typeparam name="T">The type being matched</typeparam>
        public interface IAcceptMoreMatchers<T> : IListMatcher<T>
        {
            IAcceptMoreMatchers<T> And(IMatcher<T> itemMatcher);
        }

        public static ListOfMatchBuilder<int> OfInts()
        {
            return Of<int>();
        }

        public static ListOfMatchBuilder<DateTime> OfDateTimes()
        {
            return Of<DateTime>();
        }

        public static ListOfMatchBuilder<DateTimeOffset> OfDateTimeOffsets()
        {
            return Of<DateTimeOffset>();
        }

        public static ListOfMatchBuilder<Guid> OfGuids()
        {
            return Of<Guid>();
        }

        public static ListOfMatchBuilder<float> OfFloats()
        {
            return Of<float>();
        }

        public static ListOfMatchBuilder<long> OfLongs()
        {
            return new ListOfMatchBuilder<long>();
        }

        public static ListOfMatchBuilder<char> OfChars()
        {
            return Of<char>();
        }

        public static ListOfMatchBuilder<double> OfDoubles()
        {
            return Of<double>();
        }

        public static ListOfMatchBuilder<string> OfStrings()
        {
            return Of<string>();
        }

        public static ListOfMatchBuilder<object> OfObjects()
        {
            return Of<object>();
        }

        public static ListOfMatchBuilder<T> Of<T>()
        {
            return new ListOfMatchBuilder<T>();
        }

        /// <summary>
        /// Create a list of matchers, one for each of the given instances using the factory method provided.
        /// <para>
        /// E.g.
        /// </para>
        /// <para>
        /// AList.InAnyOrder().WithOnly(AList.From(AnInstance.EqualTo, items))
        /// </para>
        /// </summary>
        /// <returns>A list of matchers, one per instance</returns>
        /// <param name="factory">The factory method which will create matchers for each instance in the list</param>
        /// <param name="instances">The list of items to create matchers from</param>
        /// <typeparam name="T">The type of element in the list</typeparam>
        public static IEnumerable<IMatcher<T>> From<T>(Func<T, IMatcher<T>> factory, IEnumerable<T> instances)
        {
            return instances.Select(factory.Invoke).ToList();
        }

        /// <summary>
        /// A list with only one element. If you need more use InOrder()/InAnyOrder() ...
        /// </summary>
        /// <typeparam name="T">The type being matched</typeparam>
        /// <param name="matcher">The matcher</param>
        /// <returns>A list matcher</returns>
        public static IListMatcher<T> WithOnly<T>(IMatcher<T> matcher)
        {
            return InOrder().WithOnly(matcher);
        }

        public static IAcceptMoreMatchers<T> Without<T>(IMatcher<T> matcher)
        {
            return new AListNotContains<T>().And(matcher);
        }

        /// <summary>
        /// Return a matcher which allows matchers to match in any order. Currently as soon as a matcher is matched
        /// it is removed from trying to match the remaining items. The matchers are applied in the order they were added
        /// against each item in the list. As soon as a matcher matches a given item both the items and matcher are removed
        /// from further processing. The process then moves on to the next item in the list
        /// </summary>
        /// <returns>A builder for matching in any order</returns>
        public static InAnyOrderMatchBuilder InAnyOrder()
        {
            return new InAnyOrderMatchBuilder();
        }

        /// <summary>
        /// Return a matcher which requires all matchers to match in order
        /// </summary>
        /// <returns>A builder for matching in order</returns>
        public static InOrderMatchBuilder InOrder()
        {
            return new InOrderMatchBuilder();
        }

        public static IListMatcher<T> NoItems<T>()
        {
            return new IsEmptyMatcher<T>();
        }

        public static IListMatcher<object> WithNumItems(int count)
        {
            return WithNumItems(AnInt.EqualTo(count));
        }

        public static IListMatcher<object> WithNumItems(IMatcher<int?> matcher)
        {
            return new NumItemsMatcher<object>(matcher);
        }

        public class ListOfMatchBuilder<T>
        {
            /// <summary>
            /// A list with only one element. If you need more use InOrder()/InAnyOrder() ...
            /// </summary>
            /// <param name="matcher">The matcher</param>
            /// <returns>A list matcher</returns>
            public IListMatcher<T> WithOnly(IMatcher<T> matcher)
            {
                return InOrder().WithOnly(matcher);
            }

            public IAcceptMoreMatchers<T> Without(IMatcher<T> matcher)
            {
                return new AListNotContains<T>().And(matcher);
            }

            /// <summary>
            /// Return a matcher which allows matchers to match in any order. Currently as soon as a matcher is matched
            /// it is removed from trying to match the remaining items. The matchers are applied in the order they were added
            /// against each item in the list. As soon as a matcher matches a given item both the items and matcher are removed
            /// from further processing. The process then moves on to the next item in the list
            /// </summary>
            /// <returns>A builder for matching in any order</returns>
            public InAnyOrderMatchBuilder InAnyOrder()
            {
                return new InAnyOrderMatchBuilder();
            }

            /// <summary>
            /// Return a matcher which requires all matchers to match in order
            /// </summary>
            /// <returns>A builder for matching in order</returns>
            public InOrderMatchBuilder InOrder()
            {
                return new InOrderMatchBuilder();
            }

            public IListMatcher<T> NoItems()
            {
                return new IsEmptyMatcher<T>();
            }

            public IListMatcher<T> WithNumItems(int count)
            {
                return WithNumItems(AnInt.EqualTo(count));
            }

            public IListMatcher<T> WithNumItems(IMatcher<int?> matcher)
            {
                return new NumItemsMatcher<T>(matcher);
            }
        }

        /// <summary>
        /// For items matchers where item order is important
        /// </summary>
        // ReSharper disable PossibleMultipleEnumeration
        public class InOrderMatchBuilder
        {
           /// <summary>
           /// Return a matcher which requires all items to match
           /// </summary>
           /// <param name="itemMatchers">The list of matchers</param>
           /// <returns>Builder for continuing to create the matcher</returns>
           /// <typeparam name="T">The type being matched</typeparam>
           public IAcceptMoreMatchers<T> WithOnly<T>(params IMatcher<T>[] itemMatchers)
           {
                return OfType<T>().WithOnly(itemMatchers);
           }

           [Obsolete("Use WithOnlyValues(...) instead")]
           public IAcceptMoreMatchers<int?> WithOnly(params int?[] values)
           {
                return OfType<int?>().WithOnlyValues(values);
           }

           [Obsolete("Use WithOnlyValues(...) instead")]
           public IAcceptMoreMatchers<string> WithOnly(params string[] values)
           {
                return OfType<string>().WithOnlyValues(values);
           }

           public IAcceptMoreMatchers<T> WithOnlyValues<T>(params T[] values)
           {
                return OfType<T>().WithOnlyValues(values);
           }

           /// <summary>
           /// Return a matcher which requires all items to match
           /// </summary>
           /// <param name="valueToMatchFunc">The factory function to create matchers</param>
           /// <param name="values">The list of vales</param>
           /// <returns>The matcher builder</returns>
           /// <typeparam name="T">The type of the item being matched</typeparam>
           /// <typeparam name="TVal">The type of value being enumerated</typeparam>
           public IAcceptMoreMatchers<T> WithOnly<T, TVal>(Func<TVal, IMatcher<T>> valueToMatchFunc, IEnumerable<TVal> values)
           {
                return OfType<T>().WithOnly(valueToMatchFunc, values);
           }

           /// <summary>
           /// Return a matcher which requires all items to match
           /// </summary>
           /// <param name="itemMatchers">The list of matchers</param>
           /// <returns>The matcher builder</returns>
           /// <typeparam name="T">The type being matched</typeparam>
           public IAcceptMoreMatchers<T> WithOnly<T>(IEnumerable<IMatcher<T>> itemMatchers)
           {
                return OfType<T>().WithOnly(itemMatchers);
           }

           public IAcceptMoreMatchers<T> WithAtLeastValues<T>(params T[] values)
           {
               return OfType<T>().WithAtLeastValues(values);
           }

           [Obsolete("Use WithAtLeastValues(...) instead")]
           public IAcceptMoreMatchers<string> WithAtLeast(params string[] values)
           {
               return OfType<string>().WithAtLeastValues(values);
           }

           [Obsolete("Use WithAtLeastValues(...) instead")]
           public IAcceptMoreMatchers<int?> WithAtLeast(params int?[] values)
           {
               return OfType<int?>().WithAtLeastValues(values);
           }

           /// <summary>
           /// Return a matcher which requires only that all matchers match once, so additional non matched items are allowed
           /// </summary>
           /// <param name="itemMatchers">THe list of matchers</param>
           /// <returns>The matcher builder</returns>
           /// <typeparam name="T">The type being matched</typeparam>
           public IAcceptMoreMatchers<T> WithAtLeast<T>(params IMatcher<T>[] itemMatchers)
           {
                return OfType<T>().WithAtLeast(itemMatchers);
           }

           /// <summary>
           /// Return a matcher which requires only that all matchers match once, so additional non matched items are allowed
           /// </summary>
           /// <param name="valueToMatchFunc">Function to get matcher for a given value</param>
           /// <param name="values">The list of values</param>
           /// <returns>The matcher builder</returns>
           /// <typeparam name="T">The type being matched</typeparam>
           /// <typeparam name="TVal">The type being enumerated</typeparam>
           public IAcceptMoreMatchers<T> WithAtLeast<T, TVal>(Func<TVal, IMatcher<T>> valueToMatchFunc, IEnumerable<TVal> values)
           {
                return OfType<T>().WithAtLeast(valueToMatchFunc, values);
           }

           /// <summary>
           /// Return a matcher which requires only that all matchers match once, so additional non matched items are allowed
           /// </summary>
           /// <param name="itemMatchers">The list of matchers</param>
           /// <typeparam name="T">The type being matched</typeparam>
           /// <returns>The matcher builder</returns>
           public IAcceptMoreMatchers<T> WithAtLeast<T>(IEnumerable<IMatcher<T>> itemMatchers)
           {
                return OfType<T>().WithAtLeast(itemMatchers);
           }

           private InOrderMatchBuilder<T> OfType<T>()
        {
                return new InOrderMatchBuilder<T>();
           }
        }

        /// <summary>
        /// For items matchers where item order is important
        /// </summary>
        /// <typeparam name="T">The type being matched</typeparam>
        // ReSharper disable PossibleMultipleEnumeration
        public class InOrderMatchBuilder<T>
        {
            /// <summary>
            /// Return a matcher which requires all items to match
            /// </summary>
            /// <param name="itemMatchers">The list of matchers</param>
            /// <returns>The matcher builder</returns>
            public IAcceptMoreMatchers<T> WithOnly(params IMatcher<T>[] itemMatchers)
            {
                return WithOnly((IEnumerable<IMatcher<T>>)itemMatchers);
            }

            public IAcceptMoreMatchers<T> WithOnlyValues(params T[] values)
            {
                return WithOnly(AList.From(val => AnInstance.EqualTo(val), values));
            }

            /// <summary>
            /// Return a matcher which requires only that all matchers match once, so additional non matched items are allowed
            /// <para>
            /// Usage:
            /// </para>
            /// <para>
            ///     AList.OfStrings().InOrder().WithOnly(x => AString.Containing("x"), listOfStrings);
            /// </para>
            /// </summary>
            /// <param name="valueToMatchFunc">The factory to create a matcher for each value</param>
            /// <param name="values">The list of values</param>
            /// <typeparam name="TVal">The type being enumerated</typeparam>
            /// <returns>The matcher builder</returns>
            public IAcceptMoreMatchers<T> WithOnly<TVal>(Func<TVal, IMatcher<T>> valueToMatchFunc, IEnumerable<TVal> values)
            {
                return WithOnly(Matchers.MatchersFromValues(valueToMatchFunc, values));
            }

            /// <summary>
            /// Return a matcher which requires all items to match
            /// </summary>
            /// <param name="itemMatchers">The list of matchers</param>
            /// <returns>The matcher builder</returns>
            public IAcceptMoreMatchers<T> WithOnly(IEnumerable<IMatcher<T>> itemMatchers)
            {
                PreConditions.AssertNotNull(itemMatchers, "itemMatchers");
                return new AListInOrderWithOnlyMatcher<T>(itemMatchers);
            }

            public IAcceptMoreMatchers<T> WithAtLeastValues(params T[] values)
            {
                return WithAtLeast(AList.From(val => AnInstance.EqualTo(val), values));
            }

            /// <summary>
            /// Return a matcher which requires only that all matchers match once, so additional non matched items are allowed
            /// </summary>
            /// <param name="itemMatchers">The list of matchers</param>
            /// <returns>The matcher builder</returns>
            public IAcceptMoreMatchers<T> WithAtLeast(params IMatcher<T>[] itemMatchers)
            {
                return WithAtLeast((IEnumerable<IMatcher<T>>)itemMatchers);
            }

            /// <summary>
            /// Return a matcher which requires only that all matchers match once, so additional non matched items are allowed
            /// </summary>
            /// <param name="valueToMatchFunc">The factory to create a matcher for each value</param>
            /// <param name="values">The list of values</param>
            /// <typeparam name="TVal">The type being enumerated</typeparam>
            /// <returns>The matcher builder</returns>
            public IAcceptMoreMatchers<T> WithAtLeast<TVal>(Func<TVal, IMatcher<T>> valueToMatchFunc, IEnumerable<TVal> values)
            {
                return WithAtLeast(Matchers.MatchersFromValues(valueToMatchFunc, values));
            }

            /// <summary>
            /// Return a matcher which requires only that all matchers match once, so additional non matched items are allowed
            /// </summary>
            /// <param name="itemMatchers">The list of matchers</param>
            /// <returns>The matcher builder</returns>
            public IAcceptMoreMatchers<T> WithAtLeast(IEnumerable<IMatcher<T>> itemMatchers)
            {
                PreConditions.AssertNotNull(itemMatchers, "itemMatchers");
                return new AListInOrderAtLeast<T>(itemMatchers);
            }
        }

        public class InAnyOrderMatchBuilder
        {
           /// <summary>
           /// Return a matcher which requires all items to match
           /// </summary>
           /// <returns>The matcher builder</returns>
           /// <typeparam name="T">The type being matched</typeparam>
           public IAcceptMoreMatchers<T> WithOnly<T>()
           {
                return OfType<T>().WithOnly();
           }

           [Obsolete("Use WithOnly(...) instead")]
           public IAcceptMoreMatchers<string> WithOnly(params string[] values)
           {
                return OfType<string>().WithOnlyValues(values);
           }

           [Obsolete("Use WithOnly(...) instead")]
           public IAcceptMoreMatchers<int?> WithOnly(params int?[] values)
           {
                return OfType<int?>().WithOnlyValues(values);
           }

           public IAcceptMoreMatchers<T> WithOnlyValues<T>(params T[] values)
           {
                return OfType<T>().WithOnlyValues(values);
           }

           /// <summary>
           /// Return a matcher which requires all items to match
           /// </summary>
           /// <param name="itemMatchers">The list of matchers</param>
           /// <returns>The matcher builder</returns>
           /// <typeparam name="T">The type being matched</typeparam>
           public IAcceptMoreMatchers<T> WithOnly<T>(params IMatcher<T>[] itemMatchers)
           {
                return OfType<T>().WithOnly(itemMatchers);
           }

           /// <summary>
           /// Return a matcher which requires all items to match
           /// </summary>
           /// <param name="valueToMatchFunc">The factory to create a matcher for each value</param>
           /// <param name="values">The list of values</param>
           /// <typeparam name="T">The type being matched</typeparam>
           /// <typeparam name="TVal">The type being enumerated</typeparam>
           /// <returns>The matcher builder</returns>
           public IAcceptMoreMatchers<T> WithOnly<T, TVal>(Func<TVal, IMatcher<T>> valueToMatchFunc, IEnumerable<TVal> values)
           {
                return OfType<T>().WithOnly(valueToMatchFunc, values);
           }

           /// <summary>
           /// Return a matcher which requires all items to match
           /// </summary>
           /// <param name="itemMatchers">The list of matchers</param>
           /// <typeparam name="T">The type being matched</typeparam>
           /// <returns>The matcher builder</returns>
           public IAcceptMoreMatchers<T> WithOnly<T>(IEnumerable<IMatcher<T>> itemMatchers)
           {
                return OfType<T>().WithOnly(itemMatchers);
           }

           [Obsolete("Use WithAtLeast(...) instead")]
           public IAcceptMoreMatchers<string> WithAtLeast(params string[] values)
           {
                return OfType<string>().WithAtLeastValues(values);
           }

           [Obsolete("Use WithAtLeast(...) instead")]
           public IAcceptMoreMatchers<int?> WithAtLeast(params int?[] values)
           {
                return OfType<int?>().WithAtLeastValues(values);
           }

           public IAcceptMoreMatchers<T> WithAtLeastValues<T>(params T[] values)
           {
                return OfType<T>().WithAtLeastValues(values);
           }

           /// <summary>
           /// Return a matcher which requires only that all matchers match once, so additional non matched items are allowed
           /// </summary>
           /// <param name="itemMatchers">The list of matchers</param>
           /// <typeparam name="T">The type being matched</typeparam>
           /// <returns>The matcher builder</returns>
           public IAcceptMoreMatchers<T> WithAtLeast<T>(params IMatcher<T>[] itemMatchers)
           {
                return OfType<T>().WithAtLeast(itemMatchers);
           }

           /// <summary>
           /// Return a matcher which requires only that all matchers match once, so additional non matched items are allowed
           /// </summary>
           /// <param name="valueToMatchFunc">The factory to create a matcher for each value</param>
           /// <param name="values">The list of values</param>
           /// <typeparam name="T">The type being matched</typeparam>
           /// <typeparam name="TVal">The type being enumerated</typeparam>
           /// <returns>The matcher builder</returns>
           public IAcceptMoreMatchers<T> WithAtLeast<T, TVal>(Func<TVal, IMatcher<T>> valueToMatchFunc, IEnumerable<TVal> values)
           {
                return OfType<T>().WithAtLeast(valueToMatchFunc, values);
           }

           /// <summary>
           /// Return a matcher which requires only that all matchers match once, so additional non matched items are allowed
           /// </summary>
           /// <param name="itemMatchers">The list of matchers</param>
           /// <typeparam name="T">The type being matched</typeparam>
           /// <returns>The matcher builder</returns>
           public IAcceptMoreMatchers<T> WithAtLeast<T>(IEnumerable<IMatcher<T>> itemMatchers)
           {
                return OfType<T>().WithAtLeast(itemMatchers);
           }

            private InAnyOrderMatchBuilder<T> OfType<T>()
            {
                return new InAnyOrderMatchBuilder<T>();
            }
        }

        public class InAnyOrderMatchBuilder<T>
        {
            /// <summary>
            /// Return a matcher which requires all items to match
            /// </summary>
            /// <returns>The matcher builder</returns>
            public IAcceptMoreMatchers<T> WithOnly()
            {
                return new AListInAnyOrderWithOnly<T>();
            }

            public IAcceptMoreMatchers<T> WithOnlyValues(params T[] values)
            {
                return WithOnly(AList.From(val => AnInstance.EqualTo(val), values));
            }

            /// <summary>
            /// Return a matcher which requires all items to match
            /// </summary>
            /// <param name="itemMatchers">The list of matchers</param>
            /// <returns>The matcher builder</returns>
            public IAcceptMoreMatchers<T> WithOnly(params IMatcher<T>[] itemMatchers)
            {
                return WithOnly((IEnumerable<IMatcher<T>>)itemMatchers);
            }

            /// <summary>
            /// Return a matcher which requires all items to match
            /// </summary>
            /// <param name="valueToMatchFunc">The factory to create a matcher for each value</param>
            /// <param name="values">The list of values</param>
            /// <typeparam name="TVal">The type being enumerated</typeparam>
            /// <returns>The matcher builder</returns>
            public IAcceptMoreMatchers<T> WithOnly<TVal>(Func<TVal, IMatcher<T>> valueToMatchFunc, IEnumerable<TVal> values)
            {
                return WithOnly(Matchers.MatchersFromValues(valueToMatchFunc, values));
            }

            /// <summary>
            /// Return a matcher which requires all items to match
            /// </summary>
            /// <param name="itemMatchers">The list of matchers</param>
            /// <returns>The matcher builder</returns>
            public IAcceptMoreMatchers<T> WithOnly(IEnumerable<IMatcher<T>> itemMatchers)
            {
                PreConditions.AssertNotNull(itemMatchers, "itemMatchers");
                return new AListInAnyOrderWithOnly<T>(itemMatchers);
            }

            public IAcceptMoreMatchers<T> WithAtLeastValues(params T[] values)
            {
                return WithAtLeast(AList.From(val => AnInstance.EqualTo(val), values));
            }

            /// <summary>
            /// Return a matcher which requires only that all matchers match once, so additional non matched items are allowed
            /// </summary>
            /// <param name="itemMatchers">The list of matchers</param>
            /// <returns>The matcher builder</returns>
            public IAcceptMoreMatchers<T> WithAtLeast(params IMatcher<T>[] itemMatchers)
            {
                return WithAtLeast((IEnumerable<IMatcher<T>>)itemMatchers);
            }

            /// <summary>
            /// Return a matcher which requires only that all matchers match once, so additional non matched items are allowed
            /// </summary>
            /// <param name="valueToMatchFunc">The factory to create a matcher for each value</param>
            /// <param name="values">The list of values</param>
            /// <returns>The matcher builder</returns>
            /// <typeparam name="TVal">The type being matched</typeparam>
            public IAcceptMoreMatchers<T> WithAtLeast<TVal>(Func<TVal, IMatcher<T>> valueToMatchFunc, IEnumerable<TVal> values)
            {
                return WithAtLeast(Matchers.MatchersFromValues(valueToMatchFunc, values));
            }

            /// <summary>
            /// Return a matcher which requires only that all matchers match once, so additional non matched items are allowed
            /// </summary>
            /// <param name="itemMatchers">The list of matchers</param>
            /// <returns>The matcher builder</returns>
            public IAcceptMoreMatchers<T> WithAtLeast(IEnumerable<IMatcher<T>> itemMatchers)
            {
                PreConditions.AssertNotNull(itemMatchers, "itemMatchers");
                return new AListInAnyOrderWithAtLeast<T>(itemMatchers);
            }
        }

        internal abstract class AbstractListMatcher<T> : AbstractMatcher<IEnumerable<T>>, IListMatcher<T>, IProvidePrettyTypeName
        {
            private readonly string m_shortName;

            internal AbstractListMatcher(string shortName)
            {
                m_shortName = shortName;
            }

            public string GetPrettyTypeName()
            {
                return "AList." + m_shortName + "(IEnumerable<" + ProvidePrettyTypeName.GetPrettyTypeNameFor<T>() + ">)";
            }

            public override bool Matches(IEnumerable<T> actual, IMatchDiagnostics diagnostics)
            {
                return Matches(actual as IEnumerable, diagnostics);
            }

            public abstract bool Matches(IEnumerable actual, IMatchDiagnostics diagnostics);

            internal static IList AsEfficientList(IEnumerable items)
            {
                if (items == null)
                {
                    return null;
                }
                var list = items as IList;
                if (list != null)
                {
                    return list;
                }
                list = new List<object>(15);
                foreach (var item in items)
                {
                    list.Add(item);
                }
                return list;
            }

            protected override bool IsValidType(object actual)
            {
                Type itemType = GetItemType(actual);
                return itemType != null && typeof(T).IsAssignableFrom(itemType);
            }

            protected override IEnumerable<T> Wrap(object actual)
            {
                // Mono seems to have issue casting IList<T> to IEnumerable<Nullable<T>> when T is a value type
                Type itemType = GetItemType(actual);
                if (itemType.IsValueType)
                {
                    return new ValueTypeEnumerableWrapper<T>((IEnumerable)actual);
                }
                return (IEnumerable<T>)actual;
            }

            private Type GetItemType(object someCollection)
            {
                var type = someCollection.GetType();
                var ienum = type.GetInterface(typeof(IEnumerable<>).Name);
                return ienum != null
                    ? ienum.GetGenericArguments()[0]
                    : null;
            }
        }

        private class IsEmptyMatcher<T> : NumItemsMatcher<T>
        {
            public IsEmptyMatcher()
                : base(AnInt.EqualTo(0))
            {
            }
        }

        private class NumItemsMatcher<T> : AbstractListMatcher<T>
        {
            private readonly IMatcher<int?> m_countMatcher;

            public NumItemsMatcher(IMatcher<int?> countMatcher)
                : base("NumItems")
            {
                m_countMatcher = countMatcher;
            }

            public override bool Matches(IEnumerable instance, IMatchDiagnostics diag)
            {
                var enummerator = instance.GetEnumerator();
                int count = 0;
                while (enummerator.MoveNext())
                {
                    count++;
                }
                return diag.TryMatch(count, "count", m_countMatcher);
            }
        }

        private class ValueTypeEnumerableWrapper<T> : IEnumerable<T>, IEnumerable
        {
            private readonly IEnumerable actual;

            public ValueTypeEnumerableWrapper(IEnumerable actual)
            {
                this.actual = actual;
            }

            public IEnumerator<T> GetEnumerator()
            {
                return new ValueTypeEnumerator(actual.GetEnumerator());
            }

            IEnumerator IEnumerable.GetEnumerator()
            {
                return GetEnumerator();
            }

            public override string ToString()
            {
                return actual.ToString();
            }

            internal class ValueTypeEnumerator : IEnumerator<T>
            {
                private readonly IEnumerator m_actual;

                public ValueTypeEnumerator(IEnumerator actual)
                {
                    m_actual = actual;
                }

                object IEnumerator.Current
                {
                    get { return Current; }
                }

                public T Current
                {
                    get { return (T)m_actual.Current; }
                }

                public bool MoveNext()
                {
                    return m_actual.MoveNext();
                }

                public void Reset()
                {
                    m_actual.Reset();
                }

                public void Dispose()
                {
                    var d = m_actual as IDisposable;
                    if (d != null)
                    {
                        d.Dispose();
                    }
                }
            }
        }
    }
}

redpajama_set_name: RedPajamaGithub


These handmade, Fair Trade and eco friendly green leather journals are made by a small family business in Rajasthan, India.
Each beautiful handmade journal contains 125 pages of recycled cotton paper – unlined khadda paper. Khadda paper is made from recycled cotton, is acid-free and is a unique paper to write or draw on. Each small journal is unique – some may come with a splash of petals on the pages and some with off-white paper.


text:
G League
Buy Single Game Tickets
Holiday Pack
Military Tickets
Getting to the Game
Full Season Membership Headquarters
Half Season Membership Headquarters
Printable 2021-22 Schedule
Past Season Results
BSN Channel Finder
Target Center Schedule
Iowa Wolves (G-League)
@Timberwolves
WolvesWire
Wolves+
Life in the Pack
Team Originals
Pack Gives Back Ticket Program
Read to Achieve
2021-22 Remix City Edition
Timberwolves Team Store More
Team Store New Gear
1st Avenue Breakers
Timberwolves Dancers
PACKcussion
Senior Dancers
Slam Squad
Game Night Sounds
Search Toggle Search Input
Oct. 1, 2003: Timberwolves Sign Garnett To Contract Extension
Posted: Feb 03, 2004
Oct. 1, 2003 — Timberwolves Vice President of Basketball Operations/General Manager Kevin McHale today announced the team has signed forward Kevin Garnett to a contract extension. Per team policy, terms of the agreement were not disclosed.
"This is a great day for Minnesota Timberwolves fans," said Timberwolves owner Glen Taylor. "I'm thrilled to know that we'll have the best player in the NBA playing on our team and here in Minnesota for many years to come. Kevin's development over the past eight seasons has been tremendous and with each season, he has taken his game to a higher level. Obviously, he's the cornerstone of our franchise, and we believe he's someone who can lead us to a championship.
"Kevin's signing culminates an extremely productive and exciting offseason for our organization and our fans," added Taylor. "With the acquisitions of Sam Cassell, Latrell Sprewell and Michael Olowokandi, as well as the return of Troy Hudson and Wally Szczerbiak, Target Center will house some of the best basketball in the entire NBA this season."
"I'm proud to call Minnesota my home and I'm excited about remaining here in the Twin Cities," said Garnett. "I'd like to thank Glen Taylor, Kevin McHale and the entire organization as well as all the Timberwolves fans for the past eight seasons. The team that Glen and Kevin have assembled really has me energized for the upcoming year, and I'm looking forward to the opportunity to help lead this team to a NBA championship."
Garnett was selected fifth overall by the Wolves in the 1995 NBA Draft out of Farragut Academy High School in Chicago. The 27-year-old was named All-NBA First Team in 2000 and 2003, Second Team in 2001 and 2002 and Third Team in 1999. He has been named to the NBA's All-Defensive First Team the past four seasons and either the All-Interview First or Second Team the last four campaigns as well. Additionally, he finished second in last season's Most Valuable Player voting and third in Defensive Player of the Year balloting.
After earning Western Conference Player of the Month honors in both February and April last season, Garnett has earned that award four times in his career. He has been named Western Conference Player of the Week eight times, including three times during the 1999-2000 season.
Minnesota's all-time leader in points, rebounds, blocked shots, assists, steals, minutes and games started, Garnett was a member of the gold medal-winning 2000 U.S. Olympic Men's Basketball Team. The 6-11 forward made his sixth All-Star appearance last season, tallying 37 points, nine rebounds and five steals en route to being named MVP of the 52nd NBA All-Star Game in Atlanta on Feb. 9.
Garnett finished his eighth NBA campaign in 2002-03 by averaging career highs of 23.0 points, 13.4 rebounds, 6.0 assists and 40.5 minutes per game in starting all 82 contests. It marked the fourth consecutive season in which he tallied at least 20 points, 10 rebounds and five assists per game, joining Larry Bird as the only players in league history to achieve that feat. Garnett posted a franchise-record and league-best 68 double-doubles, in addition to tallying an NBA-high six triple-doubles. He also ranked ninth in scoring, second in rebounding and 13th (first among forwards) in assists. He became the first player since Bird in 1989-90 to rank among the league's top 15 in all three categories. Additionally, he led Minnesota in scoring 60 times, rebounding on 69 occasions and assists 35 times.
Garnett led the Wolves to a franchise-record 51 regular-season victories last season after 50-win seasons in 2001-02 and 1999-2000. Minnesota advanced to the playoffs for the seventh consecutive season and earned the team's first-ever homecourt advantage in the first round of the playoffs. Over his eight-year career, Garnett has averaged 19.4 points, 10.4 rebounds, 4.3 assists, 1.39 steals, 1.72 blocks and 38.0 minutes per game in 611 regular-season games.
"We're extremely excited to have Kevin Garnett as part of the Minnesota Timberwolves for the next six years," said McHale. "Kevin is among an elite class of players in the NBA. He has an unmatched passion for the game, and has a drive to get better every season. He has proven time and again that he is our MVP. Once again, this demonstrates Glen's [Taylor] commitment to Kevin, the fans, the organization and to the goal of bringing a championship to Minnesota."
Previously, Garnett signed a multi-year contract with the team on Oct. 2, 1995 and then signed a multi-year contract extension on Oct. 1, 1997.
Timberwolves Celebrate the Legacy of Dr. Martin Luther King Jr.
Preview: Wolves vs. Warriors
Wolves Drop To Grizzlies
Timberwolves Statement on Minneapolis COVID-19 Mandates
Preview: Wolves at Grizzlies
Timberwolves & Lynx Hire Marquise Watts as Chief Experience Officer
Copyright © 2022 NBA Media Ventures, LLC. All rights reserved. No portion of NBA.com may be duplicated, redistributed or manipulated in any form. This site is operated jointly by NBA and WarnerMedia. To opt out of the sale of your personal information as permitted by the California Consumer Privacy Act, please use the links below to visit each company's privacy center. If you make a request through the WarnerMedia Privacy Center, it will apply to data controlled jointly by the NBA and WarnerMedia as well as other data controlled by WarnerMedia. If you make a request through the NBA Privacy Center, it will apply to data controlled independently by the NBA. NBA Privacy Center | WarnerMedia Privacy Center | Do Not Sell My Personal Information | Terms of Use | Accessibility and Closed Caption | | Manage Preferences
Advertise on NBA.com
NBA.com Help
NBA Career Opportunities
NBA.com is part of Turner Sports Digital, part of the Turner Sports & Entertainment Digital Network.

redpajama_set_name: RedPajamaCommonCrawl


text:
UN introduces measures to prevent spread of Coronavirus in support of countries of operation.
Main Stories News
Logo of the United Nations
The United Nations on Monday set measures to prevent the spread of the Coronavirus in countries where its missions operate. The Department of Operational Support identified four priorities according to UNISFA's website.
Preventing the introduction and spread of the disease in the country support, controlling the spread of the disease among its employees, providing the necessary treatment to employees exposed to the disease. Finally, helping countries with peacekeeping missions around the world.
Last month, UNISFA has prevented its staff from traveling abroad and not to return those who traveled to their countries to their work sites in Abyei until further notice.
World Bank approves $7.6 million for South Sudan to fight COVID 19
Relative calm returns to Mabok


Here at MedRevise, we love giving stuff away! This month we have 4 great items for our readers!
Rang and Dale's Pharmacology Rang & Dale's Pharmacology provides you with all the knowledge you need to get through your pharmacology course and beyond.
Emergencies in Clinical Medicine provides a practical, accessible guide to all emergency situations encountered by junior doctors. Emergencies nearly always present first to the junior doctor. This book aims to give the junior doctor the confidence to recognise these and manage them.
60 Day Online Subscription Choose from a wide range of courses on the Exam Doctor website to help you prepare for your examinations.
OSCEs for Medical Students Volume 1 is the first in a series of three titles designed to support you through your Objective Structured Clinical Examinations (OSCEs). Fully updated, these second editions of our best-selling titles now contain new communication skills and clinical examination stations throughout.
Find out more about it on the Pastest site.
Do all 4, and you get entered into the prize draw four times!
Also, something witty and urbane.
Would love to win the exam doctor subscription or emergency guide. Fingers crossed!
P.S please add me to the competition Thank you!


text:
COVENANT The Blinding Dark
October 27, 2016 / electricityclub / Comments Off on COVENANT The Blinding Dark
It's been twenty two years since COVENANT 's legendary opus 'Sequencer', featuring the exquisite 'Stalker', was aired.
Further albums followed with 'United States Of Mind', 'Northern Light' and 'Skyshaper' being the most notable.
With Eskil Simonsson in charge of synths, vocals, programming and production joined by Joakim Montelius who looks after execution, lyrics and engineering, the pair form the core of modern COVENANT.
'The Blinding Dark' as an album number nine, promises a return to the darker matter of serious futurepop, without being too nostalgic towards 'Sequencer'. The production's motto is "There is No Berlin Wall to defiantly dance on any more", but the listener is invited into the "void", which welcomes the "unstoppable Nautilus through the black waters, straight towards the future, never looking back".
The matters of "confronting the dark side of self" manifest themselves in the advance single 'Sound Mirrors'. Relating to the sound mirrors from World War Two's Britain, which were the concrete anti-aircraft installations deflecting the enemy planes, the track touches upon the modern state of Europe as we see today, with refugee problems of mass scale, affecting the Continent's safety and security while plunging into the nasty depths of human nature. Of course, all the signature COVENANT elements are combined here, including the ominous voice of Simonsson.
Indeed, the deep probing auras are raised immediately on the opening instrumental 'Fullwell', and they're further developed on 'I Close My Eyes'.
A more progressive, "implosive instead of explosive" and "fuelled by a cold fury rather than a roaring fire", the cutting sounds resemble shaking off the shackles into the arty, futuristic sound.
The first 'Interlude' to 'Dies Irae' works as a catalyst for the fusion of Carpenter Brut and Leonard Cohen with the mediaeval Catholic requiem mass. The peculiarities of the track seem to work, thanks to the simplicity of the electronica and a poignant vocal. The second 'Interlude' to 'If I Give My Soul' introduces a hopeful moment towards the wishful attitude of the latter number, laced with bass and captivating synth.
A more sombre mood is portrayed in a haunting duet for 'A Rider On A White Horse'. This spectacular cover of a 1977 country hit by Lee Hazlewood, comes as an unexpected turn, proving that even a western track can be revamped as a superb electronic tune.
Further proof that COVENANT know their synths, yet do not shy away from further development of their signature sound, lies in 'Morning Star'.
Lyrically, the song mentions the album title over a plethora of disturbingly apt sound variations, opening a brand new chapter for the Swedish masters.
'Cold Reading' only reminds the listener that COVENANT are superb at trance-inducing, alternative dance tracks, even as a newly found quintet with Andreas Catjar, Daniel Jonasson and Daniel Myer, the latter returning for 'The Blinding Dark', having left in 2013 citing "too many egos" as the reason for his departure.
The tribal, almost "ritual noise", heralds the closing 'Summon Your Spirit', bearing an uncanny resemblance to the latest instrumental works of GAZELLE TWIN.
If COVENANT wanted to reincarnate the 'Sequencer' sound, they certainly achieved that on 'The Blinding Dark', without repeating themselves. The long player definitely puts its predecessor 'Leaving Babylon' to shame.
The Swedish maestros themselves described "the dystopian, unforgiving music of the reflective shadows we all carry within us, but often lack the courage to take a good look at" by creating a "triumphant embrace of the strengths and resilience of the soul".
A triumph it is.
'The Blinding Dark' is released by Dependent Records on 4th November 2016 in a variety of formats
COVENANT tour Germany throughout November, please visit the official website for more details and other dates in Europe
http://www.covenant.se/
https://www.facebook.com/Covenant-OFFICIAL-156626197713557/
http://en.dependent.de/covenant-the-blinding-dark.html
Text by Monika Izabela Trigwell
Photos by Chris Ruiz
Posted in Reviews	Tagged with Covenant
CHRIS PAYNE vs TEC in Düsseldorf
ARCTIC SUNRISE When Traces End


text:
Download our latest ebook: Jump-Starting the Green New Deal
Phoenix Light-Rail Extension Clears Hurdle
Plus, Tel Aviv's second and third LRT lines get go-ahead, and more in our weekly New Starts.
Sandy Smith January 18, 2017
Phoenix light rail (Credit: Kinkisharyo)
Our weekly "New Starts" roundup of new and newsworthy transportation projects worldwide.
Coronavirus Outbreak Triggers New Thinking About Transit's Essential Role
Should We Put Bikes in the "Slow Lane"?
The Missing Piece of the Vision Zero Puzzle: Designing City Streets for Freight
Austin Voters Approve Transit, Transportation Improvements
Phoenix LRT Extension Clears Environmental Hurdle
The Federal Transit Administration this week gave its stamp of environmental approval to the Valley Metro South Central light-rail expansion project in Phoenix, KJZZ reports.
The "finding of no significant impact" means that the project can continue on the fast track to completion Phoenix voters put it on in 2015.
The 5-mile light-rail line from downtown Phoenix to Baseline Road via South Central Avenue will serve a largely impoverished and heavily minority section of the city. Valley Metro had originally planned to open this line in 2034, but voter approval of the "Phoenix Transportation 2050" funding package in August 2015 allowed the agency to move the line's completion date up to 2023.
The green light from the FTA means that design work can now start.
Rabat OKs Two Tram Extensions
The metropolitan council in the Moroccan capital of Rabat has given the go-ahead for extending one of the region's two tram lines at both ends.
(Photo by Michał Beim)
The International Railway Journal reports that the Council of Municipalities of the Agglomeration of Rabat has approved a project that will extend Line T2 of the Rabat-Salé Tramway for a total of 1.72 billion dirhams ($171.2 million U.S.)
At its east end in Salé, the line will be extended 4.6 km (2.85 miles) from its current terminus at Hassan II to Zarbia Avenue, where it will serve the new provincial hospital in the Al Hssaine district.
The extension at the opposite end in Rabat will take the line an additional 2.4 km (1.49 miles) farther southwest from Moulay Youssef Hospital in Akkari to Al Kifah Avenue in Yaâcoub Al Mansour.
The Moroccan government's Fund for Urban Road Transport Reform will pick up 592 million dirhams ($58.9 million U.S.) of the project's projected cost.
Go-Ahead Given for Two LRT Lines in Tel Aviv
The Israeli business news site Globes reports that Israel's Housing Cabinet has approved the initial segments of the second and third light-rail lines in Tel Aviv, Israel's largest city and diplomatic capital.
The approved projects include the western section of the Purple Line and the central and southern sections of the Green Line.
The approved Purple Line segment is 18 km (11.1 miles) long and will have 29 stations. It will run from the central interchange station at Arlozorov eastward to Bar Ilan University. A future extension will take the line an additional 10 km (6.2 miles) to the east, ending at Yehud.
The two approved Green Line sections include the 5.9-km (3.6-mile) central section, 4.25 km (2.6 miles) of which will run in a subway in central Tel Aviv, and the southern segment, which will have two branches, one ending at Moshe Dayan in Rishon Lezion West and the other to a terminal in Holon.
The two lines are projected to carry more than 250,000 passengers daily and should enter service by 2030.
Know of a project that should be featured in this column? Send a Tweet with links to @MarketStEl using the hashtag #newstarts
Next City contributor Sandy Smith is the home and real estate editor at Philadelphia magazine. Over the years, his work has appeared in Hidden City Philadelphia, the Philadelphia Inquirer and other local and regional publications. His interest in cities stretches back to his youth in Kansas City, and his career in journalism and media relations extends back that far as well.
Follow Sandy .(JavaScript must be enabled to view this email address)
Tags: transportation spending, light rail


This page shows businesses on Castledine Street. Click on a business to bring up its details and a map showing its location.
Patrick Fordham Associates is a management consultant company which offers advice to help businesses improve their performance.


2019 Toyota Corolla Hatchback – Now we give you information about the brand new cars 2019 Toyota Corolla Hatchback by updating photo – interesting photos for the brand new car 2019 Toyota Corolla Hatchback. There is a current picture of the sheet featuring the newest cars from various sides of 2019 Toyota Corolla Hatchback. You will see picture of 2019 Toyota Corolla Hatchback from the outer side front and rear, the cabin interior photos, photo machine room.
In this place you will find and download a photos as wallpaper in the shape of the brand new 2019 Toyota Corolla Hatchback are very beautiful. Snapshot of 2019 Toyota Corolla Hatchback you can plug a computer monitor or laptop screen and your smartphone. And 2019 Toyota Corolla Hatchback picture may also be printed as wallpaper your walls of your home.
New cars 2019 Toyota Corolla Hatchback are usually bought through the dealers who make some changes to the cost, like giving certain discounts or adding some taxes within the manufacturer's price. Sometimes, manufacturers give certain discounts to the dealers, which are handed down to the customers.
How you can get the best deal on a brand new 2019 Toyota Corolla Hatchback involves doing plenty of diligent research on makes, models degrees of equipment and prices. The purchase price 2019 Toyota Corolla Hatchback have be more difficult to fathom since dealers and manufacturers are finding a method to get across the invoice price part of the buying process.
The local car dealerships will also be considered as one of many good sources of information about models 2019 Toyota Corolla Hatchback which can be offered available for sale for the market. Local car dealerships could offer the best information about the brand new vehicle models 2019 Toyota Corolla Hatchback simply because they know which of the vehicles that they sell are considered brand-new and those who are previously owned or used cars. To learn more about 2019 Toyota Corolla Hatchback and specification, call or visit several local car dealer nearest you.


"There is nothing that can replace the absence of someone dear to us, and one should not even attempt to do so. One must simply hold out and endure it. At first that sounds very hard, but at the same time it is also a great comfort. For to the extent the emptiness truly remains unfilled one remains connected to the other person through it. It is wrong to say that God fills the emptiness. God in no way fills it but much more leaves it precisely unfilled and thus helps us preserve -- even in pain -- the authentic relationship. Further more, the more beautiful and full the remembrances, the more difficult the separation. But gratitude transforms the torment of memory into silent joy. One bears what was lovely in the past not as a thorn but as a precious gift deep within, a hidden treasure of which one can always be certain."
May your memories of loved ones give you joy in your sorrows.


Daily roundup of what to watch tonight on TV, last night's premiere episode of "Dancing With the Stars" and a trending video on the iPhone 5.
Check this out: ACT or SAT?
What do the ACT and SAT scores really mean? Do they tell a meaningful story of a student's academic knowledge and capabilities? One WashingtonPost.com article says no. Click the link above to read more.
Last night was the premiere of "Dancing With the Stars," with a new cast that includes some old favorites like Pamela Anderson and Bristol Palin. WashingtonPost.com has the complete list of who danced what, how they did and, of course, their scores. Click the link above to read more. Catch the second premiere episode tonight at 8 p.m. EDT/ 7 p.m. CDT.
Apple's iPhone 5 sales could have been higher, users report flaws including scratches, and Apple product supplier Foxconn closes its factory to address a worker riot. Scroll down to watch.


← Bernie Williams Day idea beginning to take shape at Yankees offices?
last night, we were enjoying a quiet evening of television and taco bell in our pajamas. when we heard some rustling at the door, i went into protect mode. i looked through the peep hole and distinguished the top of someone's head, but not much more. I headed to the kitchen and began rustling through the drawers for two knives. Rats! I only found a corkscrew!
By this time, my girlfriend had already opened the door and admitted her oldest sibling, who had been given the impression by their mother that we were out of town and he needed to feed the parrot. We had a good laugh and I didn't have to stab anyone, so I call that a good day. Hooray!
The lesson here is that if I suspect you're going to harm my woman, you're in for a stabbing. You can learn something new about yourself every day! I am going to try integrating talking the perpetrator into surrender. Sounds like a better plan!
This doesn't read as funny as it occurred. Just to be clear, I never brandished a knife!
Posted on May 10, 2008, in observations and tagged breaking and entering, protecting your home. Bookmark the permalink.	Leave a comment.


text:
In der Liste der dänischen Umweltminister sind die Minister des 1971 gegründeten dänischen Umweltministeriums (Miljøministeriet) angeführt. Seit dem 28. Juni 2015 ist das Umweltministerium mit dem Nahrungsmittelministerium im Umwelt- und Nahrungsmittelministerium (Miljø- og Fødevareministeriet) vereint.

Weblinks
 Miljøministeriet Offizielle Webseite des dänischen Umweltministeriums (dänisch, englisch)

Einzelnachweise

Danemark
!
Umweltminister

redpajama_set_name: RedPajamaWikipedia


Sparks fly between them, but Sally is struggling to let go of the past, and Luke has his eyes fixed firmly on the future. What they uncover together is a shocking secret that has been kept safe for more than seventy years. Now the entire family's happiness is at stake - or does the truth about the past hold a valuable lesson for the future?


"A third of British women risk doing severe harm to their unborn babies by binge drinking during pregnancy," the Mail Online reports. While a concerning statistic, the evidence behind the headline is perhaps not as clear-cut as the Mail would lead its readers to believe.
This story has been prompted by the publication of a study comparing just over 17,000 women's alcohol consumption before and during pregnancy in the UK, Ireland, Australia and New Zealand. It also looked at which groups of women were more likely to report drinking alcohol in pregnancy.
The researchers hoped that by looking at results collected in different ways from countries that are generally similar, they might get an idea of which methods of assessing alcohol consumption in pregnancy give the most consistent results.
The Growing up in Ireland (GUI) study was a national survey of a sample of mothers of 10,953 infants aged six to nine months, carried out in 2008 and 2009. Interviews were carried out face-to-face by a trained researcher. They were asked if they drank during pregnancy and, if so, how much on average they drank per week (pints of beer or cider, glasses of wine, measures of spirits or alcopops) in each trimester.
Women in Ireland were most likely to report drinking pre-pregnancy (90%) or binge drinking pre-pregnancy (59%), and those in Australia least likely (drinking 53%, bingeing 11%).
The researchers concluded that: "alcohol use during pregnancy is prevalent and socially pervasive in the UK, Ireland, New Zealand and Australia". They suggest that this shows low adherence to guidelines recommending complete abstinence or only low consumption, and that new policies and interventions are needed to reduce women's alcohol consumption both before and during pregnancy. They also note that research is needed to identify more reliable ways to assess alcohol consumption in pregnancy, so they can more accurately tell how many women do drink during pregnancy.
Current UK NICE guidance recommends that women planning a pregnancy and pregnant women avoid drinking alcohol in the first three months (trimester) of pregnancy because it may increase risk of miscarriage.


text:
AnalysisASEAN
A suitable choice
Monday, 2019-06-03 14:45:33
Displaced people from the minority Yazidi sect, fleeing violence from forces loyal to the Islamic State in Sinjar town, near the Syrian border town of Elierbeh of Al-Hasakah Governorate, August 11, 2014. (Photo: Reuters)
NDO - The US, Russia and Israel have agreed to hold a trilateral meeting this June for the three countries' national security advisers to discuss ways to deal with regional security issues, especially the situation in Syria.
Despite campaigns against the so-called Islamic State (IS), Syria has made important progress but, there are still unpredictable risks.
The initiative to organise a trilateral meeting of the US, Russia and Israel to discuss regional security issues was raised in the context that the Russian-assisted Syrian government army is conducting campaigns to defeat the IS in the northwest region of the Middle Eastern country. Conflicts continued to escalate with the risk of a serious humanitarian crisis in Syria. Clashes between government forces and rebels have continued to escalate in Idlib since the end of April, forcing more than 285 deaths and over 200,000 people to flee their homes.
Meanwhile, Israeli air strikes aimed at Iranian targets and Hezobllah forces within Syria were tantamount to "adding fuel to the fire" to the heated civil war in Syria. Israeli air strikes escalated tensions and jeopardised the Russian air force on anti-terrorism missions in Syria.
After the US had declared to win the war launched by Washington against the IS since 2014 and pulled all its troops out of Syria, the war against the IS entered into a new period. Although this extremist organisation failed to fulfil its dream of establishing a "Muslim Kingdom" in the territories of Iraq and Syria, the IS has not completely been wiped out. The IS shrank in size and changed its mode of operation in the form of small groups. The threat from this terrorist organisation still exists. In fact, the US is still continuing to lead air strikes conducted by the coalition allies against the IS in Syria.
Regional media reported that the Pentagon was still silently transferring its weapons to the Middle East to serve the campaign to chase out the IS fighters. The type of US missiles secretly brought to Syria are improved versions of the Hellfire missile, designed to hit targets such as cars, tall buildings and other infrastructures. The US Central Command (CENTCOM) announced that the US-led coalition against IS in Iraq and Syria was in a state of readiness to fight. Accordingly, the Special Operation Joint Task Force (OIR) is staying on high alert and continuing to closely monitor potential threats to US forces in the region.
The fact that the US withdrew from Syria but are still secretly bringing weapons to the region, at the same time continuing to lead the war against IS here, shows that Washington has still been concerned about the risks from the extremist organisation for the benefits the US. The US officials and troops have been deployed in the neighbouring country Iraq to protect US interests that are still insecure, as the IS dangerous seeds are still hidden in many places. The US' coordination with Russia to find solutions to the Syrian crisis also aims to enhance efficiency in the fight against the IS, while help the US continue to maintain its influence in the Middle East.
US Secretary of State M. Pompeo has recently met with Russian President V. Putin in Sochi to discuss plans to allow the Syrian Government to move back into the international community after the implementation of UN Resolution 2254. The resolution called on Syria to conduct peace negotiations, draft a new Constitution and hold elections under the UN supervision. According to US special representative for Syria engagement J. Jeffrey, the US and Russia had negotiated the possibility of removing Syria from the current international isolation situation, if Damascus agreed to certain conditions, in which there were to be a ceasefire agreement in the province of Idlib.
Washington and Moscow are seeking a step-by-step approach to end the eight-year war in Syria. However, this requires both sides to make difficult decisions because the US and Russia have supported two different sides of the conflict in Syria and neither of them wants to admit defeat. The US' wish to work with Russia to find a solution to the crisis also comes from developments in the field, as the balance of power is leaning towards the Syrian government forces backed by Russia.
UN Special Envoy for Syria Geir Pederse reiterated the UN's principle of supporting a political solution to end the conflict in Syria. According to the UN, the international community needs to promote the healing of divisions and start building trust, because there is no peace perspective for a deeply divided Syria and a crisis of trust. The coordination between the parties to find a political solution is the only suitable option to be able to deal with security threats, solve the humanitarian problems and open the door for peace for Syria.
6.1-magnitude quake strikes Japan's Torishima island region, no tsunami warning issued (Jun 04, 2019 12:30:53)
World News in Brief: June 4 (Jun 04, 2019 12:30:38)
34th ASEAN-Japan Forum held in Hanoi (Jun 03, 2019 21:35:11)
Italian govt bonds falter after reports of PM threat to resign (Jun 03, 2019 15:09:30)
US ready for unconditional talks with Iran: Pompeo (Jun 03, 2019 10:32:56)
Myanmar grants visa-on-arrival to 6 more countries to boost tourism (Jun 02, 2019 21:37:04)
Feature: Knives and forks, plastic bags, paper cup lids -- UN "makes a big deal out of minor things" (Jun 02, 2019 14:04:27)
Roundup: ROK, Japan, EU upbeat about Korean Peninsula denuclearization (Jun 02, 2019 14:04:00)
Two people missing after blasts at Russian military plant, 39 injured (Jun 01, 2019 20:25:21)
OIC summit discusses unified stance on events in Islamic world (Jun 01, 2019 11:14:06)
Russia sanctions EU citizens and entities in tit-for-tat move (Jun 01, 2019 10:43:32)
Thailand to pick new prime minister on June 5 (May 31, 2019 19:14:56)


text:
Rafael Infantino Abreu (* 28. August 1984 in La Vega, Dominikanische Republik) ist ein ehemaliger kolumbianischer Bahn- und Straßenradrennfahrer.

Sportliche Laufbahn

Rafael Infantino wurde 2004 Panamerikameister in der Mannschaftsverfolgung und im Einzelzeitfahren der U23-Klasse. In der Saison 2007 gewann er eine Etappe beim Giro della Regione Friuli Venezia Giulia, die U23-Austragung der Trofeo Matteotti und zwei Teilstücke beim Giro della Valle d'Aosta. Im nächsten Jahr war er bei der dritten Etappe des Giro delle Valli Cuneesi nelle Alpi del Mare erfolgreich. 2011 gewann er den Clásico RCN. Nachdem er 2013 drei Etappen der Vuelta a Colombia gewonnen hatte, beendete er seine Radsportlaufbahn.

Nach der Kolumbien-Rundfahrt 2016 wurde Infantino positiv auf die Einnahme der verbotenen Substanz GHRP-2 getestet und vom kolumbianischen Radsportverband bis Juli 2019 gesperrt.

Erfolge

Bahn

2004
  Panamerikameister – Mannschaftsverfolgung (mit Alexander González, John Fredy Parra und José Serpa)

Straße
2004
  Panamerikameister – Einzelzeitfahren (U23)

2007
 eine Etappe Giro della Regione Friuli Venezia Giulia
 zwei Etappen Giro della Valle d'Aosta

2011
 eine Etappe Vuelta a la Independencia Nacional
 Gesamtwertung Clásico RCN

2013
 drei Etappen Vuelta a Colombia

Teams
 2009 Amica Chips-Knauf
 2010
 2011
 2012
 2013
 2015 EPM-UNE-Área Metropolitana

Weblinks

Radsportler (Kolumbien)
Radsportler (Dominikanische Republik)
Panamerikameister (Radsport)
Kolumbianer
Geboren 1984
Mann


Well, it's been a yr. Solo Mayoreo: Nearly all of shops within the Vogue District are wholesale-solely (solo mayoreo) and not open to the general public. Indicators might be posted outside wholesale-solely stores. Some wholesale-only shops will occasionally sell to the general public, so you should definitely ask. I am a new fan of Tziporah. I am 47 years old and while being sick in bed I googled modern vogue for older ladies. And I found advanced type. What a beautiful idea. Brilliant! I need the DVD too. And I'm now inspired to never let model be stopped in my life.
As a kid, I bear in mind the days of procuring our favorite budget-friendly stores like Miller's Outpost (now Anchor Blue) Payless, Susie's Deals, and Kmart. I could not await the weekend once we would head over to the swap meet. My mom would give us a couple of dollars, virtually like an allowance, and allow us to get our shop on! I always ended up with a Whats up Kitty item or those rubber bracelets. OKAY, I'm REALLY displaying my age right here. The first section incorporates the most popular Blogshops in Singapore as determined by net visitors based mostly on Alexa rankings. The second part incorporates essentially the most extremely rated blogshops based mostly on our member's evaluations. We perceive its not always easy to make the soar to start out buying online, particularly if its your first time. So we came out with this list so you will really feel extra comfortable in regards to the course of.
Most stores should not have formal dressing rooms. In spite of everything these completely non-glamorous revelations, you is likely to be questioning, how do style editors still handle to take care of their excellent fashion, then? The reply is pretty simple: we do sensible procuring! We're fearless! And, we are creative. So, when you really feel like you can use some vogue hacks to pimp up your wardrobe, keep on studying: we're about to disclose a few of our buying secrets and techniques. As an alternative, I ready the characteristic for a web-based take a look at. I believed in buying cart recommendations. I needed to measure the gross sales impact.
This trendy district is usually referred to as the Soho of Rotterdam. Right here you will see that a number of Bohemian, retro-model shops and special design outlets. So starting right now, you can get all of the retail and procuring insights on the Think with Google web site. It's also possible to discover product specific updates on the Google Commerce Blog After today, we won't be posting any information on this weblog, so sign up to get regular updates from Assume with Google in regards to the retail industry and consumer tendencies.
About Website – NECROMANCY was created through the Winter of 2016 in Australia. This blog covers Gothic Style, Gothic Clothing, Buy On-line Australia, Necromancy Clothes. At ZALORA Philippines, we imagine your on-line purchasing expertise ought to be better than your offline purchasing expertise. That's why we go above and past to be sure you obtain your ZALORA order as quickly as potential – in major cities that's often 1-three working days. Take pleasure in free delivery with a number of cost choices similar to credit card, PayPal and cash on delivery. Getting trend fix has never been simpler and more secure.


We'll take an AFX Aurora #17 Chevelle and turn it into a great looking stock car.
A complete materials list, is available at the end of this article.
In this tutorial, I'm going to reproduce the 1973 #11 KAR-KARE Chevelle.
I started with 2 white and orange #17 AFX Chevelle bodies. These are pretty common and inexpensive. First, I removed the glass and front and rear bumpers leaving me with 2 gutted plastic bodies. These were lighted versions so I left the headlights in place. I then soaked the 2 bodies overnight in EASY-OFF oven cleaner. EZ-OFF will attack many things especially chrome so test it first before using.
I then, washed the bodies in clean water. I then scuffed the bodies with #600 grit sand paper and removed any lines or burrs I didn't want on the finished body. I also scuffed the entire body to remove any leftover markings giving the bodies a uniform appearance. I then washed and cleaned the bodies giving them a quick blast of air off before I paint the bodies white.
I make a paint stand using an old AFX chassis and a wooden cotten swab. I hot glue the swab into place on the chassis.
This makes a great holder/stand for painting and decaling. I have these for AFX, Tyco wide & narrow chassis.
I painted the bodies white with DUPLI-COLOR white from my airbrush. I will take DUPLI-COLOR aerosol spray paints and spray the paint into a cup, then pour that paint right into my airbrush's paint cup. It needs no mixing or thinners and it ready to use in the airbrush just as it is. I use a Paasche Model VL-1 airbrush. They are very inexpensive (around $60 on ebay) durable, and solvents won't hurt them.
Once the body has been painted, I let it dry thoroughly, then I use 1/16" 3M Pinstriping tape to do the initial masking.
This is what professional auto shops use on their cars and it will conform well to contours and edges.
I then use standard househole masking tape and apply it over the pinstripe tape.
I do this to both sides and then masked over center of car.
I then shoot with my airbrush the sides and undersides of wheel wells red using DUPLI-COLOR red aerosol paint.
I then quickly remove all the masking tapes while the red paint is still "soft".
After the tape is removed I can see I had some overspray issues that needed removed.
of the window with tape as well to prevent the overspray coming in thru the windows onto the white.
I use good 'ole lighter fluid and a cotton swab to remove the red overspray while the red paint was still "soft".
I prefer RED DEVIL brand simply because it doesn't have much odor.
I have all my overspray removed and I'm ready to start applying decals.
I have a large aluminum plate as a work surface I do all my decal cutting and setting on.
I also use a paper towel as to set the body onto when I'm cutting decals, etc.
Find a paint guide to follow when applying decals. Have it nearby for easy reference.
I start by applying the thin side stripe first.
It has extra wide white and red edges to allow for errant red/white paint edges.
Cut off the excess on the front edge.
Once I have one side applied, I let it dry for about 5 minutes. I then use a decal setting solution, WALTHERS brand SOLVASET.
It is "slower" than some other decal setting solutions and after years of experience with this I'm comfortable using it.
NOTE: DECAL SETTING SOLUTIONS WILL DRAMATICALLY SOFTEN your decals.
TEST BEFORE USING! This step is for experienced modelers.
I apply the stripe decal, then let it dry for about 5 minutes.
THEN, I apply some SOLVASET on 1 section and quickly ROLL the excess solution off with a cotton swab.
you MUST roll the swab in a straight and consistent rolling action or it will ruin the stripe.
I start in the middle, then roll left, finally I roll right. Then, I do another section of striping.
I start applying the rest of the decals on one side of the car body.
in the area you want to apply it. Then, slide the name off the backer onto the body.
Small images tend to wrap around on themselves sometimes, and this helps to eliminate that.
When applying decals over holes like wheel wells, don't worry about the excess or overage.
Simply apply some decal setting solution, and the decal will soften and conform to the opening.
Once the first side is done, then I moved onto the other side.
The other side usually goes much faster.
After the second side is complete, I apply decal setting solution to all images and roll off excess.
When, I'm applying decals I typically set the newly wetted decals onto the older empty backers.
This lets the excess water wick away from the new decals.
so keep them wet enough they are workable but not too wet.
Continue with hood, roof, trunk and front & rear decals. Apply setting solution and roll off excess.
LET CAR DRY OVERNIGHT ONCE ALL DECALS ARE APPLIED!!!
Simply walk away from it and you'll continue tomorrow.
Too many paint jobs are botched here, so forget about it until you can work on it the next day.
and gently rub the wet towel over the decals. This removes any extra setting solution or other residue that may be on the car.
Since the extra residue is often clear, its difficult to see until it shows up under the clear coat applied later.
Let dry for at least an hour.
I shoot the body with a clear coat now.
I spray clear using my airbrush on the body from aerosol paints.
I use KRYLON CRYSTAL CLEAR, and also PLASTI-KOTE T-45 clears.
Simply spray the paint into your airbrush's paint cup and apply to the body.
then finally the top at a final finish gloss coat.
I don't typically paint the details in black or silver until after the clear coat.
I've encountered silver will turn "fuzzy" edged and dissolve into the clear so I just apply it afterwards.
Using FLAT BLACK paint I'll do any details with Tamiya acrylic paint.
Here, I paint the grill using a brush with "thinned" black paint.
I used a silver marking pen for window details, etc. while the clear was still "soft".
Otherwise, I'll hand paint silver details with a brush if the clear is "hard".
Black details are applied too.
I even heavily thinned some black paint and made a "wash" applying it in the window netting area.
This is the finished painted body.
I am using my RRR RWL-S "Goodyear" stocker white letter tires on this car's chassis.
YES, you can use RWL tires on AFX wheels with some front wheel hub mods.
I ground down the center rib to be flush on the front wheels to clear the front rubber.
Rear tires go on with no alterations to hubs.
I installed the bumpers and glass with some KRAZY glue.
Then, I painted a set of RRR #916 SLOTS white, installing them onto my chassis.
And finally the RWL tires give this car the added details it truly deserves.
The version I show in my decal/paint tutorial is a SOUTHEASTERN 500 winning car.
with varying paint schemes and decal placements.
The RRR #N-102 KAR-KARE decals reflect this with several different images on the same decal.
Below, you see the more common version (Bristol) parked along side the later Charlotte schemed car.
I think they are great looking cars.
Images and information are not to be copied or reproduced without written permission from Road Race Replicas.


Not to say, of course, that people aren't sucking up every ounce of daylight here in Reykjavík, too—far from it. Last summer, my first in Iceland, I lived in a quiet, seaside neighborhood mostly occupied by large families. Nearly every house on my block had a jumbo trampoline battened down in their yard, and the springy sound of joyful jumping echoed down the street as late (or as early) as 1am on clear nights.
It was invigorating and kind of panic-inducing, too. It was the perfect day, after all, not only sunny, but warm, too, and everyone knew that it wasn't going to last. How to make the best of it? There was no right answer, of course, but the most popular one seemed to be: Do Everything. All at once. Right now.
Everything, of course, but sleep. Sleeping in the summer is not only a bit of a challenge, what with all the extra light, but it also feels like a total waste of time. You slept all this winter, and you'll sleep all the next. So that now, at 11:30pm on the evening of the summer solstice, you find yourself packing up your croquet set (a delightfully optimistic gift from abroad) and trooping down to a seaside field for a few games. Yes, of course. Let's play midnight croquet. Let's take a walk. Let's start a movie at 4am. Let's bake a cake and rearrange the furniture. Let's do anything but sleep.
Now summer's returned, though, and I find myself making oodles of to-do lists. Go to the pool every day. Go sea swimming twice a week. Collect dandelions and make wine. Visit the baby animals at the zoo. Go on day hikes. Camp. Go work on a goat farm for a few weeks. Cultivate herbs in window boxes. Cook all food outdoors. The activities aren't even restricted to outdoor ones: take a dance class, volunteer at the library, bake bread, start crocheting a friend's baby blanket, learn to paint. Start that short story I've been mentally plotting. Read fifty books, and not just 'beach reads' — read The Magic Mountain.
I haven't done half of the things on my list yet and I'm confident that I won't get even half of these things done before the summer ends. But I want to: Do Everything. All At Once. Right Now. Because pretty soon, it'll be winter again.
Larissa Kyzer is a writer and student of the Icelandic language at the University of Iceland. She currently lives in Reykjavík with her partner Mark and blogs about life and language-learning at ethandthorn.wordpress.com.


text:
This Saudi Arabian Social Media App is Trending in Dallas
By	Joe Youngblood on July 26th, 2017
Scroll through your Instagram stories or your Snaps and you might see a simple looking screenshot of anonymous messages sent to one of your friends. The app is known as Sarahah, which means "honesty" or "frankness" in Arabic, and it's a top trending app in Saudi Arabia and right here in Dallas, TX. The app / website allows users to create a minimalist profile for use to seek out anonymous feedback from friends and social media connections much like Ask.fm, WiseLike (shut down), or other similar websites that have been around for some time.
An Instagram user from DFW shares her Sarahah URL with friends via the Story feature.
Unlike other websites/apps that perform similar functions; Sarahah doesn't use a Facebook, Twitter, Google or other social media login and promises private, anonymous messages between users. The makers of the app state that the purpose is to "Get honest feedback from your coworkers and friends".
Of course, as young adults will do with technology, the app is being used for more than just constructive criticism by peers - the most frequent usage I've noted so far is for courtship. Friends of mine on Instagram are using the app more for kicks than for specific questions and many are getting asked out on dates or more frank and intimate proposals messaged to them, I know this because after several anonymous messages come in they screenshot them and share that screenshot as an Instagram Story (side note: my sample is 100% female currently). See a few examples (with redaction for privacy) at the end of this article.
According to Mashable the apps sudden rise to popularity coincides with a Snapchat update which allowed users to add links to websites inside of their snaps. Immediately following this update the Sarahah app skyrocketed towards the top of the iOS charts and currently sits as the #3 most popular free app on the Google Play Store. As the app has become super hot it has racked up at least 14 million registered users according to it's creator who is struggling to support the massive user growth while the app experiences frequent crashes.
This may have also exposed a major flaw in Snapchat's model of private messaging (not having a webfacing profile page and not allowing anonymous messages).
Saraha currently sits right below Facebook Messenger and Snapchat on the Google Play Store as the #3 Free App, beating out Facebook itself.
How To Use Sarahah
If you're interested in using Sarahah to get feedback or have fun with your friends, using the app / website is pretty simple.
Download the iOS or Android app to your phone (skip this step for desktop usage)
Register for the website using your email address and a password. When you register you'll set a username which will be used for your unique URL and you'll be asked to give a name and upload a photo. Since the site is about being anonymous it's important to note that the photo is optional and that there is no way for Sarahah to force a user to use their real name (i.e. like Facebook does). If you're worried about privacy use a nickname here instead.
Once you've registered you'll get a unique url such as Example.Sarahah.com
Share this URL (or screenshot the page and upload it) on Snapchat, Instagram, Twitter, FB or elsewhere to start getting feedback.
How Can You Use Sarahah for Business
14 million users in one month is a huge accomplishment, but it doesn't mean Sarahah will stick around for the long haul. I would recommend using it to get some feedback in screenshot form and using that content on your other social channels, if you have a younger (13-25) audience target.
For everyone else I would recommend at least making an account and sitting on it before someone claims a Sarahah account as your business and uses it to get feedback (or worse).
This app / site currently reminds me of Ello from a few years back and it could ultimately meet the same fate, so don't invest too heavily up front taking a long shot gamble.
Possible Black Hat Uses
You should be aware that there are clearly blackhat uses for a new social messaging app like this. For example a competitor could claim a profile with your brand as the username and use it to collect negative anonymous feedback (or even to push fake feedback to it) and then spread those screenshots across social media.
The site also includes a 'search' feature which can and will definitely be used for spamming. More clever spammers will likely crawl Twitter / Public FB / the web for Sarahah URLs and submit messages as right now there is little anti-spam technology on the app.
Sarahah is also not exactly built the best. Don't get me wrong, I'm impressed with the growth and how well the developer has done so far, but it appears to be a very basic CGI script running on Microsoft's Azure platform. If I understand correctly it appears that the app builds each new page of the website / app on the fly, which across the span of 14 million users probably takes up more resources than the developer can afford (this might also explain the terrible ads on the app / site). There is every chance that the user data and messages can be hacked easily if the code isn't secure enough and since Sarahah isn't owned or invested in by any company with significant resources (at least as of the date I'm writing this) there is no exploit / bug bounty program in place or big development team to fix any major issues uncovered before an opportunistic hacker finds the same issue and exploits it.
Interestingly enough when the website crashes the app seems to work fine.
NOTE: I do not endorse using black hat tactics, these are offered as an FYI to help business owners / marketers beware of the potential dangers in using Sarahah at the current state.
Other Criticisms
There have been a lot of rumors flying around and worries about this new app. A lot of this is FUD but I wanted to collect the main ones here for you to understand. To be clear these are all complaints about what Sarahah might enable and there's no evidence (unless specified) that any of this is true, please don't spread FUD.
The maker of the website will blackmail users to release their sent / received messages.
The anonymous nature of the website will enable bullying.
The anonymous nature of the website will enable harassment.
The website will be used by terrorists to plot attacks.
Teenagers will use the website to put together parties, plan sexual encounters, and plan to do drugs together.
The US Government (or other Governments) will gain access to all of the websites messages and user bases and use it against their citizens / residents / visiting peoples. - NOTE: The U.S. Government did cause the suspension of Dallas based Lavabit in 2013, a private encrypted email provider used by Edward Snowden, due to a demand for all user information from the service, though the service began operating again on a limited basis in June of this year.
What are your thoughts on Sarahah? Let me know in the comments (and if I have anything wrong or it needs updated we'll make sure to edit this article)
Examples of Messages Being Shared on Sarahah
A glimpse at the type of messages being shared on Sarahah.
Another example of messages being sent via Sarahah, a top trending app on iOS and Android in Dallas.
Categories: Business, Tech
Tags: anonymous, business, communications, instagram, messages, snapchat, social media, trend
Social Media Brings People Together for a Cause: Dallas4Japan
Dallas Bookstore Getting National Recognition for Social Media Campaign
Google+ Tips and Tricks in Social Media Marketing with Giovanni Gallucci
Last Day for Discount Tickets to DFW Rocks Social Media Day Conference
Social Media Boot Camp to be Held Benefiting National Breast Cancer Foundation
« Whole Belly Clam Weekend at Sea Breeze Brunch at Tricky Fish is darn good (Richardson) »
Joe Youngblood is the founder of the award winning creativity laboratory Winner Winner Chicken Dinner, the co-founder of the non-profit event series Digital by Dallas, and a passionate marketing expert working to help small businesses in Dallas - Fort Worth succeed.


text:
Q: How to access and store a particular object from a json file in c# I am trying to make a multi-subject quiz game for children using unity3D and questions and answers are stored in a json file. Now i want to create an object named "science" and "maths" and want to store their respective questions in them and when i want to access science i could loop and find and just store the science question in my string instead of reading the whole json file.
here is my json file.
    Science ={
    "CourseName":"Science",
    "No_Of_Ques":4,
    "Ques_Data":[
                  { "Quesion":"which is the biggest planet in the solar system?",
                    "Answer":"jupiter",
                    "options":["mars","earth","venus","jupiter"]
                  },

                  { "Quesion":"How many planets are there in solar system?",
                    "Answer":"Eight",
                    "options":["Seven","Nine","Five","Eight"]
                  },

                  { "Quesion":"which is the closest planet to the sun?",
                    "Answer":"mercury",
                    "options":["mars","saturn","venus","mercury"]
                  },

                  { "Quesion":"How many moons does jupiter have?",
                    "Answer":"12",
                    "options":["5","13","9","12"]
                  }
                ]
}

and this is how i have been acessing it so far
path = Application.dataPath + "/QnA.json";
    string json = File.ReadAllText(path);
    Course c1 = JsonUtility.FromJson<Course>(json);

    return c1;

Course and needed serializable Classes:
[Serializable] public class Course
{
    public string CourseName;
    public string No_Of_Ques;
    public QnA[] Ques_Data;
}

[Serializable]
public class QnA
{
    public string Quesion;
    public string Answer;
    public string[] options;
}

i have tried so many things like Deserialization and Jobject asset but none of them seem to work and every implementation that i have found on the internet has the json data in the same file as the c# code but i can not do that as my json contains hundreds of lines of data. kindly help me out a little.

A: Create a course class in which create getter and setter functions for all of your json keys, for example:
if your json file is like that:
[
  {
    "CourseName": "Science",
    "No_Of_Ques": 1,
    ...
  },
  {
    "CourseName": "Math",
    "No_Of_Ques": 1,
    ...
  }
]

then course class should be:
public class Course
    {
        public string CourseName { get; set; }
        public int No_Of_Ques { get; set; }
    }

In your main class or anywhere you can access your selected course, here i am using only 0 index of a json, you can also loop through whole json and find your desirable course.

*

*StreamReader to read a file

*convert it to json

*Deserialize the json as per your course

*Console it
    using (StreamReader r = new StreamReader("../../../js.json"))
    {
        string json = r.ReadToEnd();
        List<Course> ro = JsonSerializer.Deserialize<List<Course>>(json);
        Console.WriteLine(ro[0].CourseName);
    }

I added json file in the same dire where my mainClass file is, as StreamReader requires an absolute path therefore I used an absoulte path for my json file.
using (StreamReader r = new StreamReader("../../../js.json"))

Require Libs
using System;
using System.Collections.Generic;
using System.IO;
using System.Text.Json;

Note: I created a console app, not sure your app type

A: If you want to store multiple courses in your file you will need to store them as json array (as you do with questions):
[
   {
      "CourseName":"Science",
      "No_Of_Ques":1,
      "Ques_Data":[
         {
            "Question":"which is the biggest planet in the solar system?",
            "Answer":"jupiter",
            "options":[
               "mars",
               "jupiter"
            ]
         }
      ]
   },
   {
      "CourseName":"Math",
      "No_Of_Ques":1,
      "Ques_Data":[
         {
            "Question":"2 + 2",
            "Answer":"4",
            "options":[
               "4",
               "0"
            ]
         }
      ]
   }
]

then you can deserialize them with next structure(for example):
public class Course
{
    [JsonProperty("CourseName")]
    public string CourseName { get; set; }
    [JsonProperty("No_Of_Ques")]
    public long NoOfQues { get; set; }
    [JsonProperty("Ques_Data")]
    public QuesDatum[] QuesData { get; set; }
}

public class QuesDatum
{
    [JsonProperty("Question")]
    public string Question{ get; set; }

    [JsonProperty("Answer")]
    public string Answer { get; set; }

    [JsonProperty("options")]
    public string[] Options { get; set; }
}

var courses = JsonConvert.DeserializeObject<List<Course>>(jsonString);
var course = courses.Where(...).FirstOrDefault();

Or try to use json path:
var course = JToken.Parse(jsonString)
    .SelectToken("$[?(@.CourseName == 'Math')]")
    .ToObject<Course>();

As for jsonString you can obtain it in any way, reading from file for example.
P.S.
There was typo "Quesion" -> "Question"

A: To serialize and deserialize objects you have to create a C# class (in your case should be Course class) that can be [Serializable].
First your Json should be a valid one, which it is, you can validate it here.
To serialize and deserialize you can use JsonUtility to certain point, cause it doesn't deserialize jagged arrays, complex objects etc. I recommend to use third party softwares like Newtonsoft or implement your own serialization/deserialization method for your way.
Edit:
Your JSON file should be without the "Science=" part, should look like:
{
    "CourseName":"Science",
    "No_Of_Ques":4,
    "Ques_Data":[
                  { "Quesion":"which is the biggest planet in the solar system?",
                    "Answer":"jupiter",
                    "options":["mars","earth","venus","jupiter"]
                  },

                  { "Quesion":"How many planets are there in solar system?",
                    "Answer":"Eight",
                    "options":["Seven","Nine","Five","Eight"]
                  },

                  { "Quesion":"which is the closest planet to the sun?",
                    "Answer":"mercury",
                    "options":["mars","saturn","venus","mercury"]
                  },

                  { "Quesion":"How many moons does jupiter have?",
                    "Answer":"12",
                    "options":["5","13","9","12"]
                  }
                ]
}

Edit:
For your comment I think you got a misunderstood of how to handle the relation between files and variables.
You want to have (or at least it seems like this) one file for every type of course, so in this case, the text above will be your Science.json file.
When you store that information, you will do similar of what you do:
path = Application.dataPath + "/QnA.json";
    string json = File.ReadAllText(path);
    Course scienceCourse = JsonUtility.FromJson<Course>(json); //notice the name of the variable!

So as you can see for the variable name, you will read EVERY SINGLE JSON for every course.
The other way to do that, is to store all the courses on the same Json file, and then get them as an ARRAY of Courses -> Course[] allCourses

A: Using Science={...} to define your object is where you get confused about object definitions. It is not a Science object. It is a Course object.
It should be more like
{
    "Courses" :
    [
        {
            "CourseName" : "Science",
            ...
        },
        {
            "CourseName" : "Maths",
            ...
        }
    ]
}`.

Wrap it with:
"Quiz" :
{
    "Courses" :
    [
        {
            "CourseName" : "Science",
            ...
        },
        {
            "CourseName" : "Maths",
            ...
        }
    ]
}

and use
[Serializable]
public class Quiz
{
    public Course[] courses;
}

To hold it as  a C# object.
From here you can access your courses by quiz.Courses[0].Questions[17] or write helper methods in Quiz class to call courses by enums like quiz.GetCourse(CourseCategory.Science).Questions[8].
I also suggest using Questions instead of Question_Data. That is more object friendly and helps you semantically.
As an additional suggestion, instead of dumping all of the quiz in a single JSON, you may consider sending a single Course object depending on the course, requested using a query like http://myquizserver.com/quiz.php?course=science. Since you mentioned hundreds of lines of JSON, you may also consider getting data question by question.

redpajama_set_name: RedPajamaStackExchange