text:
#region MIT license
//
// MIT license
//
// Copyright (c) 2007-2008 Jiri Moudry, Pascal Craponne
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
#endregion

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Linq.Expressions;
using System.Reflection;
using DbLinq.Util;

using DbLinq.Data.Linq.Mapping;
using DbLinq.Data.Linq.Sugar;
using DbLinq.Data.Linq.Sugar.Expressions;

#if MONO_STRICT
using DataContext = System.Data.Linq.DataContext;
#else
using DataContext = DbLinq.Data.Linq.DataContext;
#endif

namespace DbLinq.Data.Linq.Sugar.Implementation
{
    internal partial class ExpressionDispatcher
    {

        /// <summary>
        /// Returns a registered column, or null if not found
        /// This method requires the table to be already registered
        /// </summary>
        /// <param name="table"></param>
        /// <param name="name"></param>
        /// <param name="builderContext"></param>
        /// <returns></returns>
        protected virtual ColumnExpression GetRegisteredColumn(TableExpression table, string name,
                                                               BuilderContext builderContext)
        {
            return
                (from queryColumn in builderContext.EnumerateScopeColumns()
                 where queryColumn.Table.IsEqualTo(table) && queryColumn.Name == name
                 select queryColumn).SingleOrDefault();
        }

        /// <summary>
        /// Returns an existing table or registers the current one
        /// </summary>
        /// <param name="tableExpression"></param>
        /// <param name="builderContext"></param>
        /// <returns>A registered table or the current newly registered one</returns>
        public virtual TableExpression RegisterTable(TableExpression tableExpression, BuilderContext builderContext)
        {
            // 1. Find the table in current scope
            var foundTableExpression = (from t in builderContext.EnumerateScopeTables()
                                        where t.IsEqualTo(tableExpression)
                                        select t).SingleOrDefault();
            if (foundTableExpression != null)
                return foundTableExpression;
            // 2. Find it in all scopes, and promote it to current scope.
            foundTableExpression = PromoteTable(tableExpression, builderContext);
            if (foundTableExpression != null)
                return foundTableExpression;
            // 3. Add it
            builderContext.CurrentSelect.Tables.Add(tableExpression);
            return tableExpression;
        }

        /// <summary>
        /// Promotes a table to a common parent between its current scope and our current scope
        /// </summary>
        /// <param name="tableExpression"></param>
        /// <param name="builderContext"></param>
        /// <returns></returns>
        protected virtual TableExpression PromoteTable(TableExpression tableExpression, BuilderContext builderContext)
        {
            int currentIndex = 0;
            SelectExpression oldSelect = null;
            SelectExpression commonScope = null;
            TableExpression foundTable = null;
            do
            {
                // take a select
                oldSelect = builderContext.SelectExpressions[currentIndex];

                // look for a common scope
                if (oldSelect != builderContext.CurrentSelect)
                {
                    commonScope = FindCommonScope(oldSelect, builderContext.CurrentSelect);
                    if (commonScope != null)
                        // if a common scope exists, look for an equivalent table in that select
                        for (int tableIndex = 0; tableIndex < oldSelect.Tables.Count && foundTable == null; tableIndex++)
                        {
                            if (oldSelect.Tables[tableIndex].IsEqualTo(tableExpression))
                            {
                                // found a matching table!
                                foundTable = oldSelect.Tables[tableIndex];
                            }
                        }
                }
                ++currentIndex;
            }
            while (currentIndex < builderContext.SelectExpressions.Count && foundTable == null);

            if (foundTable != null)
            {
                oldSelect.Tables.Remove(foundTable);
                commonScope.Tables.Add(foundTable);
            }
            return foundTable;
        }

        /// <summary>
        /// Find the common ancestor between two ScopeExpressions
        /// </summary>
        /// <param name="a"></param>
        /// <param name="b"></param>
        /// <returns></returns>
        protected virtual SelectExpression FindCommonScope(SelectExpression a, SelectExpression b)
        {
            for (var aScope = a; aScope != null; aScope = aScope.Parent)
            {
                for (var bScope = b; bScope != null; bScope = bScope.Parent)
                {
                    if (aScope == bScope)
                        return aScope;
                }
            }
            return null;
        }

        /// <summary>
        /// Registers a column
        /// This method requires the table to be already registered
        /// </summary>
        /// <param name="table"></param>
        /// <param name="memberInfo"></param>
        /// <param name="name"></param>
        /// <param name="builderContext"></param>
        /// <returns></returns>
        public ColumnExpression RegisterColumn(TableExpression table,
                                               MemberInfo memberInfo, string name,
                                               BuilderContext builderContext)
        {
            if (memberInfo == null)
                return null;
            var queryColumn = GetRegisteredColumn(table, name, builderContext);
            if (queryColumn == null)
            {
                table = RegisterTable(table, builderContext);
                queryColumn = CreateColumn(table, memberInfo, builderContext);
                builderContext.CurrentSelect.Columns.Add(queryColumn);
            }
            return queryColumn;
        }

        /// <summary>
        /// Registers a column with only a table and a MemberInfo (this is the preferred method overload)
        /// </summary>
        /// <param name="tableExpression"></param>
        /// <param name="memberInfo"></param>
        /// <param name="builderContext"></param>
        /// <returns></returns>
        public ColumnExpression RegisterColumn(TableExpression tableExpression, MemberInfo memberInfo,
                                               BuilderContext builderContext)
        {
            var dataMember = builderContext.QueryContext.DataContext.Mapping.GetTable(tableExpression.Type).RowType
                .GetDataMember(memberInfo);
            if (dataMember == null)
                return null;
            return RegisterColumn(tableExpression, memberInfo, dataMember.MappedName, builderContext);
        }

        public ColumnExpression CreateColumn(TableExpression table, MemberInfo memberInfo, BuilderContext builderContext)
        {
            var dataMember = builderContext.QueryContext.DataContext.Mapping.GetTable(table.Type).RowType
                .GetDataMember(memberInfo);
            if (dataMember == null)
                return null;
            return new ColumnExpression(table, dataMember);
        }

        /// <summary>
        /// Creates a default TableExpression
        /// </summary>
        /// <param name="tableType"></param>
        /// <param name="builderContext"></param>
        /// <returns></returns>
        public virtual TableExpression CreateTable(Type tableType, BuilderContext builderContext)
        {
            return new TableExpression(tableType, DataMapper.GetTableName(tableType, builderContext.QueryContext.DataContext));
        }

        /// <summary>
        /// Registers an association
        /// </summary>
        /// <param name="tableExpression">The table holding the member, to become the joinedTable</param>
        /// <param name="tableMemberInfo"></param>
        /// <param name="otherType"></param>
        /// <param name="builderContext"></param>
        /// <returns></returns>
        public virtual TableExpression RegisterAssociation(TableExpression tableExpression, MemberInfo tableMemberInfo,
                                                           Type otherType, BuilderContext builderContext)
        {
            IList<MemberInfo> otherKeys;
            TableJoinType joinType;
            string joinID;
            var theseKeys = DataMapper.GetAssociation(tableExpression, tableMemberInfo, otherType, out otherKeys,
                                                      out joinType, out joinID, builderContext.QueryContext.DataContext);
            // if the memberInfo has no corresponding association, we get a null, that we propagate
            if (theseKeys == null)
                return null;

            // the current table has the foreign key, the other table the referenced (usually primary) key
            if (theseKeys.Count != otherKeys.Count)
                throw Error.BadArgument("S0128: Association arguments (FK and ref'd PK) don't match");

            // we first create the table, with the JoinID, and we MUST complete the table later, with the Join() method
            var otherTableExpression = new TableExpression(otherType, DataMapper.GetTableName(otherType, builderContext.QueryContext.DataContext), joinID);

            Expression joinExpression = null;

            var createdColumns = new List<ColumnExpression>();
            for (int keyIndex = 0; keyIndex < theseKeys.Count; keyIndex++)
            {
                // joinedKey is registered, even if unused by final select (required columns will be filtered anyway)
                Expression otherKey = RegisterColumn(otherTableExpression, otherKeys[keyIndex], builderContext);
                // foreign is created, we will store it later if this assocation is registered too
                Expression thisKey = CreateColumn(tableExpression, theseKeys[keyIndex], builderContext);
                createdColumns.Add((ColumnExpression)thisKey);

                // if the key is nullable, then convert it
                // TODO: this will probably need to be changed
                if (otherKey.Type.IsNullable())
                    otherKey = Expression.Convert(otherKey, otherKey.Type.GetNullableType());
                if (thisKey.Type.IsNullable())
                    thisKey = Expression.Convert(thisKey, thisKey.Type.GetNullableType());
                // the other key is set as left operand, this must be this way
                // since some vendors (SQL Server) don't support the opposite
                var referenceExpression = Expression.Equal(otherKey, thisKey);

                // if we already have a join expression, then we have a double condition here, so "AND" it
                if (joinExpression != null)
                    joinExpression = Expression.And(joinExpression, referenceExpression);
                else
                    joinExpression = referenceExpression;
            }
            // we complete the table here, now that we have all join information
            otherTableExpression.Join(joinType, tableExpression, joinExpression);

            // our table is created, with the expressions
            // now check if we didn't register exactly the same
            var existingTable = (from t in builderContext.EnumerateScopeTables() where t.IsEqualTo(otherTableExpression) select t).SingleOrDefault();
            if (existingTable != null)
                return existingTable;

            builderContext.CurrentSelect.Tables.Add(otherTableExpression);
            foreach (var createdColumn in createdColumns)
                builderContext.CurrentSelect.Columns.Add(createdColumn);
            return otherTableExpression;
        }

        /// <summary>
        /// Registers an external parameter
        /// Since these can be complex expressions, we don't try to identify them
        /// and push them every time
        /// The only loss may be a small memory loss (if anyone can prove me that the same Expression can be used twice)
        /// </summary>
        /// <param name="expression"></param>
        /// <param name="alias"></param>
        /// <param name="builderContext"></param>
        /// <returns></returns>
        public virtual InputParameterExpression RegisterParameter(Expression expression, string alias, BuilderContext builderContext)
        {
            var queryParameterExpression = new InputParameterExpression(expression, alias);
            builderContext.ExpressionQuery.Parameters.Add(queryParameterExpression);
            return queryParameterExpression;
        }

        public virtual void UnregisterParameter(InputParameterExpression expression, BuilderContext builderContext)
        {
            builderContext.ExpressionQuery.Parameters.Remove(expression);
        }

        /// <summary>
        /// Registers a MetaTable
        /// </summary>
        /// <param name="metaTableType"></param>
        /// <param name="aliases"></param>
        /// <param name="builderContext"></param>
        /// <returns></returns>
        public virtual MetaTableExpression RegisterMetaTable(Type metaTableType, IDictionary<MemberInfo, MutableExpression> aliases,
                                                             BuilderContext builderContext)
        {
            MetaTableExpression metaTableExpression;
            if (!builderContext.MetaTables.TryGetValue(metaTableType, out metaTableExpression))
            {
                metaTableExpression = new MetaTableExpression(aliases, metaTableType);
                builderContext.MetaTables[metaTableType] = metaTableExpression;
            }
            return metaTableExpression;
        }

        /// <summary>
        /// Registers a where clause in the current context scope
        /// </summary>
        /// <param name="whereExpression"></param>
        /// <param name="builderContext"></param>
        public virtual void RegisterWhere(Expression whereExpression, BuilderContext builderContext)
        {
            builderContext.CurrentSelect.Where.Add(whereExpression);
        }

        /// <summary>
        /// Registers all columns of a table.
        /// </summary>
        /// <param name="tableExpression"></param>
        /// <param name="builderContext"></param>
        /// <returns></returns>
        public virtual IEnumerable<ColumnExpression> RegisterAllColumns(TableExpression tableExpression, BuilderContext builderContext)
        {
            foreach (var metaMember in builderContext.QueryContext.DataContext.Mapping.GetTable(tableExpression.Type).RowType.PersistentDataMembers)
            {
                yield return RegisterColumn(tableExpression, metaMember.Member, builderContext);
            }
        }

        /// <summary>
        /// Registers an expression to be returned by main request.
        /// The strategy is to try to find it in the already registered parameters, and if not found, add it
        /// </summary>
        /// <param name="expression">The expression to be registered</param>
        /// <param name="builderContext"></param>
        /// <returns>Expression index</returns>
        public virtual int RegisterOutputParameter(Expression expression, BuilderContext builderContext)
        {
            var scope = builderContext.CurrentSelect;
            var operands = scope.Operands.ToList();
            for (int index = 0; index < operands.Count; index++)
            {
                if (ExpressionEquals(operands[index], expression))
                    return index;
            }
            operands.Add(expression);
            builderContext.CurrentSelect = (SelectExpression)scope.Mutate(operands);
            return operands.Count - 1;
        }

        protected virtual bool ExpressionEquals(Expression a, Expression b)
        {
            // TODO: something smarter, to compare contents and not only references (works fine only for columns)
            return a == b;
        }

        /// <summary>
        /// Registers the table as returned by the SQL request.
        /// Actually, the table is split into its columns.
        /// </summary>
        /// <param name="tableExpression"></param>
        /// <param name="dataRecordParameter"></param>
        /// <param name="mappingContextParameter"></param>
        /// <param name="builderContext"></param>
        /// <returns></returns>
        protected virtual Expression GetOutputTableReader(TableExpression tableExpression,
                                                          ParameterExpression dataRecordParameter, ParameterExpression mappingContextParameter,
                                                          BuilderContext builderContext)
        {
            var bindings = new List<MemberBinding>();

            foreach (ColumnExpression columnExpression in RegisterAllColumns(tableExpression, builderContext))
            {
                MemberInfo memberInfo = columnExpression.StorageInfo ?? columnExpression.MemberInfo;
                PropertyInfo propertyInfo = memberInfo as PropertyInfo;
                if (propertyInfo == null || propertyInfo.CanWrite)
                {
                    var parameterColumn = GetOutputValueReader(columnExpression,
                                                               dataRecordParameter, mappingContextParameter, builderContext);
                    var binding = Expression.Bind(memberInfo, parameterColumn);
                    bindings.Add(binding);
                }
            }
            var newExpression = Expression.New(tableExpression.Type);
            var initExpression = Expression.MemberInit(newExpression, bindings);
            return initExpression;
        }

        /// <summary>
        /// Builds a Row builder, based on a given list of parameters
        /// </summary>
        /// <param name="tableType"></param>
        /// <param name="parameters"></param>
        /// <param name="builderContext"></param>
        /// <returns></returns>
        public virtual LambdaExpression BuildTableReader(Type tableType, IList<string> parameters, BuilderContext builderContext)
        {
            var dataRecordParameter = Expression.Parameter(typeof(IDataRecord), "dataRecord");
            var mappingContextParameter = Expression.Parameter(typeof(MappingContext), "mappingContext");
            //var table = builderContext.QueryContext.DataContext.Mapping.GetTable(tableType);
            var bindings = new List<MemberBinding>();
            for (int parameterIndex = 0; parameterIndex < parameters.Count; parameterIndex++)
            {
				var parameter = parameters[parameterIndex];
				var memberInfo = tableType.GetTableColumnMember(parameter);
                if (memberInfo == null)
                {
                    memberInfo = tableType.GetSingleMember(parameter, BindingFlags.Public | BindingFlags.NonPublic
                                                                      | BindingFlags.Instance | BindingFlags.IgnoreCase);
                }
                // TODO real error
                if (memberInfo == null)
                    throw new ArgumentException(string.Format("Invalid column '{0}'", parameter));
                //var column = DataMapper.GetColumnName(tableType, memberInfo, builderContext.QueryContext.DataContext);
                //var columnName = DataMapper.GetColumnName(tableType, memberInfo, builderContext.QueryContext.DataContext);
                var invoke = GetOutputValueReader(memberInfo.GetMemberType(), parameterIndex, //GetTableIndex(parameters, columnName),
                                                  dataRecordParameter, mappingContextParameter);
                var parameterColumn = GetOutputValueReader(invoke, dataRecordParameter, mappingContextParameter,
                                                           builderContext);
                var binding = Expression.Bind(memberInfo, parameterColumn);
                bindings.Add(binding);
            }
            var newExpression = Expression.New(tableType);
            var initExpression = Expression.MemberInit(newExpression, bindings);
            return Expression.Lambda(initExpression, dataRecordParameter, mappingContextParameter);
        }

        protected virtual int GetTableIndex(IList<string> parameters, string columnName)
        {
            int index = parameters.IndexOf(columnName);
            if (index >= 0)
                return index;
            for (index = 0; index < parameters.Count; index++)
            {
                if (string.Compare(parameters[index], columnName, true) == 0)
                {
                    return index;
                }
            }
            return -1;
        }

        /// <summary>
        /// Creates an entity set creator, to be used at run-time
        /// </summary>
        /// <param name="expression"></param>
        /// <param name="dataRecordParameter"></param>
        /// <param name="mappingContextParameter"></param>
        /// <param name="builderContext"></param>
        /// <returns></returns>
        protected virtual Expression GetEntitySetBuilder(EntitySetExpression expression,
                                                          ParameterExpression dataRecordParameter, ParameterExpression mappingContextParameter,
                                                          BuilderContext builderContext)
        {
            var entityType = expression.EntitySetType.GetGenericArguments()[0];
            List<ElementInit> members = new List<ElementInit>();
            var add = expression.EntitySetType.GetMethod("Add",
                    BindingFlags.NonPublic | BindingFlags.Instance,
                    null,
                    new Type[] { typeof(KeyValuePair<object, MemberInfo>) },
                    null);

            foreach (var info in expression.Columns)
            {
                var column = info.Key;
                var tk = info.Value;
                MemberInfo memberInfo = column.StorageInfo ?? column.MemberInfo;
                PropertyInfo propertyInfo = memberInfo as PropertyInfo;
                if (propertyInfo == null || propertyInfo.CanWrite)
                {
                    var parameterColumn = GetOutputValueReader(column,
                            dataRecordParameter, mappingContextParameter, builderContext);
                    members.Add(Expression.ElementInit(add,
                            new Expression[]{
                                Expression.New(typeof(KeyValuePair<object, MemberInfo>).GetConstructor(new Type[]{typeof(object), typeof(MemberInfo)}),
                                    Expression.Convert(parameterColumn, typeof(object)),
                                    Expression.Constant(tk.Member, typeof(MemberInfo)))}));
                }
            }

            return Expression.ListInit(
                    Expression.New(
                        expression.EntitySetType.GetConstructor(
                            BindingFlags.NonPublic | BindingFlags.Instance,
                            null,
                            new[] { typeof(DataContext) },
                            null),
                        Expression.Constant(builderContext.QueryContext.DataContext)),
                    members);
        }

        /// <summary>
        /// Registers the expression as returned by the SQL request.
        /// </summary>
        /// <param name="expression"></param>
        /// <param name="dataRecordParameter"></param>
        /// <param name="mappingContextParameter"></param>
        /// <param name="builderContext"></param>
        /// <returns></returns>
        protected virtual Expression GetOutputValueReader(Expression expression,
                                                          ParameterExpression dataRecordParameter, ParameterExpression mappingContextParameter,
                                                          BuilderContext builderContext)
        {
            int valueIndex = RegisterOutputParameter(expression, builderContext);
            return GetOutputValueReader(expression.Type, valueIndex, dataRecordParameter, mappingContextParameter);
        }

        /// <summary>
        /// Registers the ColumnExpression as returned by the SQL request.
        /// </summary>
        /// <param name="expression"></param>
        /// <param name="dataRecordParameter"></param>
        /// <param name="mappingContextParameter"></param>
        /// <param name="builderContext"></param>
        /// <returns></returns>
        protected virtual Expression GetOutputValueReader(ColumnExpression expression,
                                                          ParameterExpression dataRecordParameter, ParameterExpression mappingContextParameter,
                                                          BuilderContext builderContext)
        {
            int valueIndex = RegisterOutputParameter(expression, builderContext);
            Type storageType = expression.StorageInfo != null ? expression.StorageInfo.GetMemberType() : null;
            return GetOutputValueReader(storageType ?? expression.Type, valueIndex, dataRecordParameter, mappingContextParameter);
        }

        /// <summary>
        /// Registers the expression as returned column
        /// </summary>
        /// <param name="columnType"></param>
        /// <param name="valueIndex"></param>
        /// <param name="dataRecordParameter"></param>
        /// <param name="mappingContextParameter"></param>
        /// <returns></returns>
        protected virtual Expression GetOutputValueReader(Type columnType, int valueIndex, ParameterExpression dataRecordParameter,
                                                          ParameterExpression mappingContextParameter)
        {
            var propertyReaderLambda = DataRecordReader.GetPropertyReader(columnType);
            Expression invoke = new ParameterBinder().BindParams(propertyReaderLambda,
                dataRecordParameter, mappingContextParameter, Expression.Constant(valueIndex));
            if (!columnType.IsNullable())
                invoke = Expression.Convert(invoke, columnType);
            return invoke;
        }
    }

    class ParameterBinder
    {
        Dictionary<Expression, Expression> map;

        public Expression BindParams(LambdaExpression expr, params Expression[] args)
        {
            map = new Dictionary<Expression, Expression>();

            if (expr.Parameters.Count != args.Length)
                throw new NotImplementedException();
            for (int i = 0; i < expr.Parameters.Count; ++i)
                map[expr.Parameters[i]] = args[i];
            return Visit(expr.Body);
        }

        Expression Visit(Expression expr)
        {
            switch (expr.NodeType)
            {
                case ExpressionType.Call:
                    MethodCallExpression call = expr as MethodCallExpression;
                    Expression[] new_args = new Expression[call.Arguments.Count];
                    for (int i = 0; i < new_args.Length; ++i)
                        new_args[i] = Visit(call.Arguments[i]);
                    return Expression.Call(call.Object, call.Method, new_args);
                case ExpressionType.Parameter:
                    Expression new_expr;
                    if (map.TryGetValue(expr, out new_expr))
                        return new_expr;
                    break;
                default:
                    throw new Exception("Can't handle " + expr.NodeType);
            }

            return expr;
        }
    }
}

redpajama_set_name: RedPajamaGithub


With a week to go before the big day, I've need to get something off my chest: If I hear Paul McCartney's "Wonderful Christmastime" again I'm going to convert to Norse paganism, grab a battle-ax and lay waste to the local all-holiday radio station.
The choir of children sing their song!
"SECURITY! A Viking just killed the board op!
Save us from the wrath of the Northmen!"
The ex-Beatle abomination is number one on my list and I can't even bear to embed the video. But there are other horrifying songs that litter airwaves, malls and waiting rooms in an effort to ruin this time of year.
Republicans Trying to Stop In-Flight Cellphones?
We all know the pre-flight drill: Place your tray table in the upright and locked position. Make sure your seat belt is fastened. All electronic devices must be turned off.
At last, the FCC is considering getting rid of the cellphone ban since there is no evidence that their use causes any safety issues. Seeing the nanny state rolled back even a little is a welcome sight, albeit a shocking one.


text:
Q: Navigate to different pages on the basis of group name in flutter I have created one application in which all the group names are fetched. Now, I want the functionality in which if I click on group name "Technical", I will be redirected to UI Page of Technical group. When I click on group name "Medical", I will be redirected to UI Page of Medical group and in similar manner. UI of all the pages are different. I have used firebase as backend. I am new to flutter and will be very much grateful to you if you can help me.
Source code of group_chat_screen.dart:
import 'package:chat_app/group_chats/create_group/add_members.dart';
import 'package:chat_app/group_chats/group_chat_room.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';

class GroupChatHomeScreen extends StatefulWidget {
  const GroupChatHomeScreen({Key? key}) : super(key: key);

  @override
  _GroupChatHomeScreenState createState() => _GroupChatHomeScreenState();
}

class _GroupChatHomeScreenState extends State<GroupChatHomeScreen> {
  final FirebaseFirestore _firestore = FirebaseFirestore.instance;
  final FirebaseAuth _auth = FirebaseAuth.instance;
  bool isLoading = true;

  List groupList = [];

  @override
  void initState() {
    super.initState();
    getAvailableGroups();
  }

  void getAvailableGroups() async {
    String uid = _auth.currentUser!.uid;

    await _firestore
        .collection('users')
        .doc(uid)
        .collection('groups')
        .get()
        .then((value) {
      setState(() {
        groupList = value.docs;
        isLoading = false;
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    final Size size = MediaQuery.of(context).size;

    return Scaffold(
      appBar: AppBar(
        title: Text("Groups"),
      ),
      body: isLoading
          ? Container(
              height: size.height,
              width: size.width,
              alignment: Alignment.center,
              child: CircularProgressIndicator(),
            )
          : ListView.builder(
              itemCount: groupList.length,
              itemBuilder: (context, index) {
                return ListTile(
                  onTap: () => Navigator.of(context).push(
                    MaterialPageRoute(
                      builder: (_) => GroupChatRoom(
                        groupName: groupList[index]['name'],
                        groupChatId: groupList[index]['id'],
                      ),
                    ),
                  ),
                  leading: Icon(Icons.group),
                  title: Text(groupList[index]['name']),
                );
              },
            ),
      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.create),
        onPressed: () => Navigator.of(context).push(
          MaterialPageRoute(
            builder: (_) => AddMembersInGroup(),
          ),
        ),
        tooltip: "Create Group",
      ),
    );
  }
}

Source code of group_chat_room.dart:
import 'package:chat_app/group_chats/group_info.dart';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';

class GroupChatRoom extends StatelessWidget {
  final String groupChatId, groupName;

  GroupChatRoom({required this.groupName, required this.groupChatId, Key? key})
      : super(key: key);

  final TextEditingController _message = TextEditingController();
  final FirebaseFirestore _firestore = FirebaseFirestore.instance;
  final FirebaseAuth _auth = FirebaseAuth.instance;

  @override
  Widget build(BuildContext context) {
    final Size size = MediaQuery.of(context).size;

    return Scaffold(
      appBar: AppBar(
        title: Text(groupName),
        actions: [
          IconButton(
              onPressed: () => Navigator.of(context).push(
                    MaterialPageRoute(
                      builder: (_) => GroupInfo(
                        groupName: groupName,
                        groupId: groupChatId,
                      ),
                    ),
                  ),
              icon: Icon(Icons.more_vert)),
        ],
      ),
    );
  }
}

A: it' very easy just check your group name in onTap and according to your group name use if else condition and navigate to that screen:
          ListView.builder(
          itemCount: groupList.length,
          itemBuilder: (context, index) {
            return ListTile(
              onTap: () {
        if(groupList[index]['name']=="Technical"){

        Navigator.of(context).push(
                MaterialPageRoute(
                  builder: (_) => TechnicalChatRoom(
                    groupName: groupList[index]['name'],
                    groupChatId: groupList[index]['id'],
                  ),
                ),
                   }

         if(groupList[index]['name']=="Arts"){

       MaterialPageRoute(
                  builder: (_) => ArtsChatRoom(
                    groupName: groupList[index]['name'],
                    groupChatId: groupList[index]['id'],
                  ),
                ),
          and so on
           .......
                  ...

             }

              ),}
               ,
              leading: Icon(Icons.group),
              title: Text(groupList[index]['name']),
            );
          },
        ),

redpajama_set_name: RedPajamaStackExchange


text:
Download Demographic Change and Intergenerational Justice: The by Wolfgang Lutz, Vegard Skirbekk (auth.), Jörg Chet Tremmel PDF
By Wolfgang Lutz, Vegard Skirbekk (auth.), Jörg Chet Tremmel (eds.)
Intergenerational justice has been accomplished if the possibilities of the contributors of the following iteration to meet their wishes are larger than these of the individuals of the previous new release. For this, every one iteration should go away for the subsequent new release an quantity of assets is at the least equivalent to its personal amount.
The booklet offers with the complicated dating among intergenerational justice and demographic swap and is characterised by way of its interdisciplinary strategy. The authors come from a mess backgrounds and from numerous nations. This illustrates the consequences of the demographic shift from many alternative views. The ebook bargains not just with the points of financial coverage but additionally with environmental, societal and philosophical matters. the great quantity consists of 5 sections that pinpoint demographic traits, learn the influence of demographic adjustments on key symptoms, examine the connection among key symptoms and intergenerational justice, scrutinize inhabitants guidelines, and at last suggest how you can enforce long term pondering on those issues.
Read or Download Demographic Change and Intergenerational Justice: The Implementation of Long-Term Thinking in the Political Decision Making Process PDF
Best graphic arts books
Automatic beautifier for drawings and illustrations
We describe a mode for inferring constraints which are fascinating for a given (rough) drawing after which enhancing the drawing to fulfill the restrictions anywhere attainable. the tactic has been carried out as a part of an internet photos editor working less than the UNIX™ working process and it has gone through variations in line with person enter.
Gonadotropin - A Medical Dictionary, Bibliography, and Annotated Research Guide to Internet References
It is a 3-in-1 reference e-book. It provides an entire clinical dictionary protecting countless numbers of phrases and expressions on the subject of gonadotropin. It additionally supplies huge lists of bibliographic citations. eventually, it presents info to clients on the right way to replace their wisdom utilizing numerous net assets.
Chaîne Opératoire de la Poterie: Références Ethnographiques, Analyses et Reconstitution
Demographic Yearbook Annuaire demographique 2002
Roseola - A Medical Dictionary, Bibliography, and Annotated Research Guide to Internet References
Methylphenidate - A Medical Dictionary, Bibliography, and Annotated Research Guide to Internet References
Bildatlas der Lungen- und Pleurasonographie 4. Auflage
Bangkok (Topographics)
Golden Century of Venetian Painting
Additional resources for Demographic Change and Intergenerational Justice: The Implementation of Long-Term Thinking in the Political Decision Making Process
Period fertility, in turn, results from a combination of cohort fertility and shifts in the timing of fertility, which can have different determinants. Finally, we assume that the level of cohort fertility is also influenced by norms indicating the ideal personal family size. These norms are subject to changes, as will be described. In studies dealing with the determinants of birth rates, it is not yet common to clearly distinguish between these four different levels of measuring reproduction. If it were to be used more consistently, it could help avoid unnecessary confusion.
But there are likely to be all kinds of nonlinearities and possible feedback loops that may result in a bifurcation process. This may include what sociologists might call a change in the demographic regime. For fertility, this may imply that once fertility has fallen below certain levels, and stayed there for a certain time, it might be very difficult, if not impossible, to reverse such a regime change. Recent work by Rindfuss et al. (2004) on social transitions in Japan supports this assumption of nonlinear, self-reinforcing processes in social change, with thresholds and tipping points.
Every line of argumentation concerning the link between interests of different generations rests on the insight that the market economy system does not contain a guarantee for expansion in time. Scarcities vary not only between shrinking and expanding markets, which is a vital feature of the ordinary structural change, but also between different economic states of generations. The commons – an image that is often cited in the theory of public goods – is the location of conflicting interests not only within a generation, but also between different generations – generations whose size and structure are still unknown.
azianpamu E-books > Graphic Arts > Download Demographic Change and Intergenerational Justice: The by Wolfgang Lutz, Vegard Skirbekk (auth.), Jörg Chet Tremmel PDF
Download [INCOMPLETE] A Course in Phonology by Iggy Roca, Wyn Johnson PDF
Download Bipolar Disorder - A Medical Dictionary, Bibliography, and by Icon Health Publications, Health Publica Icon Health PDF

redpajama_set_name: RedPajamaCommonCrawl


text:
Муритиба () — муниципалитет в Бразилии, входит в штат Баия. Составная часть мезорегиона Агломерация Салвадор. Входит в экономико-статистический микрорегион Санту-Антониу-ди-Жезус. Население составляет 32 874 человека на 2006 год. Занимает площадь 110,562 км². Плотность населения — 297,3 чел./км².

История
Город основан 8 августа 1919 года.

Статистика
 Валовой внутренний продукт на 2003 составляет 61.100.236,00 реалов (данные: Бразильский институт географии и статистики).
 Валовой внутренний продукт на душу населения на 2003 составляет 1.848,55 реалов (данные: Бразильский институт географии и статистики).
 Индекс развития человеческого потенциала на 2000 составляет 0,676 (данные: Программа развития ООН).

Муниципалитеты штата Баия

redpajama_set_name: RedPajamaWikipedia


text:
Business knowledge for the global media,
entertainment & technology community
Create & Produce
Audio Technologies
Content Acquisition
Post Production & VFX
MovieLabs
Compression/Codecs
Content Transcoding
Graphics & Branding
Media Transport
Displays/Screens
Content Piracy
High Dynamic Range (HDR)
High Frame Rate (HFR)
IP and Cloud
Audiences and Advertising
Connected TV & Devices
Social Media TV
Smart Media Technologies
Monetise
Programmatic and addressable platforms
IBC TV
IBC VOD Topics
Telco & Media
IBC Daily
IBC Daily Topics
Technology & Engineering Emmy Awards winners announced
Oscars 2020: A closer look at the Cinematography award nominees
Sohonet acquires Exchange
Industry simplifying UX is "game-changing," says DPP
Peacock unveiled: Freemium SVoD and subscription service
CES 2020: Evolution, expectation and innovation
Universal and Warner Bros. propose joint DVD venture
Comcast NBCUniversal launches global tech startup accelerator
China dominates global esports consumption
M&A to top the media and entertainment agenda in 2020
IBC365 Webinars
Top 10: Create & Produce
2019-12-16T15:37:00+00:00By George Bevir
As the year draws to a close, we take a look at some of the most popular news and industry trend articles in our Create & Produce category.
2019 review: The technology shaping content creation
2019-12-11T13:45:00+00:00By Adrian Pennington
Interactive drama, games engines, holograms, aerial spectaculars and digital cosmetics showed the blend of content and tech innovation has never been stronger
Live music broadcasting: the new frontier for next gen audio?
2019-12-02T16:51:00+00:00By David Davies
Live production with NGA has been dominated by sports. But could live music be the next opportunity for immersive sound? David Davies investigates.
New World Symphony: Orchestral academy gets ready for 4K HDR
The world-renowned Miami classical music institution is approaching the completion of an ambitious multi-year upgrade, writes David Davies.
Behind the scenes: War of the Worlds
The War of the Worlds started on the radio, but the sound is just as important in the latest small screen turn of the HG Wells classic. Adrian Pennington goes behind the scenes of the audio behind the BBC's new TV adaptation.
Behind the scenes: Diego Maradona
Editor Chris King and director Asif Kapadia tackle Argentina's footballing enigma, Diego Maradona, in this documentary which comes to DVD this month
Machine learning audio software firm secures $3.3m funding
Audio repair software developer Accusonus has raised $3.3 million in Series A funding.
Vision mixers: Switching it up
The art of production mixing may not have changed profoundly in recent years, but the call to deliver to extra platforms and satisfy more streamlined productions are among the trends heralding fresh challenges for system developers.
Applying automation to high quality/low cost orchestra live streaming
2019-10-17T14:29:00+01:00By D. R. Chalmers
In this paper, BBC Scotland explores the use of robotic pan-tilt-zoom (PTZ) cameras to capture an orchestral concert for live streaming.
Marconi: towards an integrated, intelligent radio production platform
2019-10-17T07:00:00+01:00By Rik Bauwens, Sandy Claes
In this paper, VRT explores integrated tools in audio technology for 21st-century radio production.
Flexible virtualisation of radio production and playout
2019-10-17T07:00:00+01:00By J.E.Kivelä
In this paper, Jutel Oy explores virtual browser-based radio production.
Evolution of radio services in the era of voice-controlled digital assistants
2019-10-17T07:00:00+01:00By P. Casagranda, F. Russo, R. Teraoni Prioletti
In this paper, Rai explores the impact of voice-controlled digital assistants on the evolution of radio services.
DAB over IP
2019-10-17T07:00:00+01:00By Alexander Erk & Fabian Sattler
In this paper, IRT explores DAB and IP as technical solutions for radio streaming.
How to tell a better story
2019-10-01T15:59:00+01:00By Carolyn Giardina
Sound should be used to help editors tell the story. Sound editor Tormod Ringnes speaks to Carolyn Giardina about the impact of immersive sound technology.
IBC2019 Keynote: Cinematic trailblazer Andy Serkis
IBC2019: Actor and director Andy Serkis discusses his journey into performance capture and the ethics of capturing actors' likenesses in his IBC2019 Keynote session.
IBC2019 Panel Interview: Jorma Kivela, Rik Bauwens and Paolo Casagranda
IBCTV casts an ear to advances in the radio market
IBC2019 Preview: Monday
2019-09-15T14:24:00+01:00By James Pearce
IBC2019: Highlights from across the conference and exhibition including the content everywhere hall and hub and the Monday mega movie showcasing Toy Story 4.
IBC2019 Preview: Friday
2019-09-12T14:23:00+01:00By Alana Foster
IBC2019: Highlights and the must-see conference sessions, feature areas, Elton John's Rocket Man on the Big Screen, and AWS 4K Charity run sign up.
Five steps to take the challenge of expanded networks
2019-09-12T13:22:00+01:00Brought to you by 2wcom
Over the last couple years, professional Audio-over-IP-(AoIP) distribution has established itself in the broadcast-universe and keeps evolving constantly. Certain requirements when covering daily program distribution or even live events, are increasing - the five essentials: Compatibility, high audio quality, flexibility, transmission robustness and simplicity.
Interview: Nuno Fonseca, Sound Particles
2019-09-09T11:29:00+01:00By Paul Bray
Applying the techniques of 3D video animation to sound creation could take cinema audio to a new level of realism, Sound Particles' Nuno Fonseca tells Paul Bray.
Insight: Your guide to IBC2019
IBC preview magazine Insight contains interviews with keynote speakers, an overview of some of the technology trends that will dominate IBC2019 as well as guides to the show's exciting and innovative features, from the Future Zone to the Esports Showcase.
The state of spatial sound
2019-08-09T09:43:00+01:00By Kevin Hilton
Advances in technology and new media devices are bringing premium features like immersive audio to a wider audience. Kevin Hilton looks at how market leader Dolby Atmos got to this point and the current state of the spatial sound market.
Audio industry moves to IP and virtualisation
The International Trade Association for Broadcast and Media Technology have released a new Audio Business report examining the current state of the industry which identifies key drivers of change.
Small, mobile, intelligent: the evolution of broadcast microphones
Alongside audio quality and RF spectrum efficiency, the call for more discreet form factors is driving the design of broadcast microphones – especially in this era of increasingly high-resolution TV, writes David Davies.
Behind the Scenes: Apollo 11
2019-06-26T08:00:00+01:00By Andy Stout
A new documentary film about the Apollo 11 Moon Landing features previously unseen 70mm footage that helps provide a whole new take on the mission and its legacy as it nears its 50th Anniversary.
BBC completes groundbreaking ViLoR local radio project
Five years after the first few installations took place, the BBC has signed off on its new centralised virtual local radio infrastructure. David Davies finds out more from lead project manager Geoff Woolf.
Netflix rolls out 'studio quality' audio
Netflix has boosted the quality of its Dolby Atmos audio in a bid to "bring viewers closer to the story."
Next-generation OBs: 4K, IP and immersive audio
4K, IP and immersive audio are among the technologies impacting dramatically on the design and build of new OB units, writes David Davies.
SMPTE calls to students
Applications for the Society of Motion Picture and Television Engineers (SMPTE) annual student paper award and scholarship have opened.
Inside the Berlin Philharmonic's Digital Concert Hall
The Berlin Philharmonic's decision to stream its concerts in high-quality audio and video has seen it push both technical as well as creative boundaries, writes David Davies.
Oscars 2019: The winners
2019-02-25T15:22:00+00:00By Joe Crimp
Bohemian Rhapsody, Black Panther and Roma were among the big winners at Sunday night's Oscars ceremony.
Broadcasting theatre on the big screen
2019-02-15T12:15:00+00:00By George Jarrett
The National Theatre is home to world-class productions and performances, but how are the plays broadcast to cinemas around the world?
Immersive audio: A multitude of possibilities
For vendors, arguably the greatest challenge at this point resides in satisfying the continually evolving ways in which broadcasters and content creators wish to apply immersive audio techniques, writes David Davies.
2019 Oscars: Inside the best cinematography and VFX categories
From shooting in black and white to creating in-camera effects, we take a look at the technology and technique behind Oscar nominated films.
Behind the scenes: A Quiet Place
Ethan Van der Ryn and Erik Aadahl, the supervising sound editors of Oscar-nominated A Quiet Place, on establishing the rules of silence and the shock of what happens if you break it.
2018's most-read Production articles
From the restoration of Peter Jackson's WWI epic They Shall Not Grow Old to behind the scenes of Love Island and the impact of AI, holograms and Brexit on the media industry, we look at the most popular Production articles of 2018.
BBC and C4 triumph at RTS Awards
The Royal Television Society (RTS) 2018 Craft and Design Awards have awarded the best in UK broadcast television from directing and effects to costume and make up.
Amplifying the sound of silence
Audio is key to bringing natural history stories to life, say filmmakers who have used Dolby Atmos to enhance their films.
Driving immersive audio forward at Sky
Sky is one of a handful of global broadcasters taking a prominent role in evolving the use of Dolby Atmos in live events, Andy Stout reports.
Plazamedia blazes IP trail
2018-10-25T06:00:00+01:00By Mark Hallinger
In consciously opting against a hybrid solution for its new broadcast centre, German sports producer Plazamedia has created a modern, future-proof system as SMPTE 2110 approaches.
Immersive drives audio capture at IBC
There's a huge amount of change taking place in the audio business, driven by the move towards immersive sound. Nowhere was this clearer than at this year's IBC.
On-demand webinar: Accelerating innovation across Media & Entertainment
This IBC365 webinar outlines and explains the collaborative Media-Telecom Catalyst innovation programme and how you can get involved in designing solutions to current media & entertainment challenges.
DABbling in in-car audio
In-car listening presents a huge opportunity for the DAB radio industry, believes Arqiva's Simon Mason.
Smart speakers and public service broadcasters
If 2017 was the year that smart speaker hype reached its peak, 2018 may well prove to be the year they will have moved into the mainstream, writes EBU Project Manager Ben Poor.
Satellite technology: Advances in connectivity
2018-10-09T11:55:00+01:00By Ian McMurray
Over the past several months, it has become clear that, in many ways, far from being a distinct sector, the satellite industry is a microcosm of the larger broadcast industry in which it operates.
SMPTE advances immersive audio standardisation
New immersive audio standards have been published by SMPTE for distribution and consistent playout of various immersive sound systems.
IBC2018 Tech Talks: AI in production
AI is here to stay, and in the area of production it is set to revolutionise working practice. Explore how in technical papers from BBC R&D, Media Distillery & NHK and watch their IBC2018 Tech Talks.
Object-audio capture systems for sports broadcast
2018-09-27T09:09:00+01:00By Dr.-Ing. Renato S. Pellegrini and Dr.Ing. Alexander Krüger Véronique Larcher
The benefits to using audio as a primary method of delivering new experiences, particularly during a sports event, it is the audio that best engages consumers with the atmosphere of the stadium.
Sound and fury: Bringing Dolby Atmos to the NHRA
2018-09-27T09:08:00+01:00By Michael Babbitt
The National Hot Rod Association (NHRA) approached Dolby Laboratories in early 2017 to explore what value immersive audio might bring to the NHRA's television broadcasts.
Interview: Lisa Tobin, New York Times
2018-09-26T07:00:00+01:00By Lorcan Archer
Providing narrative perspective in a US news environment that's in total overdrive is a daily challenge along with the changing audio consumption habits Lisa Tobin confronts, executive producer of audio and editor of The Daily podcast at the New York Times.
Delivering next-gen audio for everyone
The audio renderer has long been a bone of contention in the standardisation work on Next Generation Audio (NGA), writes EBU Senior Project Manager Roger Miles.
Why AI may never match craft skills in production
2018-09-17T09:21:00+01:00By David Wood
IBC2018: The strongest case for the use of AI production tools is in lower cost genres of television, says BBC AI Research Engineer Craig White.
Case study: Shifting from ISDN to IP
2018-09-10T12:03:00+01:00Brought to you by Digigram
Digigram's IQOYA Call IP audio codec and IQOYA Cloud management system are helping Danish radio station DR make a controlled shift toward audio over IP, enabling the public broadcaster to address the gradual extinction of ISDN connections and making it easy for staff to realise the cost and quality benefits ...
IP opportunities: German broadcasters' real world usage
Transmitting via IP offers broadcasters the possibility of interconnecting radio, video and internet perfectly, writes 2wcom Chief Executive Werner Drews.
Immersive technology: A unique opportunity for the industry
2018-08-30T14:22:00+01:00Brought to you by Genelec
The broadcast industry has been experiencing a tremendous transformation since the arrival of the Internet, and digital convergence has become a reality, writes Genelec R&D Director Aki Makivirta.
What benefits can radio-as-a-service bring?
The broadcast industry is adopting cloud solutions at an astounding rate. Thanks to data portability and standardisation of systems, we will soon have access to radio-as-a-service, explains Digigram Head of Marketing Pascal Malgouyard.
Tuning radio for South Sudan
2018-07-04T07:32:00+01:00By John Maxwell Hobbs
Most stories about new broadcast facilities are all about beautiful buildings designed by 'starchitects' featuring soaring atriums and state-of-the-art studios and production systems. This is not one of them. This is the story of tin-roofed, mudbrick buildings with no air-conditioning, and brand new, old-fashioned analogue production kit.
Craft Leaders: Julian Slater, Sound Designer
Oscar-nominated sound designer Julian Slater speaks about new ways of editing sound and why the term 'immersive' can be a red herring.
Spotlight on: Mobile journalists
Mobile video journalists (MoJo) from CBC, RTE and BBC offer insight into how technology has revolutionised reporting, the impact of mobile apps and the threat to traditional reporting.
Audio leads IP, VR and AR transformation
NAB 2018: In the past few years there has been more parity between audio and video, and no longer is the cliche "audio is the poor relation to video" trotted out at exhibitions.
On-demand webinar: Transforming live sports production with Artificial Intelligence
2018-04-18T12:27:00+01:00Sponsored by Tedial
Watch now to hear key players discuss real world experience of the role AI is taking in live sports.
Capturing clean audio
With the quality of audio capture integral to the success of a production, IBC365 speaks with industry experts to examine the changing requirements production sound mixers and the response of manufacturers.
On-demand webinar: NAB Show 2018 Deconstructed
Not everything that happens in Vegas stays in Vegas: IBC365 is joined by a panel of industry experts to review what went on, what was hot, and what happened at the NAB 2018 conference and show floor.
Object-based audio: Slicing and dicing sound for broadcast
Object-based audio promises immersion, accessibility, personalisation and interactivity, but fears of a format war persist.
Delivering the story: Newsroom technology
In the first of a two part series on newsroom technology, George Jarrett talks to the BBC and vendors about enabling journalists and delivering content to digital and broadcast platforms.
Blog: Building a worse mousetrap
"Good enough," is not a phrase usually heard in the corridors of broadcasters unless it's following the words "that's not", writes John Maxwell Hobbs.
The New Canvas: How emerging tech is changing storytelling
Technicolor CTO Jon Walkenhorst and colleagues discuss how emerging technology is changing the way stories are told.
Video: BBC R&D's work with object-based media
Andrew Mason, Senior Technologist at BBC R&D, speaks about the Orpheus research project and explains how the BBC is experimenting with object-based audio.
Hearing the future: The immersive sound revolution
2017-12-19T16:30:00+00:00By Amelia Kallman
New techniques for capturing and delivering audio will be part of even more immersive experiences, writes Amelia Kallman.
IBC2017 technical papers: Audio
Technical papers on audio presented at IBC2017 included UK startup Salsa Sound, which went on to win the IABM Annual Conference Dragons' Den competiton earlier this month for its live sports broadcast system.
Automatic generation of audio descriptions for sports programs
2017-11-03T09:57:07.397+00:00By K Kurihara and A Imai et al.
NHK has developed a means of automatically generating auxiliary audio descriptions from metadata for use in live TV sports programs.
Experiments in immersion
2017-11-03T09:56:28.097+00:00By O. Spall G. Thomas Z. Watson and M. Glancy
Case study: The BBC has over forty VR, 360 video and immersive audio experiments, that teams across the corporation have developed, covering a broad range of topics.
Automatic sound source localisation for object-based audio recording
2017-10-26T12:00:00+01:00By N. Epain and J. Daniel
The ORPHEUS research project aims to invent new workflows for producing, broadcasting and playing back object-oriented audio content.
Enhanced next generation audio for live sports broadcast
2017-10-26T12:00:00+01:00By R. G. Oldfield and B. G. Shirley
Sports broadcasters benefit from a more adaptive scenebased audio capture and rendering, commonly referred to as Next Generation Audio (NGA).
ORPHEUS audio project
2017-10-26T12:00:00+01:00By A Silzle and M Weitnauer et al.
Object-based media is a revolutionary approach for creating and deploying interactive, personalised, scalable and immersive content.
The power of the podcast
2017-09-19T11:00:00+01:00By Chris Forrester
IBC2017: The final instalment of the popular What Caught My Eye series of sessions concluded with producer and social media expert Muki Kulhan scouring the exhibition halls to come up with her best buys for web-broadcasters.
The potential of object-based audio for broadcasters
Object-based audio allows for greater personalisation of content but the underlying technology needs to be open to allow for interoperability, writes Roger Miles.
Dolby honoured for 50 years of innovation
IBC2017: Dolby Laboratories recognised for its 50 years of audio innovation receiving the International Honour for Excellence at the IBC Awards Ceremony.
Object-based audio for television
2017-04-26T09:00:00+01:00By Steven A. Silva 21st Century Fox USA
Since the beginning of TV production, channel based audio mixing has been the norm.
Audio for television – how AES67 and uncompressed 2022/2110/TR03 video fit together
2017-04-04T14:10:00+01:00By Leigh Whitcomb Imagine Communications Canada
In today's TV production environment, audio can take two forms: embedded audio and independent audio.
EBU loudness specification changes
2017-04-03T10:00:00+01:00By Florian Camerer ORF
In 2016, the European Broadcasting Union (EBU) updated all of its loudness specifications, except for the core, EBU R128 itself.
The wall of moments: An immersive event experience at home
2017-03-27T16:13:00+01:00By R. Bauwens T. Deboosere M. Matton L. Overmeire Vlaamse Radio-en Televisieomroeporganisatie
Within the ICoSOLE project, different (cost-effective) ways of capturing spatially outspread events are being considered.
A framework for a content-based hybrid content radio
2017-03-27T16:08:00+01:00By Paolo Casagranda Rai – Radiotelevisione Italiana Centre for Research and Technology Innovation It
This paper gives an overview of the recent experimental services proposed by a group of European Broadcasters exploring the potentialities of a hybrid approach for audio in radio.
Making audio sound better one square wave at a time
2017-03-24T17:05:00+00:00By Leif Claesson Omnia Audio USA
For the past three decades, FM broadcasters have been engaged in what have become known as the "loudness wars",
How AES-67, the new audio-over-IP standard, will bring the convergence of telecommunications, studio audio, and intercom
2017-03-24T16:58:00+00:00By G.F. Shay and M.J. Dyster The Telos Alliance USA
At the present time, audio technology is leveraging audio over IP technology at the basic network transport level, but is not taking advantage of all the benefits that are possible.
Reverse engineering emotions in an immersive audio mix format
2017-03-22T14:57:00+00:00By Sreejesh Nair Solutions Specialist Audio Avid Re-Recording Mixer
A lot has been written about the techniques and methods employed in creating a stereo mix or mix for music.
Video translation: Weaving synthetic voices into the multilingual production workflow
2017-03-16T16:49:00+00:00By S.A.K. Weber and X. Bai BBC News Labs
The plethora of digital platforms makes information available in a great number of languages, and the expectation of audiences to be able to consume media in their own languages is growing.


It is recommended that users of the New Mexico SHM enter into the manual each time via the internet since the manual is frequently updated and revised. If bookmarked on a desktop, it is important to use the refresh mode or button on your computer each time entering into the New Mexico SHM. This will ensure the most current bookmarked manual is up to date.
The New Mexico SHM and resources are provided in Adobe Acrobat format. To view them, the Adobe Acrobat Reader software must be installed on your computer or device. If you're having trouble opening any of these documents, please work with your school administrators.
To learn more about the New Mexico SHM, please contact the Regional School Health Advocate in your area. The guide to revisions, contact information, resources, and directory of web links are now maintained within the manual itself. Please look to the manual to access this information from now on.


text:
Hundreds of portals are earning cryptos with a WordPress Plugin- TREND CRYPT
By Joao J. On Jun 22, 2020
Did you know that 37% of all the millions of pages on the Internet, in any language or anywhere, are supported by WordPress? Yes, it is, and now hundreds of them are passively earning cryptos thanks to a WordPress Plugin.
Is that the arrival of this new plugin, a few months ago, has already resulted in more than 300 sites earning cryptocurrencies in WordPress. What a surprise!
This plugin called, "Wpcryptoexchange" was released last April, by Draper's partner Goren Holm, Alon Goren.
The WordPress Plugin that allows you to earn crypto
In April, Goren developed the "Crypto Exchange WordPress plugin" better known as "Wpcryptoexchange". Based on Totle technology, which is a wallet that allows you to access different crypto exchanges at the same time and get the best price for buying and selling cryptocurrencies.
The WordPress plugin automatically finds users the best price for the crypto you are trying to trade. Goren said he had the idea for a while, and once the COVID-19 pandemic hit, earlier this year, he took it as a project.
As a result, operators of these websites with the WordPress plugin already installed, can choose whether or not they charge fees and also set those fees. Also, the plugin is open source and can be customized. In fact, it works with a wide range of wallets.
Similarly, he said he is also considering adding technology-based functionalities from other Draper Goren Holm companies.
Also, see potential in creating a Totle-based plugin. To allow readers to tip content creators with micropayments, without transaction costs turning those tips into dust.
Totle created a really cool way for developers to add a decentralized exchange and get the best prices within their dapps. I had told them that the next thing to do was create a WordPress plugin to make things easier for everyone.And boy, have they succeeded. "
According to Goren, it only takes a few clicks to implement the plugin, and users can choose whether or not to charge fees to monetize and thus generate some extra income.
The plugin finds the best rate to complete an exchange through a connected wallet. Undoubtedly, it works with a wide range of mobile and desktop Web3 wallets, including Metamask, Brave, TrustWallet, Coinbase Wallet, Enjin, and Opera.
For now, the WordPress plugin allows people to exchange various cryptos, including Ethereum (ETH), DAI, Basic Attention Token (BAT), and Wrapped Bitcoin (WBTC), a crypto built in Ethereum but that keeps a value of 1: 1 with BTC. , using someone's WordPress site that has the plugin installed.
"We will see adding other cryptocurrencies to the list of currencies supported by Wpcryptoexchange in the near future."
The WordPress plugin team expressed
Since the initial launch, Goren revealed on June 19, the Crypto Exchange WordPress plugin now has approximately 300 active installs.
"I just checked and there are over 300 active installations of the Crypto Exchange WordPress plugin"Goren tweeted.
To conclude, Alon Goren explained that WordPress was chosen due to its overwhelming popularity:
"WordPress feeds 37% of the web and is, without a doubt, the easiest and most customizable solution so that anyone can boost their websites and what better opportunity for cryptocurrencies is that a plugin of these characteristics is part of this ecosystem."
New real owner passes digital business on to Schwarz Group | message
Watch: Anderson Cooper gives parenting advice from his mother Gloria Vanderbilt on 'WWHL'


Since 2003, Joseph Camilleri has worked in the Litigation and Alternative Dispute Resolution department of the firm on assignments encompassing several aspects of civil and commercial litigation, including bank finance, real estate and asset recovery in the shipping and aviation industries.
Joseph also works in the administrative law sector, particularly in the fields of public procurement, private-public partnerships and planning law. In this regard he regularly assists Government entities in legal issues relating to the drafting of tender documents and in the evaluation of tenders, as well as in the implementation of contracts following awards. He also regularly represents clients – hailing both from the public and private sectors – in proceedings before the Public Procurement Review Board and in appeals before the Superior Courts.
In the field of planning law, Joseph has represented several clients in the private sector in planning appeals and has also worked closely with architects and architecture firms on projects requiring permits and authorisations.
Represented foreign banks in asset repossession proceedings in Malta involving multi-million dollar claims.
In 2016, successfully represented a client in one of the very few company recovery proceedings ever filed in Malta.
In the past years, he has been involved in a number of tender proceedings related to major contracts relating to transport and port services.


text:
Daily Feline Prompt: Feline Friends
Posted in Challenge, daily prompt	by angloswiss
"Do I have to say it Mrs. Human?"
"No, I don't think so Tabby. It is quite clear, the word "friend" does not exist in meow, at least not at a close distance."
"Exactly, just in Pawbook and Meower."
"You are in Meower? What name do you use."
"Sexy Lady of course, it is incognito."
"I suppose it is. You must be quite popular."
"I am, I share my meows with at least 200 other felines."
"I suppose they are mostly of the male sort, with such a name."
"Oh no, there are many females asking for advice about territorial rights. It often happens that the tom cats want to move in on the territory. Sabrina, one of my meowing colleagues, told me that Tarzan wanted to attack her with not very ladylike ideas."
"What did you advise?"
"I told her to tell him she had an unforgettable visit to the vet and had no interest in his ideas."
"It was not as bad as it seemed. Tarzan was just showing off and he broke down and began to meow. He said it was only a show for the other tom cats, but he had also left a few parts behind at the vets. Now Sabrina and Tarzan are the best of friends and all the other felines respect them and bring them offerings of tuna fish and catnip."
"Meower sounds quite good."
"Yes, we are all friends there. Of course many of us are in Pawbook sharing hisses."
"You share hisses?"
"Of course, doing likes is not the feline way. I hiss at Tiddles and he might give me a paw swipe. It is all very friendly online."
"I assume a paw swipe is a hug."
"Yes, Mrs. Human, you are now getting the idea. Of course if it wasn't for our leader, Meow Pawberg, we would be nowhere. It was his idea. He was a stray in his home town and to keep warm at night he would sleep in the local power station between the cables. Once he had a catmare and awoke and clung onto a cable. There was a terminal that lit up and it wrote "Where do you want to go today". Meow Pawberg said he wanted to meet other Felines and was connected. He soon discovered that there were a lot a lonely felines searching for social contact, because normal contact did not exist in the feline world. You know territorial fights and all that, and so he invented Pawbook. He now has millions of felines all over the world hissing and swiping to each other constantly. There are even groups like "For felines after the ultimate vet visit" or "How to get the most out of your catnip."
"Seems quite an organisation Tabby."
"It is, you are never alone if you are in Pawbook. Now I must go, I am the group leader of "How to enslave your humans that they do not notice", it is very popular, especially amongst the newbies who are taking over a new home."
cats, Daily Feline Prompt, daily prompt, Feline Friends	19 Comments
« Daily Feline Prompt: Feline Window
Daily Feline Prompt: Feline Price »
19 thoughts on "Daily Feline Prompt: Feline Friends"
franhunne4u
Tabby, for my two normal contact DOES exist … maybe you are mistaken? I find them quite often sharing my bed or my sofa – whatever I want to use …
They do it all by meow telepathy of course. You think they are sharing? They are planning on a take over.
Jonathan Caswell
GOOD JOB!!!!! PURRR, PURRR!
Hissss, hisss, purrrr triple-meow, we are just purrrrrfect
HISSS, HISS-? 🙂 Sounds like SOMEONE has territorial issues about strangers coming into THEIR yard! 😀
No problem, Tabby just runs through the cat flap, it is her way of solving any misunderstandings
Understood. It's been a while since we've had a cat in the house, but we remember! Our medical issues why we don't now.
Dear Tabby, Another difference between canines and felines, maybe, though my human tells me that her Russian Blue, Fred, once brought home a friend who looked just like him and was soon named Eddie. My human says they hung out together all the time. I suggested — based on your discussions — that maybe they weren't "friends" and she just said, "They looked like they were." Canines always like to make friends, but there are limits. My adopted brother, Cody, was always asserting his dominion over me and it was painful. Yours forever and ever, Dusty T. Dog
They were probably on the same wave length, which can happen in the telepathic communication. With canines I think it depends on how many bones they have buried and the bark tone, which probably depends more on the decibels and the amplitude in the intensity of the waves. We felines prefer to use our brain frequences.
With a telepathic meow – Tabby
Our cat, Big Guy, had a best friend. Bonnie (another Bonnie) … a tiny ferret. She was Big Guy's best pal and they were inseparable. He got along with dogs pretty well, but wasn't enthusiastic about other cats. He was definitely happiest with other non-feline species. A strange and wonderful cat who did not live nearly long enough.
The best always die young it seems. I am sure Tabby misses Nera now and again, I know we all do. She was the only cat that Tabby accepted, but she was the boss of course. They were litter sisters. Otherwise Tabby is a loner, although she quite likes Mr. Swiss, but we all do.
nonsmokingladybug
That's the difference between cats and dogs. Dogs have friends, there whole being is centered around friendship, to be in a pack. I have two feral cats who live in my workroom during the wintertime. I can't say that they are my friends, because I feel that they only tolerate me.
Our puppy is trying to be friends with them and it's the most pathetic thing I have ever seen. The cats look rather arrogant -or bored- while Patches try to convince them to play. I am having a ball
I think that felines are the fifth column of the animal world. They trust no-one, not even themselves. Our Tabby sort of disappears if she hears or sees a dog. We have never had a dog and she is not used to them. I once counted at least 12 felines in the neighbourhood, but they all seem to know each other, and tend to go out of each other's way. Tabby had no problem with her late litter sister Nera, they were born and grew up together. Fluffy was always the odd one out, but they tolerated him and there were no real feline fights, just a hiss and a paw swipe now and again.
There is the saying "Dogs look up to you and cats look down."
I think the cats secretly laugh about our dogs, but I can't proof it 🙂
I think my cats always laughed at us humans, and sometimes it was not so secret by the paw marks I had.
I can ensure you they do lol.
loisajay
I am impressed that you knew a paw swipe was a hug, Mrs Angloswiss. I must ask my three to help me with the feline lingo, although they seem to like having their own language.
They definitely have their own language, trouble being we do no hear it being humans on the lower animal scale. It is only a hug in Pawbook, otherwise it is every feline for him/herself.


text:
SecureLite
SecureDentalOne Quoting Tool
SecureSTM
Add Motorcycle to Existing Policy
Remove Motorcycle from Existing Policy
Add Driver to Existing Motorcycle Policy
Remove Driver from Existing Motorcycle Policy
Add Recreational Vehicle to Existing Policy
Remove Recreational Vehicle from Existing Policy
Add Driver to Existing Recreational Vehicle Policy
Remove Driver from Existing Recreational Vehicle Policy
Request ID Card for Watercraft Policy
Add Watercraft to Existing Policy
Remove Watercraft from Existing Policy
Change Primary Operator on Existing Watercraft Policy
About The Insurance Store
Home > Homeowners > Homeowners Insurance Quote
Do you currently have insurance?
Current Premium
Current Insurance Provider
Months With Company
Current Policy End Date
Dwelling Information
2019 2018 2017 2016 2015 2014 2013 2012 2011 2010 2009 2008 2007 2006 2005 2004 2003 2002 2001 2000 1999 1998 1997 1996 1995 1994 1993 1992 1991 1990 1989 1988 1987 1986 1985 1984 1983 1982 1981 1980 1979 1978 1977 1976 1975 1974 1973 1972 1971 1970 1969 1968 1967 1966 1965 1964 1963 1962 1961 1960 1959 1958 1957 1956 1955 1954 1953 1952 1951 1950 1949 1948 1947 1946 1945 1944 1943 1942 1941 1940 1939 1938 1937 1936 1935 1934 1933 1932 1931 1930 1929 1928 1927 1926 1925 1924 1923 1922 1921 1920 1919 1918 1917 1916 1915 1914 1913 1912 1911 1910 1909 1908 1907 1906 1905 1904 1903 1902 1901 1900
Composition (fiberglass, asphalt, etc.) Asbestos shakes Copper Cedar Shakes Steel/Porcelain Shingles Plastic Recycled Roofing Products Roll Roofing Single Ply Membrane Systems Tar and Gravel Cedar Shingles Metal Concrete Tile Poured Rock Slate Tile Aluminum Shingles Wood Shake / Shingles Clay Tile Other
Frame Brick Masonry Aluminum Siding Other
Date of Original Purchase
Number of families living in home?
Number of bedrooms?
Liability Limit
$100,000 $250,000 $500,000
Deductible Amount
No Yes, Small Dog Yes, Large Dog Yes, Multiple Dogs
Claims/Property Losses in Past 5 Years (Please Explain)


It was dark and stormy night. No, wait. It was sunny? That's right. And the middle of the afternoon. A nice lazy, sunny afternoon with temperate weather and the birds, thankfully, being quiet so as not to wake the sleepy pups. (The pups that had finally laid down to sleep after an hour walk that morning and a never-ending wrestling match on the living room floor afterwards. I digress.) Theresa and I were sitting in our front room, doing some work, when all of a sudden we heard it. That slight jingling glint that accompanies my worst nightmares. It was the sound of dog tags that belong on the little black and brown dog that lives just around the corner from us. What causes the nightmare-inducing terror you ask? Well, let me tell you. It is the fact that this dog, when he (or she) gets out of his house he makes a beeline straight for our front door, and I literally mean our Front Door. This dog, whenever he gets loose (which is quite a lot), runs as fast as his little legs can carry him over to our door and proceeds to attack it because he knows Rosee will be on the other side of it. Rosee, who hears him come by now of course, is right at the door barking her head off.
scarily . . . annoying!
What's worse is that the offending dog's owners don't seem to really care about his neighborhood exploits. We've even had some of the dog's human family members (kids as well as adults) come around the corner looking and calling for their dog, and yet all they do when they see them running amuck in our front yard is to stand there and watch. It isn't until either our mother or Theresa (in a state of anger), after pushing Rosee back, goes out front to tell them to get their dog away from our yard that the dog is then finally captured and taken home.
What's worse than worse? This afternoon's incident is about the tenth time it's happened. The tenth you say? Preposterous you exclaim? Outlandish you yell? Outrageous you shout?
I say, yes, it's true. The tenth time.
The people are always slightly apologetic to our faces, but I've started to doubt their sincerity after the third time it happened. It was after this tenth time though that Theresa had really had enough. She marched out our front door and told the two kids that had run up to get (i.e. watch) the dog that they needed to keep their dog off of our front yard and away from our house because he attacks our front door and pees all over the yard. The kids agreed and quickly left. However, it was about five minutes later that some of the adults apparently piled in their car and came to do a slow drive-by of our house. The nerve! All I wanted to shout at them is that we have nothing to be ashamed of, and that they all need to start taking more responsibility for their animal. Theresa swore that the next time this all happens (because let's face it there will be a next time) she is going to call animal control. Fact is, in our city any dogs that are found to be running loose and acting vicious and aggressive can be reported, and this particular dog is doing just that. Of course, it's not an easy decision deciding to make a report to animal control, the department certainly isn't known for leniency, but it's necessary.
And I am not going to try and be shamed for having my house and dog attacked again, and my sister telling off the kids that are responsible for said attacker. I'm not going to be shamed for expecting better of my neighbors (and of their children). I'm not going to be shamed for hoping for a little more respect and consideration from others for my dogs.
My dogs don't pee on their lawns (or poop for that matter). My dogs don't get loose and run all over the neighborhood. My dogs don't attack other people's front doors. (And the world would see their breed banned and destroyed!) I think it's only fair that I expect my neighbors to offer me and mine the same courtesy that we show them.


text:
March is Reading Month a cool treat in Brighton
Mike Lammi
Nine-year-old Charlie Burchfield likes to read. He also likes eating frozen yogurt.
Now Charlie and other kids can enjoy doing both at the same time, thanks to a letter he wrote as part of a class project at Hornung Elementary School in the Brighton Area Schools district.
Third-graders in teacher Laurie Yokie's class were asked to pen letters to local businesses, encouraging them to get involved with March is Reading Month.
Charlie wrote and hand-delivered his letter to YoFresh Yogurt Cafe in the Brighton Mall.
His approximately 250-word letter asked if YoFresh "could put books around comfortable seating for kids to enjoy."
"I believe that when people come in they should read 5 to 10 minutes," the letter added.
YoFresh owner Michael Anderson said when he saw Charlie's letter, he knew he wanted to do something to help.
"I have young kids, and I just thought this was great," he said. "It probably took him two hours to write this letter by the time he got it on paper with such neat penmanship."
Anderson and YoFresh employee Denise Coughlin have assembled a collection of books for kids and their families to read at the shop. Selections range from Dr. Seuss to a children's book titled "The Petal Pals" that Coughlin wrote years ago. Visitors can take home a free copy of Coughlin's book.
Charlie is the son of Andy and Marcie Burchfield. He said he likes to read books about sports and Mark Twain's "The Adventures of Huckleberry Finn."
Yokie said all 30 students in her class wrote letters to local businesses, and several other businesses have responded and are doing things to encourage kids to read.
"The class looked for businesses in the community that their family loved and that were kid-friendly. A lot of kids wanted to do YoFresh, but we had to divide it up," Yokie said.
"Even kids who haven't heard back from their business still take pride that they are all part of it, because we did this together as a class," she added.
Chris Darkowski, a literacy instructional coach for Brighton Area Schools, got the idea for the letter-writing project after listening to Teachers College, Columbia University professor Ernest Morrell speak at a workshop.
"He found that any time children can express their voice and influence change in their community, that's the biggest motivator to help them learn," Darkowski said. "Just getting them to see that their words and actions can change someone else's thinking is the biggest impact."
Charlie's parents said he was nervous when he had to hand-deliver the letter — something each student had to do as part of the project. It also was a way to make sure parents were involved.
"Parents had to drive their kids, and they really jumped on board," Yokie said.
Contact Livingston Daily reporter Mike Lammi at 517-552-2854 or at mlammi@livingstondaily.com.


Everyone works come harvest; here's our real-estate agent pitching in by driving the tractor!
Avio in the Snow - A Rare Occurrence!
Thanks to Lydell Photography for many of these inspirational photos.
Welcome to the west...Avio Style!
An annual summer tradition at Avio.


Green Chalcedony Earrings – Chalcedony brings the mind, body and spirit into alignment.
Green Chalcedony Oval Earrings – Chalcedony brings the mind, body and spirit into alignment. It sends feelings of generosity and benevolence to you. Chalcedony removes unwanted feelings of hostility and removes sadness.


text:
Don't keep kids cooped up this winter break. Try these activities.
Jeremy Ervin
Times Herald
With school out until next year and gifts to unwrap, it's not possible your kids could be bored, is it? If so, consider checking out some of these activities over winter break.
Sock Wars
When: Dec. 27 — 11 a.m. to 1 p.m.
Where: Palmer Park Recreation Center, 2829 Armour St., Port Huron
What: Participants can build forts, throw socks and strategize with their friends at this indoor event. Kids will be split up into age groups, recommended for ages 4 through 14 years old. Pre-registration not required.
Peter Schriemer: America's Nature Guy
When: Dec. 27 — 2 to 3 p.m.
Where: McMorran Place Sports & Entertainment Center, 701 McMorran Blvd., Port Huron
Cost: Students and children 12 and younger, $6; adults $10; family of 4, $25
What: Peter Schriemer has produced nature content for the likes of Animal Planet, PBS and the Smithsonian Channel. He's coming to Port Huron to help children learn to "safely explore the natural world." Tickets are available at bit.ly/2BTKgK2.
Winter Wonderland Art
Where: Port Huron Museum, 1115 Sixth St., Port Huron
Cost: Members $4; guests $8
What: Create some winter-themed crafts, such as turning a sock into a snowman. Participants are recommended to dress to get dirty. Recommended for ages 8 to 12 years old.
The Detroit Circus
Cost: Students-children under 12, $6; adults $10; family 4 pack, $25
What: An animal-free circus specializing in acrobatics and other gravity defying acts. Sideshow acts are performed in between feats of strength, fire eating, contortion and trapeze tricks and more.
The Story of Ferdinand Storytime
When: Dec. 30 — 11 a.m.
Where: Barnes and Noble, 4325 24th Ave., Fort Gratiot
What: Children can be read the original story of Ferdinand the bull, written by Munro Leaf in 1936 and now adapted to the 2017 film "Ferdinand." Maybe afterwards, go see the motion picture at Sperry's Moviehouse.
YMCA Holiday Membership
When: Dec. 11 — Dec. 31
Where: Blue Water YMCA, 1525 3rd St., Port Huron
Cost: Youth-high school, $10; college, $20; adult, $30; household, $35
What: The YMCA offers a short-term membership through the rest of December. A variety of programs are available at this time, with complete listings available at http://bit.ly/2ktvOyu. Some of the programs include:
Family Pool Party: Dec. 29, 6 to 8 p.m., $5 per person, free for members and children under 3 years old.
New Year's Eve at the Y!: Dec. 31, 6 to 9 p.m., members $10 ahead of time and $15 on the day of, community fee $15 ahead of time and $20 on the day of.
Christmas Holiday Camp: Dec. 26 to 29 and Jan. 2 to 5, 6:30 a.m. to 6 p.m.; members first child $28 per day, second child $27; non-member first child $29, second child $28. Contact Audrey Mitchell for more information at amitchell@bluewaterymca.com.
Contact Jeremy Ervin at (810) 989-6276 or jervin@gannett.com. Follow him on Twitter @ErvinJeremy.


Big bright colourful artworks are a great way to introduce colour and help a room feel more 'designer'.
The larger and more abstract the artwork – the more attention grabbing it can look when it comes to online marketing for the sale of your property – helping your place stand out from the rest.
There are many supplier that sell bold and affordable artwork. Freedom has a great selection and etsy.com also has lots of unique pieces you can by from budding artists.
If you have lots of small framed prints hang in a tight cluster to create a striking gallery wall.
Looking for property stylists in Sydney?


text:
BridgnorthMuch WenlockPattingham
County Lines drugs gangs disrupted by special police operation across the region
By Sue AustinBridgnorthPublished: Jan 20, 2023
Officers across Herefordshire, Shropshire and Worcestershire have been taking part in a joint operation to challenge and disrupt County Lines drugs gangs.
Operation Radar is a targeted initiative between local policing areas, force intelligence teams and Operation Policing Units.
The aim of the operation was and remains tackling those involved in County Lines and their criminal use of the West Mercia road network.
Detective Constable Chris Stockton, the force County Lines Coordinator, said: "West Mercia Police utilised national and regional funds which were made available solely to support this operation, which took place during the first two weeks of January 2023."
County Lines, the name given to the process and operation of drugs transported from predominately larger urban areas to smaller towns, often in rural areas, refers to the mobile numbers used to order the drugs. The competition between rival gangs invariably sees innocent people caught up in the struggle for control of the drug dealing, police say.
"County Lines drug dealers will often exploit children and younger people by recruiting them to run drugs and cash between urban and county locations and to deal drugs on their behalf. Once recruited into County Lines it can be difficult for those being exploited to leave, with fear and threats of violence used to keep them in place.
"Vulnerable adults, such as those dependent on drug use, will also then be targeted and their property taken over by drug dealers in a local area. This a practice known as 'cuckooing'.
"During just this two-week period, we were able to arrest 10 people for offences including possession with intent to supply, being concerned in the supply of Class A drugs, threats to kill and drug driving, significantly disrupting two Lines in Kidderminster and Redditch.
"We issued numerous tickets for driving offences, referred one child to a local authority for safeguarding who was in a vehicle with adults that had Class A drugs in their possession, seized sizeable amounts of trafficked drugs believed to be heroin and crack cocaine worth thousands of pounds and seized and confiscated eight vehicles for various offences.
"It is important to remember that while an initiative such as Operation Radar highlights a specific activity, day in, day out our officers and staff are working hard and often in dangerous situations, to tackle County Lines gangs. We are all committed to disrupting and dismantling their drugs supply, protecting children and young people, and safeguarding those who could be vulnerable to exploitation.
"Serious and organised crime and County Lines drug dealing remain a high priority for West Mercia Police and is everyone's business. We want to make each of the three counties no-go areas for criminals travelling from elsewhere.
"Day and night, we will continue to pursue and prosecute those who bring drugs, violence and intimidation into our communities and who have no issue in exploiting the vulnerable or hurting the ones we love."
Anyone with suspicions that a property is being used to sell drugs, or that a young and vulnerable individual may be getting involved with County Lines drug dealing can report it online at westmercia.police.uk - or information can be given anonymously to Crimestoppers on 0800 555111.
More information for children and young people about County Lines can be found by visiting fearless.org, where you can access non-judgemental information and advice about crime and criminality.
South Shropshire
Sorry, we are not accepting comments on this article.
Business | 9 hours ago
Education | 9 hours ago
UK News | Just now


text:
One Night Genius () is the first Thailand reality quiz show, on Thai TV Channel 3. First broadcasting on July 3, 2006. Present by Phanya Nirunkul and Tankhun Jitissara. Production by Workpoint Entertainment Public Company Limited. In every week, 8 competitors from 8 branches of professions have competed in the contest for the 1 million baht prize (approx. $30,000) and the place where the contest is held have been changed every week.

Rules

Before the mission
 The 8 competitors who were called "genius" will come together and receive the "lifesaving" bag from the host. In the lifesaving bag, there will be 8 boxes which had
 food and eating equipment
 lighting equipment and Pliers
 consumer goods
 memo equipment
 cutting, pasting and wrapping equipment
 a mobile phone which can be used only once for 1 minute
 special equipment (changed every week, like clay or rope)
 a puzzle that will be used in the mission 3.
 Sometimes, some equipment is changed.
 A special expert from the place where the contest is held will take the genius to visit the place and told the information of the place which can be used for every mission.
 8 geniuses will go to the place that the host allot for resting, memoring or decrypting the puzzle.

Mission 1
Usually in the first mission of One Night Genius, the 8 geniuses either perform the mission as individuals or in pairs. Missions that go by the individual rule includes answering 20 questions, setting up jenga towers, etc.

A more common way to the first mission is having the 8 geniuses splitting into 4 teams of 2. Only the 3 best teams from this point proceeds to the next mission. Missions that undertake this rule includes sending signals, knock down 100 birds in one shot of a toy gun, cushion an egg for a 40m drop, pop 100 balloons with one throw of dart..etc.

Mission 2
 Second mission change every week. It has 2 versions that is
 The individual mission - 6 geniuses will do the mission alone such as answering 20 questions, set up a Jenga tower and don't make them fall etc. The 4 geniuses who can do the mission accomplished will pass to the next mission.
 The team mission - 6 geniuses will take apart into the 3 teams. Each team must do the mission together. The 2 teams which can do the mission accomplished will pass to the next mission.

Mission 3
 The 4 remain geniuses must crack the puzzle in their lifesaving bag themselves and find the only 1 correct box in 100 plastic boxes. If geniuses find the correct box they will receive the "genius password" to crack into 4 digit numbers to open the safe. However, if geniuses choose the wrong box or answer the question in their safes incorrectly they will be eliminated.
This "genius password" is considered as hi-light of game each week. Most passwords commonly use tricks in Thai language to crack them. Here are examples of passwords which are able to be explained in English.
 Tuk-Tuk in whole country with victory (ตุ๊กตุ๊กทั่วประเทศสู้ตาย) - 3762 (Tuk-Tuk has 3 wheels, Thailand has 76 provinces and victory is commonly with V-sign which has 2 fingers used)
 Press over the star then turn right (กดเหนือดาราเลี้ยวขวาเมื่อสุด) - 7412 (Use Mobile phone's keypad to solve this password, start by press 7 which is above the star button, continue going up through 4 and 1 then turn right to 2)
 007 - 2017 (This password is needed to solve by simply reading as two zeroes, one seven. Geniuses in this episode were tricked with James Bond's related)
 Ah-Un-Uh-Uh-Un (อ่างอึ่งอ๋องอ๋องอึ่ง) - 1221 (Ah means this password comes with Ah voice, then the sounds of this password is similar with One-Two-Two-One)
 The first 2 geniuses who answer the question in their safes correctly will proceed to the "Final Mission".

Final Mission
The 2 remain geniuses will come to the Workpoint Studio in Phatumthani, Thailand for the final mission. Geniuses will face Phanya Nirunkul who was hosting the final mission.
Geniuses must answer the 1 question that Phanya Nirunkul ask. Each genius can answer only twice. If any genius can answer correctly, That genius will become the "One Night Genius" and win the 1 million baht prize. However, if genius answer incorrectly twice, the other genius will become the One Night Genius and win the 1 million baht prize.
The One Night Genius will receive the 1 million baht prize in the variation of KTC's credit card from Krung Thai Card Public Co., Ltd. which can deposit from credit card or use it which amount 1 million baht. The variation of 1 million baht prize has 3 variations that is:
KTC Titanium MasterCard (Episode 1 - Episode 7)
KTC Visa Platinum (Episode 8 - Episode 27)
KTC Cash's Credit which gift 1 million baht cash. (Episode 28 - Episode 35)
KTC Millon's Credit which gift 1 million baht cash. (Episode 36 - Episode 44)
KTC I am MasterCard (Episode 45 - Episode 48)
Honda which gift 1 million baht cash. (Episode 49 - 72)

References

Thai game shows
Channel 3 (Thailand) original programming
2006 Thai television series debuts
2008 Thai television series endings
2000s Thai television series