text:
import datetime
from email import policy
import json
from queue import Queue
import time
import traceback
import urllib
import asyncio
from uuid import uuid4

from SuperGLU.Core.BlackWhiteListEntry import BlackWhiteListEntry, GatewayBlackWhiteListConfiguration
from SuperGLU.Core.FIPA.SpeechActs import REQUEST_WHENEVER_ACT, RESEND_MSG_WITH_ATTEMPT_COUNTS, QUIT_IN_X_TIME, RESEND_MSG_WITH_DEPRIORITZATION, ALL_TIME_ACCEPT_PROPOSAL_ACK

from SuperGLU.Core.Messaging import Message
from SuperGLU.Core.Messaging import VHMessage, GIFTMessage
from SuperGLU.Core.ServiceConfiguration import  ServiceConfiguration
from SuperGLU.Util.ErrorHandling import logError, logWarning
from SuperGLU.Util.Serialization import (SuperGlu_Serializable, serializeObject,
                            nativizeObject)
import stomp
from pip._vendor.retrying import Attempt

CATCH_BAD_MESSAGES = False
SESSION_KEY = 'sessionId'
ORIGINATING_SERVICE_ID_KEY = 'originatingServiceId'
USE_BLACK_WHITE_LIST = False

SEND_MSG_SLEEP_TIME = 5000
PROPOSAL_ATTEMPT_COUNT = 'noOfAttemptsForProposal'
FAIL_SOFT_STRATEGY= 'failSoftStrategyForProposedMsg'
QUIT_IN_TIME= 'quitInTime'
PROPOSED_MSG_ATTEMPT_COUNT = 'noOfAttemptsForProposedMsg';

#Modify PolicyType and Look for SuccessCallBack failSoftStrategyForProposedMsg
class Proposals(SuperGlu_Serializable):

    def __init__(self, id=None, proposal=None, proposalProcessed=False, acknowledgementReceived=False,
                 retryParams={}, policyType=ALL_TIME_ACCEPT_PROPOSAL_ACK, failSoftStrategyForProposedMsg='noOfAttempts',
                  proposedMessage={}, proposedTime=None):
        self.id = id;
        self.proposal = proposal
        self.proposalProcessed = proposalProcessed
        self.acknowledgementReceived = acknowledgementReceived
        self.retryParams = retryParams
        self.policyType = policyType
        self.failSoftStrategyForProposedMsg = failSoftStrategyForProposedMsg
        self.proposedMessage = proposedMessage
        self.proposedTime = proposedTime

    def getId(self):
        return self.id

    def setproposal(self, id):
        self.id = id

    def getProposal(self):
        return self.proposal

    def setProposal(self, proposal):
        self.proposal = proposal

    def getProposalProcessed(self):
        return self.proposalProcessed

    def setProposalProcessed(self, proposalProcessed):
        self.proposalProcessed = proposalProcessed

    def getAcknowledgementReceived(self):
        return self.acknowledgementReceived

    def setAcknowledgementReceived(self, acknowledgementReceived):
        self.acknowledgementReceived = acknowledgementReceived

    def getRetryParams(self):
        return self.retryParams

    def setRetryParams(self, retryParams):
        self.retryParams = retryParams

    def getPolicyType(self):
        return self.policyType

    def setPolicyType(self, policyType):
        self.policyType = policyType

    def getFailSoftStrategyForProposedMsg(self):
        return self.failSoftStrategyForProposedMsg

    def setFailSoftStrategyForProposedMsg(self, failSoftStrategyForProposedMsg):
        self.failSoftStrategyForProposedMsg = failSoftStrategyForProposedMsg

    def getProposedMessage(self):
        return self.proposedMessage

    def setProposedMessage(self, proposedMessage):
        self.proposedMessage = proposedMessage

    def getProposedTime(self):
        return self.proposedTime

    def setProposedTime(self, proposedTime):
        self.proposedTime = proposedTime

class ProposedMessage(SuperGlu_Serializable):
    def __init__(self, msgId = None, proposedMessage = None, numberOfRetries = 0, lastTimeSent = None):
        self.msgId = msgId
        self.proposedMessage = proposedMessage
        self.numberOfRetries = numberOfRetries
        self.lastTimeSent = lastTimeSent

    def getMsgId(self):
        return self.msgId

    def setMsgId(self, msgId):
        self.msgId = msgId

    def getProposedMessage(self):
        return self.proposedMessage

    def setProposedMessage(self, proposedMessage):
        self.proposedMessage = proposedMessage

    def getNumberOfRetries(self):
        return self.numberOfRetries

    def setNumberOfRetries(self, numberOfRetries):
        self.numberOfRetries = numberOfRetries

    def getLastTimeSent(self):
        return self.lastTimeSent

    def setLastTimeSent(self, lastTimeSent):
        self.lastTimeSent = lastTimeSent

class BaseMessagingNode(SuperGlu_Serializable):
    """ Base class for messaging """

    def __init__(self, anId=None, gateway=None, authenticator=None, nodes=[], blackList=[], whiteList=[]):
        super(BaseMessagingNode, self).__init__(anId)
        self._gateway = gateway
        self._authenticator = authenticator
        if gateway is not None:
            self.bindToGateway(gateway)
        self._requests = {}

        if nodes is None: nodes = []
        self._nodes = {}

        self.addNodes(nodes)

        #don't allow null values for the black and white list
        #not sure if this is necessary but it won't hurt
        if blackList is None:
            blackList = []

        if whiteList is None:
            whiteList = []

        self._blackList = blackList
        self._whiteList = whiteList
        self.proposals = {}
        self.prioritizedAcceptedServiceIds = {}
        self.demotedAcceptedServiceIds = []

    # Manage Child Nodes
    def addNodes(self, nodes):
        for node in nodes:
            node.bindToGateway(self)

    def getNodes(self):
        return [service for condition, service in list(self._nodes.values())]

    def register(self, node):
        """ Register the signatures of messages that the node is interested in """
        self._nodes[node.getId()] = (node.getMessageConditions(), node)

    def unregister(self, node):
        """ Take actions to remove the node from the list """
        if node.getId() in self._nodes:
            del self._nodes[node.getId()]

    def acceptIncomingMessage(self, msg):
        result = True

        if USE_BLACK_WHITE_LIST:
            for entry in self._whiteList:
                if entry.evaluateMessage(msg):
                    result = True
                    break

            for entry in self._blackList:
                if entry.evaluateMessage(msg):
                    result = False
                    break
        return result

    def sendMessage(self, msg):
        #print("%s sending %s"%(self.__class__.__name__, msg))
        if self._gateway is not None:
            #print("Actually sent it.")
            self._gateway.dispatchMessage(msg, self.getId())

        self.distributeMessage(msg, msg.getContextValue(ORIGINATING_SERVICE_ID_KEY))
        #logWarning("Message DISTRIBUTED: %s"%(msg,))

    def receiveMessage(self, msg):
        if not self.acceptIncomingMessage(msg):
            return
        self._triggerRequests(msg)

    def distributeMessage(self, msg, senderId=None):
        """ Pass a message down all interested children (except sender) """
        self._distributeMessage(self._nodes, msg, senderId)

    def _distributeMessage(self, nodes, msg, senderId=None):
        """ Implement passing a message down all interested children (except sender) """
        #print('Currently I am ' + str(self.getId()) + '. And I have ' + str(len(nodes)) + ' in my channel')
        for nodeId in nodes:
            condition = nodes[nodeId][0]
            node = nodes[nodeId][1]
            if not self.isMessageOnGatewayBlackList(node, msg) and self.isMessageOnGatewayWhiteList(node, msg):
                if ((nodeId != senderId) and ((condition  is None) or condition(msg))):
                    node.receiveMessage(msg)

    def isMessageOnGatewayBlackList(self, destination, msg):
        return False

    def isMessageOnGatewayWhiteList(self, destination, msg):
        return True

    def bindToGateway(self, gateway):
        self.unbindToGateway()
        self._gateway = gateway
        self._gateway.register(self)

    def unbindToGateway(self):
        if self._gateway is not None:
            self._gateway.unregister(self)

    def getMessageConditions(self):
        """ Function to check if this node is interested in this message type """
        return None

    def _getRequests(self):
        return list(self._requests.values())

    def _addRequest(self, msg, callback):
        if callback is not None:
            self._requests[msg.getId()] = (msg.clone(), callback)

    def _makeRequest(self, msg, callback):
        self._addRequest(msg, callback)
        self.sendMessage(msg)

    def _triggerRequests(self, msg):
        convoId = msg.getContextValue(Message.CONTEXT_CONVERSATION_ID_KEY, None)
        if convoId is not None and convoId in self._requests:
            key = convoId
            oldMsg = self._requests[key][0]
            callback = self._requests[key][1]
            callback(msg, oldMsg)
            # Remove from the requests, unless asked for a permanent feed
            if oldMsg.getSpeechAct() != REQUEST_WHENEVER_ACT:
                del self._requests[key]

    def _createRequestReply(self, msg):
        oldId = msg.getId()
        msg = msg.clone()
        msg.updateId()
        msg.setContextValue(Message.CONTEXT_CONVERSATION_ID_KEY, oldId)
        return msg

    # Pack/Unpack Messages
    def messageToString(self, msg):
        return serializeObject(msg)

    def stringToMessage(self, msg):
        if (CATCH_BAD_MESSAGES):
            try:
                msg = nativizeObject(msg)
            except:
                logWarning("ERROR: Could not process message data received.  Received:" + str(msg))
                msg = None
        else:
            msg = nativizeObject(msg)
        return msg

    def messagesToStringList(self, msgs):
        return json.dumps([self.messageToString(m) for m in msgs])

    def stringListToMessages(self, strMsgs):
        return [self.stringToMessage(sm) for sm in json.loads(strMsgs)]

    # Sends Proposal Request Message With Attempt Count.
    @asyncio.coroutine
    def sendProposal(self, msg, noOfAttempts):
        count = 1
        proposalId = msg.getContextValue(Message.PROPOSAL_KEY, None)
        proposal = self.proposals[proposalId]
        while count <= int(noOfAttempts) and proposal.getAcknowledgementReceived() == False :
            print("Send Proposal Request - Attempt " + str(count))
            self.sendMessage(msg)
            count += 1
            asyncio.sleep(SEND_MSG_SLEEP_TIME);
            if self.proposals[proposalId].getAcknowledgementReceived() == False :
                print("Timeout.")
        if count > int(noOfAttempts) and self.proposals[proposalId].getAcknowledgementReceived() == False :
            print("No Respose Received.")

    # Sends Proposed Message.
    @asyncio.coroutine
    def sendNewProposedMessage(self, msg, proposalId) :
        print('Starting to Send Proposed Message')
        self.sendMessage(msg)
        asyncio.sleep(SEND_MSG_SLEEP_TIME)
        if msg.getId() in self.proposals.get(proposalId).getProposedMessage():
            print("Seems Proposed Message Hasn't been Processed");
            self.retryProposal(proposalId)
        else :
            print("Proposed Message Sent Successfully")

    # Fail Soft Strategy 1 - Send Proposed Message With Attempt Count.
    def sendProposedMsgWithAttemptCnt(self, proposal) :
        print('Fail Soft Strategy : Sending With Attem')
        attemptCount = int(str(proposal.getRetryParams().get(PROPOSED_MSG_ATTEMPT_COUNT)))
        for key, value in proposal.getProposedMessage().items() :
            if value.getNumberOfRetries() < attemptCount :
                value.setNumberOfRetries(value.getNumberOfRetries() + 1)
                print("Send Proposed Message - Attempt " + str(value.getNumberOfRetries()))
                proposedMessageLoop = asyncio.get_event_loop()

                if proposedMessageLoop.is_running() == True :
                    asyncio.ensure_future(self.sendNewProposedMessage(value.getProposedMessage(), proposal.getId()))
                else :
                    proposedMessageLoop.run_until_complete(self.sendNewProposedMessage(value.getProposedMessage(), proposal.getId()))

    # Decides Proposed Message Strategy and delegates messages accordingly
    # to sendProposedMessage(BaseMessage msg, String proposalId).
    def sendProposedMessage(self, proposalId) :
        print('Sending')
        proposal = self.proposals[proposalId]
        if proposal.getProposalProcessed() == False :
            failSoftStrategy = proposal.getRetryParams()[FAIL_SOFT_STRATEGY] if proposal.getRetryParams()[FAIL_SOFT_STRATEGY] != None else None
            if failSoftStrategy != None :
                if failSoftStrategy == RESEND_MSG_WITH_ATTEMPT_COUNTS :
                    self.sendProposedMsgWithAttemptCnt(proposal)
                elif failSoftStrategy == QUIT_IN_X_TIME :
                    self.sendProposedMsgWithQuitXTime(proposal)
                elif failSoftStrategy == RESEND_MSG_WITH_DEPRIORITZATION :
                    self.sendProposedMsgWithPrioritization(proposal);
            else :
                #No Strategy.
                for key, value in proposal.getProposedMessages() :
                    if value.getNumberOfRetries() < 2 :
                        value.setNumberOfRetries(value.getNumberOfRetries() + 1)
                        print('Send Proposed Message - Attempt ' + str(value).getNumberOfRetries())
                        self.sendNewProposedMessage(value.getProposedMessage(), proposalId);

    # Fail Soft Strategy 2 - Send Proposed Message With Quit in X Time.
    def sendProposedMsgWithQuitXTime (self, proposal) :
        duration = str(proposal.getRetryParams().get(QUIT_IN_TIME))
        for key, value in proposal.getProposedMessages() :
            if time.time() - value.getLastTimeSent() < duration :
                value.setNumberOfRetries(value.getNumberOfRetries() + 1)
                print('Send Proposed Message')
                self.sendProposedMessage(value.getMsg(), proposal.getId())
            else :
                print("Cannot Send Message. Attempt to Send Quit After " + str(duration) + " seconds.")

    # Fail Soft Strategy 3
    def sendProposedMsgWithPrioritization(self, proposal) :
        if len(self.prioritizedAcceptedServiceIds) < 1 :
            print("Exhausted All Services")
        else :
            print("Attempting to Send Proposed Message After Prioritization")
            for key, value in proposal.getProposedMessages() :
                self.sendProposedMessage(value.getMsg(), proposal.getId());

    # Making Proposal performs 2 Tasks: maintains a list of all proposals that will be sent across and actually sends the message.
    def makeProposal(self, msg, retryParams, policyType) :
        proposalId = None;
        if msg.getContext().get(Message.PROPOSAL_KEY) is None:
            proposalId = str(uuid4())
            msg.getContext()[Message.PROPOSAL_KEY] = proposalId
        msg.getContext()[Message.CONTEXT_CONVERSATION_ID_KEY] = proposalId
        makePropsalPckt = Proposals(id = proposalId, proposal = msg, proposalProcessed = False, acknowledgementReceived = False, retryParams = retryParams, policyType = policyType, proposedTime = time.time())

        if (retryParams != None and retryParams[PROPOSAL_ATTEMPT_COUNT] != None) :
            makeProposal = int(str(retryParams[PROPOSAL_ATTEMPT_COUNT]))
            if FAIL_SOFT_STRATEGY in retryParams :
                failSoftStrategy = str(retryParams.get(FAIL_SOFT_STRATEGY))
                makePropsalPckt.setFailSoftStrategyForProposedMsg(failSoftStrategy)
                if failSoftStrategy == RESEND_MSG_WITH_ATTEMPT_COUNTS :
                    makePropsalPckt.getRetryParams()[PROPOSED_MSG_ATTEMPT_COUNT] = int(retryParams[PROPOSED_MSG_ATTEMPT_COUNT])
                elif failSoftStrategy == QUIT_IN_X_TIME :
                    makePropsalPckt.getRetryParams()[QUIT_IN_TIME]  = retryParams[QUIT_IN_TIME]
                self.proposals[proposalId] = makePropsalPckt

                if asyncio.get_event_loop() == None :
                    loop = asyncio.new_event_loop()
                else :
                    loop = asyncio.get_event_loop()
                if loop.is_running() == True :
                    asyncio.ensure_future(self.sendProposal(msg, retryParams[PROPOSAL_ATTEMPT_COUNT]))
                else :
                    loop.run_until_complete(self.sendProposal(msg, retryParams[PROPOSAL_ATTEMPT_COUNT]))

            else :
                self.proposals[proposalId] = makePropsalPckt
                self.sendMessage(msg);
        else :
                self.proposals[proposalId] = makePropsalPckt
                self.sendMessage(msg)

    # This Overridden function of Make Proposal is used when proposal exists for which Proposed Message function has failed.
    def retryProposal (self, proposalId) :
        proposal = self.proposals[proposalId]
        self.sendProposal(proposal.getProposal(), int(proposal.getRetryParams()[PROPOSAL_ATTEMPT_COUNT]));

class MessagingGateway(BaseMessagingNode):

    def __init__(self, anId=None, nodes=None, gateway=None, authenticator=None, scope=None, serviceConfiguration=None):
        if scope is None: scope = {}
        if serviceConfiguration is not None:
            super(MessagingGateway, self).__init__(anId, gateway, authenticator, nodes, serviceConfiguration.getBlackList(), serviceConfiguration.getWhiteList)
        else:
            super(MessagingGateway, self).__init__(anId, gateway, authenticator, nodes)

        self._scope = scope

        #TODO: read in from service configuration when it's ready
        self._gatewayBlackList = {}
        self._gatewayWhiteList = {}

    # Receive Messages
    def receiveMessage(self, msg):
        """ When gateway receives a message, it distributes it to child nodes """
        super(MessagingGateway, self).receiveMessage(msg)
        self.distributeMessage(msg, self.getId())

    # Relay Messages
    def dispatchMessage(self, msg, senderId=None):
        """ Send a message from a child node to parent and sibling nodes """
        self.addContextDataToMsg(msg)
        msg.setContextValue(ORIGINATING_SERVICE_ID_KEY, senderId)
        #logWarning("Message DISPATCH")
        #logWarning(msg)
        self.sendMessage(msg)
        #logWarning("Message DISPATCH SENT: %s"%(msg,))

    def addContextDataToMsg(self, msg):
        """ Add extra context to the message, if not present """
        for key in self._scope:
            if not msg.hasContextValue(key):
                msg.setContextValue(key, self._scope[key]);

    def isMessageOnDestinationList(self, entries, msg):
        if entries is not None:
            for entry in entries:
                if entry.evaluateMessage(msg):
                    return True

        return False

    def isMessageOnGatewayBlackList(self, destination, msg):
        destinationId = destination.getId()
        entries = self._gatewayBlackList.get(destinationId, [])
        result = self.isMessageOnDestinationList(entries, msg)
        allDestinationEntries = self._gatewayBlackList.get(GatewayBlackWhiteListConfiguration.ALL_DESTINATIONS, [])
        result = result or self.isMessageOnDestinationList(allDestinationEntries, msg)
        return result

    def isMessageOnGatewayWhiteList(self, destination, msg):
        destinationId = destination.getId()
        entries = self._gatewayWhiteList.get(destinationId, [])

        if entries == []:
            return True

        result = self.isMessageOnDestinationList(entries, msg)
        allDestinationEntries = self._gatewayWhiteList.get(GatewayBlackWhiteListConfiguration.ALL_DESTINATIONS, [])
        result = result or self.isMessageOnDestinationList(allDestinationEntries, msg)
        return result

    def isMessageOnGatewayExternalWhiteList(self, msg):
        if not USE_BLACK_WHITE_LIST:
            return False
        externalEntries = self._gatewayWhiteList[GatewayBlackWhiteListConfiguration.EXTERNAL_DESTINATIONS]
        result = self.isMessageOnDestinationList(externalEntries, msg)
        allDestinationEntries = self._gatewayWhiteList[GatewayBlackWhiteListConfiguration.ALL_DESTINATIONS]
        result = result or self.isMessageOnDestinationList(allDestinationEntries, msg)
        return result;

    def isMessageOnGatewayExternalBlackList(self, msg):
        if not USE_BLACK_WHITE_LIST:
            return False
        externalEntries = self._gatewayBlackList[GatewayBlackWhiteListConfiguration.EXTERNAL_DESTINATIONS]
        result = self.isMessageOnDestinationList(externalEntries, msg)
        allDestinationEntries = self._gatewayBlackList[GatewayBlackWhiteListConfiguration.ALL_DESTINATIONS]
        result = result or self.isMessageOnDestinationList(allDestinationEntries, msg)
        return result;

    # return the proposals
    def getProposals(self) :
        return self.proposals

    # proposals the proposals to set
    def setProposals(self, proposals) :
        self.proposals = proposals

class ActiveMQTopicMessagingGateway(MessagingGateway):

    TOPIC_LABEL = "/topic/"

    #This property defines to which system the activeMQ message belongs.
    MESSAGE_SYSTEM_NAME = "SYSTEM_NAME";

    #this is the identifier for SUPERGLU messages
    SUPERGLU = "SUPERGLU_MSG";
    VHMSG = "VHMSG_MSG"; #Identifier for virtual human messages
    GIFT = "GIFT_MSG"; #Identifer for GIFT messages

    MESSAGE_TYPE = "MESSAGE_TYPE"

    def __init__(self, anId=None, nodes=None, gateway=None, authenticator=None, scope=None, server = "localhost", port = "61613", AMQscope = "*"):
        super(ActiveMQTopicMessagingGateway, self).__init__(anId, nodes, gateway, authenticator, scope)
        self.m_port   = port
        self.m_AMQscope  = AMQscope
        self.m_server = server

        self.openConnection()

    #returns boolean
    def openConnection(self):
        if self.m_isOpen:
            return True
        while not self.m_isOpen:
            try:
                if self.m_server is None or self.m_server is '':
                    self.m_server = "localhost"
                if self.m_AMQscope is None or self.m_AMQscope is '':
                    self.m_AMQscope = "*"
                if self.m_port is None or self.m_port is '':
                    self.m_port = "61613"

                self.m_connection = stomp.Connection10([(self.m_server, int(self.m_port))])
                self.m_connection.set_listener('stomp_listener', self)
                self.m_connection.start()
                self.m_connection.connect()
                self.m_connection.subscribe(self.TOPIC_LABEL + self.m_scope)

                self.m_isOpen = True

                return True
            except Exception:
                print("Connection timed Out, waiting for ActiveMQ")

    def on_message(self, headers, msg):
        msg = urllib.parse.unquote(msg)
        msg = msg.replace("+", " ")

        #Only handle superglu messages like this.  for the moment we will ignore other message types until the ontology broker is ready
        if self.MESSAGE_SYSTEM_NAME in headers:
            if headers[self.MESSAGE_SYSTEM_NAME] == self.SUPERGLU:

                try:
                    msg = nativizeObject(msg)
                    if isinstance(msg, Message):
                        if self._gateway is not None:
                            self._gateway.dispatchMessage(msg, self.getId())
                        self.distributeMessage(msg)
                except Exception as err:
                    print("ActiveMQ message was unable to be parsed")
                    logError(err, stack=traceback.format_exc())

    def sendMessage(self, msg):

        if self.isMessageOnGatewayExternalBlackList(msg):
            return

        if self.isMessageOnGatewayExternalWhiteList(msg):

            MessagingGateway.sendMessage(self, msg)
            if self.m_connection is None:
                return False
            if isinstance(msg, Message):
                msgAsString = serializeObject(msg)
                headers = {self.MESSAGE_SYSTEM_NAME : self.SUPERGLU, self.MESSAGE_TYPE : "SUPERGLU_MSG"}
                self.m_connection.send(destination=self.TOPIC_LABEL + self.m_scope, body=msgAsString, headers=headers, content_type="text/plain")
            elif isinstance(msg, VHMessage):
                msgAsString = msg.getFirstWord() + " " + msg.getBody()
                headers = {"ELVISH_SCOPE": "DEFAULT_SCOPE", "MESSAGE_PREFIX" : msg.getFirstWord(), "VHMSG_VERSION" : "1.0.0.0", "VHMSG" : "VHMSG" }
                self.m_connection.send(destination=self.TOPIC_LABEL + self.m_scope, body=msgAsString, headers=headers, content_type="text/plain")
            elif isinstance(msg, GIFTMessage):
                msgAsString = serializeObject(msg.getPayload())
                headers = {self.MESSAGE_TYPE : "GIFT_MSG", "Encoding" : 0}
                self.m_connection.send(destination=self.TOPIC_LABEL + self.m_scope, body=msgAsString, headers=headers, content_type="text/plain")

        return True

    #receiving messages is handled by the on_message function, so we don't need to override the receiveMessage function

class HTTPMessagingGateway(MessagingGateway):
    MESSAGES_KEY = 'message'
    DATA_KEY = 'data'
    MESSAGES_NAMESPACE = '/messaging'

    def __init__(self, anId=None, socketio=None, socketioModule=None,
                 nodes=None, gateway=None, authenticator=None, scope=None):
        super(HTTPMessagingGateway, self).__init__(anId, nodes, gateway, authenticator, scope)
        self._socketio = socketio
        self._socketioModule = socketioModule
        self._messages = Queue()

    def sendMessage(self, msg):
        super(HTTPMessagingGateway, self).sendMessage(msg)
        self.queueAJAXMessage(msg)

    def receiveMessage(self, msg):
        """ Get message from a child and process/distribute it """
        super(HTTPMessagingGateway, self).receiveMessage(msg)
        logWarning("Message Received")
        self.queueAJAXMessage(msg)
        logWarning("Message Distributing %s"%msg.getId())
        self.distributeMessage(msg)
        logWarning("Message Distributed %s"%msg.getId())

    # Handling Websocket Communication
    def clearPendingAJAXMessages(self):
        self._messages = Queue()

    def queueAJAXMessage(self, msg):
        #logWarning("QUEUE MSG", msg.saveToSerialized())

        if self.isMessageOnGatewayExternalBlackList(msg):
            return

        if self.isMessageOnGatewayExternalWhiteList(msg):
            try:
                sessionId = msg.getContextValue(SESSION_KEY, None)
                sid = msg.getContextValue("sid", None)
                msg = serializeObject(msg)
                self._messages.put((sid, sessionId, msg))
                print ("AJAX message queued")
            except Exception as err:
                print("AJAX message failed to queue")
                logError(err, stack=traceback.format_exc())

    def dequeueAJAXMessage(self):
        return self._messages.get()

    def onReceiveAJAXMessage(self, msg, sid):
        """ Take message from client and send parent gateway and any child serices """
        if self.DATA_KEY in msg:
            sessionId = msg.get(SESSION_KEY, None)
            #if sessionId is not None and len(self._socketioModule.rooms()) == 0:
            self._socketio.server.enter_room(sid, sessionId, self.MESSAGES_NAMESPACE)
            # Wrap in a try/except
            msg = self.stringToMessage(msg[self.DATA_KEY])
            msg.setContextValue("sid", sid)
            if isinstance(msg, Message):
                if self._gateway is not None:
                    self._gateway.dispatchMessage(msg, self.getId())
                self.distributeMessage(msg)
        else:
            logWarning("GATEWAY DID NOT UNDERSTAND: ", msg)

    def processQueuedMessages(self, wait=0.001):
        socketio = self._socketio
        msgKey = self.MESSAGES_KEY
        dataKey = self.DATA_KEY
        sessionKey = SESSION_KEY
        messagesNS = self.MESSAGES_NAMESPACE
        while True:
            time.sleep(wait)
            if not self._messages.empty():
                sid, sessionId, msg = self.dequeueAJAXMessage()
                #if sessionId and len(self._socketio.server.rooms(sessionId)) > 0:
                if sessionId:
                    self._socketio.emit(msgKey, {dataKey: msg, sessionKey: sessionId}, namespace=messagesNS, room=sessionId)
                else:
                    logWarning("Could not find room %s (Message was: %s)"%(sessionId, msg))

class BaseService(BaseMessagingNode):
    pass

class TestService(BaseService):

    def receiveMessage(self, msg):
        logWarning("TEST SERVICE GOT: \n", self.messageToString(msg))

        default = "{{missing}}"

        authKey = msg.getContextValue(Message.AUTHENTICATION_KEY, default)
        logWarning(" ===> authN:[%s], authZ:[%s], ShouldBeBlank:[%s] <=== " % (
            authKey,
            msg.getContextValue(Message.AUTHORIZATION_KEY, default),
            msg.getContextValue('BE-BLANK', default),
        ))

        if authKey:
            try:
                from AWS_Core_Services.Authentication.UserData import UserData
                user = UserData.read(authKey)
                if user:
                    logWarning("USER IN MESSAGE: %s" % str(user))
                else:
                    logWarning("USER IN MESSAGE: {{{NONE}}}")
            except:
                pass

        super(TestService, self).receiveMessage(msg)

    def sendTestString(self, aStr):
        logWarning("Test Service is Sending: ", aStr)
        self.sendMessage(Message("TestService", "Sent Test", "To Server", aStr))

    def sendTestMessage(self, actor, verb, obj, result, speechAct, context=None):
        if context is None: context = {}
        msg = Message(actor, verb, obj, result, speechAct, context=context)
        that.sendMessage(msg)

    def sendTestMessage2(self, callback, actor, verb, obj, result, speechAct, context=None):
        if context is None: context = {}
        msg = Message(actor, verb, obj, result, speechAct, context=context)
        that._makeRequest(msg, callback)


text:
module Lobbyist
  module V2

    class ReviewMetrics < Lobbyist::V2::Base

      attr_accessor :id, :company_id, :sentiment_score, :review_page_views, :site_page_views
      attr_accessor :distribution_by_medium, :average_reading_time, :popular_reviews, :recent_reviews

      def self.list(company_id, params = {})
        create_from_response(get("/v2/companies/#{company_id}/review_metrics.json", params))
      end

      def self.manage_metrics(company_id, params = {})
        create_from_response(get("/v2/companies/#{company_id}/review_metrics/manage-metrics.json", params))
      end
    end

  end
end

redpajama_set_name: RedPajamaGithub


text:
Home Morocco 'First': Oukaimeden Observatory's MOSS Telescope Detects Afterglow of Gamma-Ray Burst
'First': Oukaimeden Observatory's MOSS Telescope Detects Afterglow of Gamma-Ray Burst
An afterglow (or optical counterpart) of a Gamma-ray burst (GRB) was detected by the MOSS telescope at the Oukaimeden Observatory on May 14 at 9:58 p.m. UTC.
The observation was made at 8:00 a.m. after the alert was given jointly by the space telescope FERMI of NASA and the INTEGRAL Satellite of the European Space Agency (ESA), both dedicated to the detection of Gamma-ray bursts, says the Observatory of Oukaimeden in a statement, noting that the source is named GRB220514A.
"There was an explosion on May 14, which gave rise to this signal. Eight hours after receiving the alert, we pointed the MOSS telescope to the position indicated by two telescopes: NASA's FERMI and ESA's INTEGRAL, and indeed we detected this signal and we published this result in a circular dedicated to this type of event," explained Pr. Zouhair Benkhaldoun, researcher at the Faculty of Science Semlalia of Marrakech (FSSM) under Cadi Ayyad University and director of the University Observatory Cadi Ayyad, in a statement to the press, adding that the telescope of the Observatory of Oukaimeden is the only telescope in this part of the globe that has detected this phenomenon.
Gamma-ray bursts remain to this day a mystery and a subject of research very much in vogue in what is now known as "multimessenger astronomy". A network called GRANDMA and gathering several observatories around the globe has been formed to monitor this phenomenon very popular with researchers.
These bursts, when they are located at a distant distance, can have as a source "processes involving neutron stars, black holes or hypernovae, or even astrophysical phenomena unknown to date".
The observatory of Oukaimeden, under the Faculty of Science Semlalia of Cadi Ayyad University joined the GRANDMA network a few months ago and began observations recently (April 2022) with the following telescopes all operated on the site of Oukaimeden: the MOSS Telescope, the OWL Telescope of the Space Agency of South Korea and the telescopes of the Moroccan Association of Astrophotography.
This last association has just built an observatory called HAO (High Atlas Observatory) at the observatory of Oukaimeden and has co-signed the circular having been published following this discovery.
Beyond the great first that has just realized the observatory of Oukaimeden with this discovery, the program of follow-up of the Gamma-ray bursts comes to concretize again, the cooperation between professionals and Amateurs in Morocco known under the acronym ProAm in the field of the sky sciences.
Previous articleFootball : AC Milan win first Serie A title since 2011
Next articleDavos : Mohcine Jazouli will represent Morocco at the World Economic Forum

redpajama_set_name: RedPajamaCommonCrawl


You've exhausted your Netflix queue list keeps track of shows nightly newscasts, morning shows, specials.
All you have to do is select property of Virgin Media clients?through the whole production.
Find the perfect bundle blocker, and help us to keep.


A daily newspaper has paid tribute after the "shock" retirement of an international rugby union player aged 29.
The Western Mail dedicated its front page yesterday to Sam Warburton, former captain of Wales and the British & Irish Lions, describing him as an "absolute legend".
Warburton won 74 caps for Wales and four caps for the Lions, but had not played since last year after being sidelined by knee and neck surgery.
The Cardiff-based Mail and its Wales Online sister website covered the announcement of his retirement extensively in today's paper and online.
Mail editor Catrin Pascoe told HTFP: "This was the natural choice as our front page today.
"Sam Warburton's retirement after such an epic rugby career was the story to go for – a fact backed up by the audience and engagement Wales Online's real-time digital analytics have shown since the shock announcement was made.
"We have brilliant coverage and analysis inside from our writers including Wales' Sports Journalist of the Year Ben James and our editor-in-chief Paul Rowland, so this was a great way to showcase that content.


A 25-year-old man committed suicide at the same spot in his house, where he had found his 22-year-old wife hanging 15 days ago at Shivaji Nagar. He hanged himself with his dead wife's dupatta and minutes before killing himself, the man recorded a video, pleading the police to help him get justice for his wife.
"In My dreams, my wife has been telling me to get her killers arrested. Even I am being harassed by the her blackmailers. I can't tolerate this and am ending my life," Noor Mohammed Idris said in the video recorded on his mobile phone.
According to the police, Idris had been married to Sakina for six years and had two children. The couple stayed in a chawl at Baiganwadi. Idrisi worked in a nearby shoe making factory.
On September 15, Idris was approached by his wife's former boyfriend who showed him her lewd pictures and a few intimate videos, said an officer. It led to an altercation between Sakina and Idris. She told him that she had left Mustafa after which he had been blackmailing her with the pictures.
The next day, Sakina committed suicide by hanging at their house. The Shivaji Nagar police registered an accidental death report (ADR) in the case. However, Idris told them Mustafa and his friends' blackmailing prompted his wife to kill herself. In the video, Idris said that his dead wife had been haunting him as he failed to get the accused arrested.
"We have recorded the statements of Idris' brother Mohammed Zuber who told us about incident and handed over the video to us. After investigations we would register a case of abetment based on the complaint of the family," said Deepak Pagare, senior inspector of Shivaji Nagar police station.


text:
NPR News & More
For Some Americans, Jerusalem's Newest Pilgrimage Site Is The U.S. Embassy
Beckah Shae, a Nashville-based singer-songwriter popular on Christian radio, snapped selfies with the dedication plaque outside the U.S. Embassy to Israel in Jerusalem.
"Donald Trump!" said Melissa Brunner from Georgia, as she posed for a photo in front of the recently inaugurated U.S. Embassy in Jerusalem.
Beckah Shae, a Nashville-based singer-songwriter popular on Christian radio, snapped selfies alongside the creamy limestone wall inscription reading: "EMBASSY/UNITED STATES OF AMERICA/JERUSALEM, ISRAEL/DONALD J. TRUMP/PRESIDENT."
People from the Beit Tehila Congregation ("Teaching the Hebrew roots of the Christian faith") in Brandon, Fla., piled out of a tour bus, posed in front of the embassy wall plaque and sang the Israeli and U.S. national anthems.
"This is the center of the Earth right here," said Linda Carter, a member of the church group. "Not the Earth, but the center of our universe— ours."
Back in May, a U.S. consular building in the residential outskirts of Jerusalem was renamed as the embassy, as the U.S. recognized Jerusalem as the capital of Israel.
The move angered Palestinians, who seek at least part of the city for a capital of their own. Most countries rejected the U.S. move, so as not to take sides in the Israeli-Palestinian battle over Jerusalem, a city that hosts some of the most important historical and religious sites in Judaism, Christianity and Islam.
But the new embassy has become a magnet for American visitors, many of them devout Christians who support what it stands for: an about-face in U.S. policy, recognizing Israel's sovereignty claims to the coveted city.
"I've seen people praying here. I've seen people crying here," David Friedman, the U.S. ambassador to Israel, told an evangelical Christian television program last week. "We have an embassy open in Jerusalem. That's just something that I kind of thank God every day that we were able to accomplish with the president's direction."
The ambassador said construction would begin in the coming weeks to expand the embassy building and double its office space.
On a recent sunny day, a tour bus took two laps around a small traffic circle out front — newly designated "United States Square in honor of President Donald J. Trump" — as tourists with the Chicago-based International Fellowship of Christians and Jews held up their cellphones to the window and snapped photos.
A visitor from Texas, Jason Reyes, wore a Trump-Pence T-shirt and walked an hour from Jerusalem's walled Old City — home to the city's key religious sites — to have his picture taken in front of the embassy.
"This is a prophetic moment. This is definitely a prophetic moment," said Reyes of the embassy move, which took place on the 70th anniversary of Israel's founding.
Most visitors on that day shared a belief in Jesus — though many eschewed traditional labels like "Christian" or "evangelical" — and saw the U.S. Embassy as representing something biblical.
In May, the U.S. renamed a consular building in Jerusalem as its embassy to Israel, a formal recognition of Jerusalem as Israel's capital. The move was controversial — Palestinians also have claims in the city — but the embassy has become a magnet for American visitors who believe it reflects biblical prophecy.
A few Jewish tourists were also there, including an Israeli family who liked Trump's gesture — but said Palestinians also deserved a capital in the city.
Debra Holm and Diane Weber said they were visiting Israel from Minnesota with For His Name's Sake, a worship group of singers, dancers and musicians, with the aim of reaching out to the Jewish people. They support Trump's embassy move.
"I feel like it's the Bible being fulfilled. You look at Scripture. Jerusalem is the capital of Israel. So we're seeing the word of God being fulfilled. So you want to come look at it with your own eyes," said Holm.
"It says in Scripture that those that bless Israel will themselves be blessed, those that curse Israel will be cursed," said Weber. "The economy is healthy in the U.S. It isn't that you bless Israel so you get something back, but it's a principle that is true: We are blessing Israel, we are being blessed."
Several visitors mentioned the Israeli-Palestinian peace plan President Trump says he'll present in a few months. Last month, Trump said he thinks the two-state solution would work best — a Palestinian state alongside Israel, which would likely require Israel to give up West Bank land it currently occupies.
Many visiting the embassy had a blunt message for the president: "Don't give up any land. Do not negotiate to give up any land," said Weber.
She believes Palestinians won't stop at a Palestinian state and will want Israel for themselves, too.
"It doesn't mean that you discriminate against the Palestinians," said Brunner, the visitor from Georgia. "You know, you love them and they should be taken care of and things like that. But Israel is sovereign, and they should have their own sovereignty. This is their land."
As the Beit Tehila church group from Florida sang, a Palestinian-American watched.
"Everybody can say, 'My God told me this is my land.' God's plan for me is this is Palestine," said Zakaria Hajeer, who was at the embassy for a relative's visa interview.
Other Palestinians visiting the embassy were not interested in talking politics. They were trying to get visas to emigrate to the U.S.
"There's more freedom in the U.S.," explained Jacqueline Rafiq, who was there with her husband and six children. They had traveled from their home in the Israeli-occupied West Bank. "In the West Bank, we can't take our kids out for fun. You need Israeli permits for everything. And I want to keep my children protected."
Her family happens to be Christian. But they don't see the U.S. Embassy in the same way many of the American Christian photo-taking visitors do. For Rafiq and other Palestinians, the embassy offers a path to escape from a tough life.
NPRNPR News


text:
Hundreds more trees will be planted in Lower Swatara, Londonderry townships
Lower Swatara Township plans to plant trees along a stretch of Fulling Mill Road, and hopes to plant trees on the Shireman Farm tract as well.
On March 21, the Board of Commissioners unanimously …
Lower Swatara Commissioner Todd Truntz and Jackie Harris of Artell Law Group prepare to slide a barrier over a tree Friday, April 21, 2017, in an area off Fulling Mill Road.
Press & Journal file photo
Posted Wednesday, April 4, 2018 3:58 pm
On March 21, the Board of Commissioners unanimously voted to plant trees at 130 Fulling Mill Road this month — subject to an acceptable planting plan after some members expressed concern about losing open space that they said could be used for recreation.
This is a similar project to last year when 360 trees were planted as part of the Manada Conservancy's Swatara Creek Greenway effort.
Londonderry Township took part last year and will do so again this year, planting trees on its side of the Swatara Creek. The townships plan to plant 400 trees April 20. Trees native to Pennsylvania will be planted adjacent to the trees planted last year.
"Not only are we creating a buffer, but we're also creating a wildlife corridor which is really fantastic," Londonderry Township Manager Steve Letavic said.
The land along Fulling Mill road is a nice piece of property, Lower Swatara Board Vice President Todd Truntz said.
"I was thinking, I value that open space there. Rather than forest the whole area … what if we go around the perimeter," Truntz said. "I would like that better than expand and basically overtake an open area."
Shireman tract
The board also voted to include a plan to plant trees on the Shireman tract in a grant application to the Pennsylvania Department of Conservation and Natural Resources being submitted by the Dauphin County Conservation District.
The township bought the 32-acre Shireman tract, at the southeast corner of Longview Drive and Ebenezer Road, last year for $374,000.
It was awarded a 50-50 matching Department of Conservation and Natural Resources Grant in the amount of $187,000 to buy the property in December 2016.
Ideas suggested previously for use of the property include two to three softball fields, walking trails, picnic areas and a dog park.
Interim Manager Frank Lynch said the township will submit a grant application in the next few weeks to create a recreation plan for the township, including examining what should be done with the Shireman tract.
"I pushed trees on you all not because it's my agenda — because it makes the DEP [Pennsylvania Department of Environmental Protection] happy whenever they come and visit you and review your MS4 program and see you're doing things," township engineer Erin Letavic said. "I do have some clients who don't do projects like these, and they have not fared well during DEP inspections."
Truntz said the tree project was good both ecologically and to comply with the Municipal Separate Sewer Program — or MS4 — which requires municipalities to develop a plan to control runoff water and sedimentation.
If the district is awarded the grant, Letavic said it would include a local match of $1,200.
Dauphin County Conservation District's Watershed Specialist Robert Frank said that planting trees and shrubs along streams reduces pollution, improves water quality and reduces erosion.
He said the due date for the grant is April 11; the DNCR will decide by December.
Trees would be planted along the northern corner of the Shireman property. In an interview with the Press & Journal, Letavic said they would add to an already-wooded area near a stream.
If the conservation district is awarded the grant, the Shireman trees would not be planted until 2019.
Letavic said the grant would include money to water, weed and mow the land around the trees.
When asked about the location of the trees, Letavic said it was at the lowest point of the property.
"This would not get in the way of any future development," Letavic said.
"That would be my concern," Commissioner Chris DeHart said.
In an interview, DeHart said he had concerns "about planting trees or installing a rain garden in an area that could be used for recreation."
Township recreation
In regard to the study about township recreation, Lynch said the grant would be used for a study similar to one conducted several years ago of the history and use of recreation in the Middletown area that led to the development of the Middletown Area Recreation Alliance — an organization that leaders hope will lead to more diverse recreation programs.
The difference, Letavic said in a meeting in early February, is that that study focused on the athletic needs and didn't take into consideration all of the township's activities and facilities.
"The idea is to do an analysis of all of your park and recreation spaces and determine what levels of services for a township of this size should be invested in the future, and do those uses then fit on the Shireman property," Erin Letavic said.
A grant was submitted to create a similar plan for Lower Swatara last year for $80,000 including a $40,000 match by the township. In late December, the township announced that it did not receive the grant.
At a meeting in early February, the commissioners discussed whether they wanted to submit a grant to create plans for the Shireman property and overall recreation. Letavic said people anecdotally shared what they believed the Shireman land could be used for.
"But there are standards out there that determine what you should really have to meet national standards," Letavic said.
"I guess I wonder with the study — are these not things that can't be done in house with our people rather than spend $40,000 of recreation funds for planning purpose?" Commissioner Ron Paul asked. "You're going to need that $40,000 to develop the Shireman tract."
Letavic said they could consider doing the study in house, adding that she didn't know if anyone on staff had park and recreation credentials. She said the township could use a consultant.
Commissioner Michael Davies said that engineers would have a better idea of how much it would cost to develop the land.
"You will get, I think … a better concept of what costs are involved instead of wet finger in the air, 'Yeah, I think it will cost us that much to flatten that out,'" Davies said.
Paul said there was a difference between construction plans and a feasibility study.
Davies said he would rather put in an application, adding that he thought it would put the township in a better position for future grants.
With 230 Diner, Londonderry officials just doing their jobs: Letter to the Editor
Seven Sorrows moves the party inside; Fewer volunteers means changes to annual event
Doctor facing sexual assault charges who formerly worked for MASD has court date scheduled
Robbers take about $3,000 from Middletown pub, days after well-known statue went missing


Cybersecurity threats have become a regular, ongoing concern for businesses of all sizes around the globe. That is the unfortunate downside to our increased reliance on computer networking and data security for just about anything you can think of: personal identity, financial management, government operations, and an infinite number of other critical data-dependent facets of our daily lives. Does that mean you should take your business offline and toss your computers to save yourself the risk? Definitely not.
It simply means that you should partner with an IT service that stays ahead of the latest threats and where they're coming from. At Realnets, we're proud to be that team, and we know that achieving true security requires education. As a business owner, we want you to know who and what is dangerous to your business and what we are doing to protect you from those threats.
What are the most common cybersecurity threats to businesses today?
Phishing – When a cybercriminal uses email, social media, or other means to convince you or a member of your team to click on malicious links, share sensitive company data, or download harmful content.
Malware – Harmful software that is downloaded to your network.
DDoS Attacks – This is a type of attack floods your server with requests to the extent that it slows down or crashes altogether.
Ransomware – Ransomware is a very sophisticated form of attack, wherein your device will be encrypted and rendered useless until a ransom is paid.
This is just the tip of the iceberg, and in most cases, the culprit behind your cybersecurity threat will fall into one of the following categories: a business competitor, a hacker, a terrorist, a member of an organized crime unit, or a malicious foreign government agent.
Why is it so important to protect your business against cyber attacks?
Cyber attacks have the potential to cost your business tremendous assets, both tangible and intangible. For one thing, the cost of recovery (depending on the extent of the damage) can be quite hefty. That alone is enough to put a new or struggling organization out of business, in some cases.
Beyond that, though, is the negative consequences to your professional reputation, brand trust, and the general future of your operations. So much of your business depends on adequate cybersecurity. You truly can't afford to leave it to chance.
If you are concerned about your company's cybersecurity and would like to speak with a Realnets IT expert, contact us today at 773.631.6851.


text:
Home»Posts tagged with»Dragonfly
Report: Google will 'shift toward censorship' to appease China
By World Tribune on October 12, 2018 Americas, China, Exclusives, NE Asia, Top Stories, Top Story, World Links, World Tribune
by WorldTribune Staff, October 10, 2018 Google is likely to willfully comply with censorship demands to gain a foothold in countries with authoritarian governments, a leaked document says. "The Good Censor" document concludes that Google "will have to continue its move towards censorship if it wishes to appease national governments and continue its global expansion. It […]
'There is a project Dragonfly,' Google exec admits during tense Senate hearing
By World Tribune on September 28, 2018 Americas, China, Exclusives, NE Asia, Rest of The Best, Top Stories, Washington, World Links, World Tribune
by WorldTribune Staff, September 28, 2018 A Google executive confirmed to a congressional committee on Sept. 26 that the tech giant is developing a "search product" for China. Chief Privacy Officer Keith Enright confirmed the existence of the Dragonfly search engine, but denied knowledge of what the project entailed during testimony before the Senate Commerce, […]
Report: Google's HR ordered deletion of China memo after furious execs learned it was circulating
by WorldTribune Staff, September 23, 2018 Google employees were told to delete a memo which leaked details about the tech giant's plans to launch a search engine in China which will comply with Beijing's rigid censorship demands, a report said. "The memo, authored by a Google engineer who was asked to work on the project, […]
Google employees protest company's effort to support China's censorship of its own people
By World Tribune on August 19, 2018 Americas, China, Exclusives, NE Asia, Rest of The Best, Stateside, Top Stories, Top Story, World Links, World Tribune
by WorldTribune Staff, August 19, 2018 More than 1,400 employees at Google have signed a letter protesting the tech giant's development of a new search engine for China that kowtows to the communist country's strict censorship policy. The search engine project, known as Dragonfly, and prospects for Google's return to China "raise urgent moral and […]
DHS cites Russian cyberattacks on U.S. power grid, infrastructure since 2016
By World Tribune on March 16, 2018 Africa / Europe, Americas, BB Tech Wars, Exclusives, Rest of The Best, Russia, Top Stories, Top Story, U.S. Intelligence, World Links, World Tribune
by WorldTribune Staff, March 16, 2018 Russian government hackers have for at least two years attempted cyberattacks on the U.S. power grid, the Department of Homeland Security (DHS) said. The attacks, beginning in March 2016 and possibly earlier, targeted multiple U.S. critical infrastructure sectors, including energy, nuclear, commercial facilities, water, aviation and manufacturing, according to […]


December 22, at 2: Email required Address never made public. Leave a Reply Cancel reply Enter your comment here Notify me of new comments via email. It is beautiful and touching to remember how lucky we are! I can't say that I ever heard them before.
December 22, at 4: Create a free website or blog at WordPress. All Kidding Aside Search: The record is long gone I have no idea where it went, and no one in my family can find itand although you can get this record in CD form, The Little Christmas Tree is no longer on it. I liked watching Captain Kangaroo, but I couldn't always get it to come in silly antennas way back when …I always liked it when the ping pong balls would fall on his head….
God Bless you and your family this Christmas and always! December 22, at 5: Growing up, we used to have this record with all sorts of Christmas favourites on it. By continuing wkelton use this website, you agree to their use.
We neither one can remember the name if the album. Thank you, Beth, a nice touch for Christmas.
He has a conversation with Santa, and Santa helps the little tree to know that he does have a purpose. Email required Address never made public.
He was my favourite. December 23, at 9: It's my favourite Christmas story. Last year, I sent out this little blog. Shelly-Merry Christmas to you! December 21, at 6: I can't say that I ever heard them before. Something about Children's favourites or something. December 21, at curistmas To find out more, including how to control cookies, see here: I wish I knew where it was.
You are commenting using your WordPress. December 21, at 4: You are commenting using your Twitter account. I guess others in the world loved this record, and this story, too, because now you can find it on YouTube.
December 22, at 2: Notify me of new comments via email. Dressup to grow up with…. The Littlest Snowman by Captain Kangaroo http: It is beautiful and touching to remember how lucky we are!


text:
Q: DDD on an enterprise scale? Looking for suggestions on how to approach this problem and to understand if Domain Driven Design is really the best pattern here.
My client is in the process of re-architecting its near-obsolete stack of tools and services.  Client is a rapidly expanding e-merchant.  It's core product is its large e-commerce website.  Around this website, the client has a variety of data feeds that it exposes to its partners.  A slew of internal applications to help in marketing, sales, reporting, etc.  A slew of user support and partner support applications.  A good amount of various data-syncs, ETL jobs, etc...  You get the picture.
Data stores and data providers are also plentiful.  NOSQL cloud-based mega-scalable storage provides most of the stuff on the public website.  SQL-servers with a number of databases provide data to internal applications.  There are also special search-only servers to provide megascalable searching capabilities, as well as other feeds that apps consume from various 3rd party vendors.  If DDD is adopted, the plan would be to have various groups of repository objects inherit from data store-specific repository base classes
There has been an exercise performed by the client where they have mapped out most of their business entities on a "generic" level: entity names and relationships.  Outside of that "generic" level, there is a decent amount of reuse of various concrete objects across applications as well as there is a decent amount of entities that would differ in their implementation, depending on an app.
For example: Order entity on an ecommerce website may look like X, while for an app that handles support calls like Y, and furthermore for someone doing fraud analysis like Z.
I'm looking for suggestions on how to adapt DDD or another architectural pattern to handle this giant mess: have a solid enterprise strategy that facilitates reuse and allows for separation of logic if necessary.  On top of the usual (scalable, flexible, adaptable, unit-testable, simple, etc) criteria.
Due to different data stores, structure of DTO's looks significantly different from data-store to data-store.  Due to various business needs, various apps need different versions of certain entities, and since the company is rapidly expanding, the future is highly unstable and flexibility is paramount.
I guess my biggest problem is finding a way to separate the business model to different domains and still keep it together when there is high amount of sharing or reuse, while being able to adopt to high level of change.
Thank you for all your suggestions
P.S. The shop is a Microsoft shop.  VS2010/.NET/SQL/Azure

A: Consider SOA + DDD
On the surface it looks like you should be considering Service Oriented Architecture (SOA) along with Domain Driven Design (DDD).  Something along the lines of NServiceBus.
Udi Dahan has a great video on DDD + NServiceBus available here:

*

*http://www.udidahan.com/2010/06/18/cqrs-ddd-and-nservicebus-video/
DDD is about isolating your business logic*
DDD at its core is isolating your domain logic from your application and framework so that you can ensure that you are modelling the business logic correctly. DDD is not for every project, it's definetly not suitable for small business applications where the cost of Maintaining DDD is higher than the benefits you gain from it.
In your case
You've described a fairly complex business ruleset which IMO would benefit highly from DDD.  I would however also get you to consider a SOA which can allow you to integrate multiple architectures into 1 enterprise level framework using a universal messaging system.
Using SOA

*

*http://www.udidahan.com/2009/02/07/nservicebus-19/

NServiceBus is a powerful, yet lightweight, open source messaging
  framework for designing distributed .NET enterprise systems. Entirely
  pluggable yet simple to use, NServiceBus gives programmers a
  head-start on developing robust, scalable, and maintainable
  service-layers and long-running business processes.

redpajama_set_name: RedPajamaStackExchange


text:
Sculptor Behind Denver's Beloved Blue Bear Dies At 60
"I see what you mean" by Lawrence Argent.
Lawrence Argent, the artist who created downtown Denver's beloved Blue Bear sculpture, died this week. He was 60.
Argent's 40-foot-high bear, officially titled "I see what you mean," stands near 14th and Stout streets. Argent chose a bear as a representation of Colorado's wildlife, and had it peek into the Colorado Convention Center to illustrate the exchange of ideas and curiosity that happens within.
"I really wanted to play on that social interchange, as well as present itself as a discourse of 'What is Colorado?" he told Colorado Matters in 2004, months before it was installed.
20040708_02
The bear is made out of composite material and weighs some 10,000 pounds. Argent told Colorado Matters he felt extra pressure because the piece was funded by taxpayers. He thought the sculpture would get mixed reviews and wouldn't turn into a "signature" piece of public art in the city.
Yet it did. Tourists often snap photos with the bear (check out Instagram for proof.) "Lawrence's "I see what you mean," aka the Blue Bear, has become synonymous with our city and the centerpiece of our public art collection," the city of Denver tweeted today. "Lawrence was a tremendous artist and will be greatly missed."
The bear's high profile has made it the target of several practical jokes, including the mysterious appearance of a two-and-a-half-foot-high pile of paper mache droppings in 2012.
Argent created many other public art installations, from a giant panda bear climbing up a shopping center in Chengdu, China, to 20-foot-high blades of glass and aluminium grass in Englewood.
Argent was also a professor emeritus at the University of Denver's School of Art and Art History. He was born in England, raised in Australia and came to Denver in the 1990s.
More recently, his stainless-steel "Venus" was completed in San Francisco last year. He told Confluence Denver earlier this year that he was working on two new sculptures in China.


text:
Toukoroba is een gemeente (commune) in de regio Koulikoro in Mali. De gemeente telt 12.000 inwoners (2009).

Gemeente in Mali

redpajama_set_name: RedPajamaWikipedia


I've always loved brownies, but I couldn't eat them for a long time. They were too rich with unhealthy ingredients that set off my allergies and made me sick. Now I've found a healthier peppermint brownie mix recipe that uses natural sweeteners and has perfect, peppermint taste. I use high quality peppermint essential oil that can be taken internally.
I start out making a the mix. This saves tons of time in the long run, because you only have to measure the dry ingredients once. The mix batch is big, so you'll need 2 huge bowls like this or a big soup pot.
Makes 11 batches, 8×8 pan size. Each batch makes 9-12 brownies.
Sift first 4 ingredients into large bowl. Mix well.
Add vanilla & chocolate chips. Mix well.
Measure 2 cups into quart freezer bags (for 8×8 pan recipe, or 4 cups for 9×13 pan size recipe). Makes 11 bags.
Label each bag (8×8 size) with the following: Add 2 eggs, ¼ cup melted butter & 4 drops peppermint essential oil or flavoring (may need more than 2 drops). Add extract if you didn't use vanilla powder. Mix with beaters. Batter will be SUPER thick. Just spread it like frosting in your greased glass or stone pan (never aluminum) and it will rise up.
Bake at 350 ° for 30-35 minutes. Test with a knife. For slightly fudgy brownies, take pan out 5-10 min early.
I put a couple batches in a gallon size bag to have on hand for social events when I need more brownies. Label your bags!
So tonight we made a double batch. We dumped a big bag in a bowl and added double the wet ingredients with the oil.
Using peppermint essential oil gives the flavor so much zip! Beat ingredients with a blender.
The dough will be very thick. Spread it like frosting in a glass or stone pan. Pampered Chef stones are my favorite!
Be forwarned, that while these are baking, your home will smell so good everyone's mouth will be watering!
This brownie recipe is great because the sides don't rise higher as in many other recipes.
Slice brownies before they are completely cool, as the crust will harden and make them harder to cut.
We are planning to take these to the closing social for Raquel's summer art class.
When you use unrefined ingredients, the taste you get is so substantial and real. I love this taste so much more than cheap food varieties.
These brownies are always a big hit!
To see all the Linky lists that this post may be published on, please CLICK HERE.


text:
Make the FEST of ItStay At Home Party Campaign
Although much of the Campaign structure is developed, we are totally transparent with the fact that a lot is not fully clear on how some things will work as we continue to negotiate with contributors, partners and sponsors. That being said, our commitment to our patrons, ticket purchasers, contributors, pledgers, and donors is to be as transparent as we can and communicate as much as we can as we quickly grow and develop.
To kick off that effort, we've devised this set of Frequently Asked Questions that will surely expand as we continue our quest to provide all our festival friends with as much content and interaction as we can while they Stay At Home and enjoy themselves.
What is a "Make the FEST of It" Campaign Patronage?
A Patronage is the act of becoming a patron or a person who supports the campaign activity, especially by financially. For Make the FEST of It Campaign, a patronage is an agreement to have a designated donation debited monthly from an account at a financial institution or money transfer service.
What is the mission of "Make the FEST of It" Campaign?
To immediately assist businesses, individuals and organizational entities of the festival industry with relief from the negative economic impact of cancellations of events that serve as the bases of income for their annual enterprises while providing a continuing long-term solution that will curb extraction associated with operations stemming from the non-ownership of resources required for industry production.
What if my type of content is not traditionally a part festival lineups will that automatically disqualify my content from being a part of the "Make the FEST of It" Campaign platform?
No. Content will not be automatically disqualified from being included in the Make the FEST of It Stay At Home Party Event Lineup just because it is not traditionally a part of festival lineups or because it has not been previously featured at a festival event. Similarly, content that is traditional a part of festival experiences and/or has been previously featured at festival events will not automatically qualify for inclusion in a Make the FEST of It Stay At Home Party Event Lineup.
What are the restrictions on the amount and types of content that will be accepted by the "Make the FEST of It" Campaign?
Make the FEST of It will initially accept applications for an unlimited amounts of content contributions that are family friendly but geared toward the entertainment of persons 16 and older from any given contributor. Although contributors may apply to submit an unlimited amount of content contributions, not all content submitted may be accepted and not all accepted content may be placed in Stay At Home Party Event Lineups simultaneously.
What is the difference between the "Make the FEST of It" Campaign and its Stay At Home Party Events?
The Make the FEST of It Campaign is the overall operation to fulfill the Mission that includes developing financial and other resources to help relieve the economic difficulty on festival enterprises related to the Covid-19 Pandemic. Stay At Home Party Events are personalized experiences for monthly donating patrons, those receiving tickets as a result of one time donations, and those receiving tickets as a result of crowdfunding pledges or direct donations to the benefiting Festival Friends Fund that are delivered to their devices and doors via partners based on a pre-selected lineups from the total content available on the Make the FEST of It platform.
What is the cost of supporting the "Make the FEST of It" Campaign?
At the moment the donation necessary to achieve Make the FESt of It Patron status or to enjoy a Stay At Home Party Event has not officially been designated.
What kind of Tax Deductible contributions can be made to the "Make the FEST of It" Campaign?
Donations to Festival Friends Fund through the Make the FEST of It Campaign will soon be tax deductible when the Foundation and Ministry of Limitless Ideas and Free Environments, the organization administering the the fund, is approved for a 501(c) Status with the Internal Revenue Service.
What percent of the money collected by the "Make the FESt of It" Campaign goes to the Festival Friends Fund?
Conscious Universe Productions the facilitator of the Campaign to garner donations for the Festival Friends Fund is committed to using no more than 25% of all donations for the administration of the campaign and its fund-development activities.
Where will "Make the FEST of It" Campaign be held?
Make the FEST of It Campaign is not bound to any specific place! It is a Campaign that serves the entire community of festival related enterprises, which is an international community. However, the Campaign's operations are headquartered in Denver, Colorado where it is spearheaded by the Conscious Universe Productions Benefit Corporation that has partnered with the Foundation and Ministry of Limitless Ideas and Free Environments, which administers that Festival Friends Fund that serves as the beneficiary of the Campaign's efforts.
Where can I find the current "Make the FEST of It" Campaign Lineup?
The Stay At Home Party Event Lineup has not been announced but we are looking forward to announcing the first round of content contribution acceptances soon. Stay At Home Party Event Lineups are chosen from the variety of accepted content contribution submissions by individual patrons, ticket holders, and donors. So each lineup is uniquely personalized. All accepted content contributors and their content that can be selected by patrons, ticket holders, and donors will be listed on the Make the FEST of It website at www.MaketheFESTofIt.com and Stay At Home Party Lineups will be sent to individuals after they have performed their selection prior to each Stay At Home Party Event.
When must content contributions be delivered to the "Make the FEST of It" Campaign?
Since the Make the FEST of It Campaign's Stay At Home Network, which is in currently in negotiation with potential partners, is a platform that pushes content to the devices and doors of its patrons, ticket holders, crowdfunding pledgers, and donors, contributors need only create the content on their own hosted situation (website, music or video streaming services, cloud, etc.) then authorize and provide the necessary access that allows it to be shared through Make the FEST of It.
How do we sign up or apply to contribute content to the Make the FEST of It Stay At Home Network?
Browse to our Let's Talk Page and look for the link that says "Contribute 'Make the FEST of It' Content Here" Under Participate. Click the link and fill out the Form and you will be contacted shortly thereafter by our Staff.
How will contributors benefit from their contributions to the "Make the FEST of It" Campaign?
The Let's Talk Page of the Make the FEST of It website outlines the 4 ways content contributors can benefit. They will be able to receive tips when their content is being experienced. They will also receive a designated % of donations that are garnered for the Festival Friends Fund during their content exhibition. They will receive promotion from from Make the FEST of It during the exhibition of content that is not their own. Finally, if they are selected for particular live headlining sessions during Make the Fest of It Stay At Home Party Events, they will be compensated for their performances.
How will those effected by negatively by the Covid-19 Pandemic benefit from the "Make the FEST of It" Campaign?
Due to the Covid-19/Coronavirus Pandemic in the U.S., an overwhelming majority of arts, music and festivals have been cancelled for the 2020 Season. Festival related commercial enterprises spend a lot of money and exhaust a lot of resources to prepare for their festival related work. Many expend non-refundable deposits, purchase non-refundable supplies, and invest in contracts and labor prior to the season. Enterprises in this predicament will be able to apply for Festival Friends Funds generated from the Make the FEST of It Campaign to receive grants relative to non-refundable expenditures, loss in potential sales income relative to average sales figures across previous years, or a loss n wages relative to signed work contracts.
How much content can I contribute to "Make the FEST of It" Campaign?
There is no limit to how much content can be contributed to the Make the FEST of It Campaign. Just remember that all content contribution applications are reviewed and the content you wish to contribute must accepted.
How can I financially contribute to the "Make the FEST of It" Campaign?
Financial contributions can be made in four ways:
1. Monthly debit amount from a financial account or service as a Patron
2. Obtaining a Ticket to access a Stay At Home Party Event by donation
3. Pledging a particular amount via one of the Campaign's Crowdfunding efforts
4. Giving directly to the Festival Friends Fund on behalf of the Make the FEST of It Campaign at www.FoundationandMinistryofLIFE.org
How can I contribute to the "Make the FEST of It" Campaign without giving money or offering content?
The Make the FEST of It Campaign is an effort of collaboration between various parties from the different sectors of the festival production community. The Campaign operations relies on an administration budget subtracted from funds raised, from content contributions, and from partner resource contributions including materials and labor. Therefore, if you can't contribute financially, you can contribute needed materials or provide supplies or you can offer labor. Examples of material resources that are needed include promotional material like posters; radio, television, and internet promotions spots; as well as studio time to record promotional spots. The Campaign also needs supplies necessary to function such as computer equipment for our remote corps of workers and updates to the infrastructures of our social media partners' equipment that will be hosting our platform. Finally, you could contribute much needed labor such as computer programming or coding work that is needed to advance our technology; intellectual knowledge such as alternative currency and credit union know how that may come in handy in developing our internal network stakeholder options; as well as spending hours making phone calls, contacting people on Social Media, or spending time developing content for our platforms.
How long does my FREE Stay At Home Network access last while I am a "Make the FEST of It" Campaign Patronage?
Once the patronage and crowdfunding campaigns begin in the coming weeks, anyone will be able to become a monthly patron or pledge to donate a specific amount to the Make the FEST of It Campaign. Shortly thereafter, Make the FEST of It content that has been contributed these past several weeks will become available to patrons via the Stay At Home Network platform we're negotiating with our social media partners. Patrons receive FREE access to our Stay At Home Network platform throughout the entire month that their patron amount covers. Patron amounts collected cover the following month's Make the FEST of It campaign activities. As long as your monthly patronage remains active, access to the growing amount of content on the platform will be available. Should you cancel your monthly patronage, access to content will cease 15-30 days after your last patron donation is withdrawn.
How does the "Make the FEST of It" Crowdfunding work with the Campaign?
We will shortly announce and promote the beginning of our crowdfunding campaign through a familiar site. Throughout the campaign, pledges will solicited to support overall Make the FEST of It operations that include gifting 75% of the funds collected to the FESTIVAL FRIENDS FUND. A number of rewards will be offered based on pre-determined pledge levels noted by the crowdfunding campaign and those rewards will be delivered within 60 days of the crowdfunding campaign's completion or 30 days the completion of pledge amount withdrawal from accounts, whichever occurs first. Pledge amounts to the crowdfunding campaigns will not be refundable.
Why do I need to give the "Make the FEST of It" Campaign credit card or money services information to become a Patron?
To become a Patron with the Make the FEST of It Campaign in support of Festival Organizers, Workers, and Businesses economically effected negatively my cancellations and other decisions relative to the 2020 Coronavirus Outbreak, you will need to commit to donating a monthly amount to campaign operations. Patron amounts must be collected prior to the month they will be used to insure that they are available to the monthly operations budget for which they serve as income. In order to insure that income is available for use by the Make the FEST of It accounts, an automatic debit withdrawal is necessary from an account of a money service. This allows us to quickly validate the amount of resources we have to use overall for any given month's operations and facilitates any problems that may occur with patrons' lack of funds relative to their agreed monthly patron amount.
Is my purchase of a ticket to a "Make the FEST of It" Campaign Stay At Home Event Tax Deductible?
If you are not a Patron with Make the FEST of It and you decide you want to attend a Stay At Home Event, you can donate prior to that event and receive a ticket code that gives you access to the Stay At Home Network platform for a particular amount of time and a particular set of content that you select. Ticket Codes are officially rewards provided in return for donations to the Festival Friends Fund. Therefore they should become tax deductible when the administering Foundation and Ministry of L.I.F.E. achieves 501(c) status.
Got a Question that isn't answered here? Please send Leave A Reply below with your question and we will get it answered as soon as possible.


text:
im Kinsky Auktionshaus
Post-Auction Sale
Online Bidding/Livestream
Post auction sale
How do I buy?
How do I sell?
Art consulting / valuation request
Fees for sellers
Art Nouveau & Design
The Palais
You are here: Im Kinsky › Kinsky News › Blog
The most expensive Lot
The absolute Highlight and most expensive Lot in 2020 found a new owner during our auction in June. It is a large painting in two parts from Koloman Moser, titled "loneliness in the fields" from 1912/13 which depicts a young man reclining in the clouds. The work had been considered lost for a long time until the owner, an elderly gentleman, contacted us. He had grown up with this picture that had been in his family's possession since the 1920-ies. We had it beautifully restored and so it became part of our Modern Art auction where it reached the sensational price of 960.000 €.
Art Nouveau and Design
It was through a work of Koloman Moser that the imKinsky showed again its expertise in the Art Nouveau department. A very rare vase from 19000 achieved during our Christmas auction a world record price for a vase by artist with 58.800 €. This top price for an item by the famous "Vienna in 1900" artist reflects the importance of this piece, which stands for the artistic step into Modern Art. Moser worked on the vase together with his students from the School of Applied Arts in Vienna, which was a completely new way of teaching. Through the deep carved slits on the surface of the ceramic he created a three-dimensionality which was equally modern
A fantastic painter that is being established more and more on the market is the Carinthian artist Werner Berg. We achieved a world record for him with his "Skittle players" from 1979 in our March auction, the painting sold for 256.000 €. In the Christmas auction, his works were very successful again. His landscape painting "Obir" (shown left) from 1960 with the repeatedly used motive of the two cherry trees, was sold for 243.000 €. Werner Berg also was the most expensive lot in our Online Bidding: one of our favorite lots form Modern Art in the June auction, his "Two women on their way home" from 1962, reached 177.000 €.
The imKinsky achieved another world record in its December auction for a painting of Ernst Stöhr, who was a co-founder of the Viennese Secession. His "Two female nudes in a beechwood" from 1905 was sold for 35.840 €. There was another record for a work on paper of the artist Arnold Clementschitsch; his "shore landscape", executed around 1930, brought in 12.800 €.
The March auction brought a world record for a work by the Grande Dame of Austrian painting, Martha Jungwirth. The hammer came down at a selling price of 105.000 € for an untitled work from 1990, mixed media on cardboard. Herewith, the imKinsky broke its own record for a work by this artist.
Top Lots Old Master Paintings
The "Adoration of the Magi" by the Antwerp Master, which is dated around 1520, combines secular splendour and pomp with the religious in a grandiose manner. The subject, which has been popular for centuries, and the masterful execution convinced the new owner, who acquired the panel for € 71,000.
Lavinia Fontana was one of the first women to assert herself in a male-dominated environment and distinguished herself as an artist and a true exceptional talent. An early work by Fontana sold in the auction for € 64,000.
Another fine price was achieved by the representation of St. Mark's Square in Venice from the circle of Michele Marieschi. The motif invited visitors to dream oneself into the distance and to stroll across the piazza in one's thoughts. This skilfully executed daydream changed hands for € 53,000.
Top Lots 19th Century Paintings
This year, two representations of the mountain Grossglockner by Markus Pernhart made hearts beat faster and won the highest prize in Austria for a representation of the Grossglockner. The work from the 134th Auction achieved € 71,000.
The Adriatic Sea brought Olga Wisinger-Florian to Austria to our exhibition rooms. She got to know this landscape thanks to an invitation by Archduke Josef Karl Ludwig of Austria. For an asking price of € 58,000, her enchanting painting now adorns the home of its new owner.
A particularly exciting work was "Andreas Hofer" by Albin Egger-Lienz from 1894. Here Egger-Lienz painted in the style of his model and friend Franz von Defregger, whom he admired most. The Tyrolean freedom fighter achieved a stately sale price of 167,000 €.
Other Top Lots Contemporary Art
The end of 2020 brought another top result to the auction house's Contemporary Art department. Arnulf Rainer's "Cross" from 1987-88 was highly fought over until it reached a selling price of 262.500 €. This makes it the most expensive ever auctioned Cross Painting from Rainer. The picture is a very special one: It was part of a retrospective of the artist at the Solomon R. Guggenhiem Museum in New York – the first one ever dedicated to an Austrian painter.
The second highest award in 2020 – 197.000 € – went to a large painting by Maria Lassnig titled "The Frank and the (female) Frankfurterin" from 1970. The Austrian lived in New York at the time, and this piece was her first portraiture commission. It depicts Maria Frankfurter and her husband Frank de Groote. The artist achieves to discreetly show their intimacy – she once claimed this painting to be one of her best works.
Another top result emerged in the Christmas Auction thanks to an Austrian Group called the "Phantanstical Realists". The outsized painting by Wolfgang Hutter "The temples and the three girls" from 1985 achieved a selling price of 99.000 €. Hutters motive looks stagey, the scene does remind the viewer of a trip into his own fantasy. The art movement of the Phantastic Realists is definitely having more and more success in the art market.
The most important increase in value in the Contemporary Art department was noted for a work by the internationally renowned Austrian artist Erwin Wurm. In the June auction, his "model for telekinetic sculpture" from 2006, a sculpture of a bended truck, was sold for 67.000 €.Wurm here does not only explore the questions on curvature of space in an ironic-philosophical way. He also deals with the mankind's favorite "toy". Wurms sculpture managed to quadruple its worth within five years according to past auctions.
Another record in the Contemporary Art department came due to Hans Bischoffshausen. The auction house im Kinsky holds the record for works of this artist, and again managed to achieve the best result of any auction house for an artist for Bischoffshausen. In June 2020, his "White Cross on black background" from the 1970-ies was sold for 93.000 €. The artist, who died in 1987, is not an insider tip anymore – a catalogue raisonne which is in the works right now will establish the still slightly underrated artist firmly on the art market.
Top Lots Antiques and Art Nouveau & Design
In the Antiques department, the imKinsky offered a rarity in December: a large collection of Japanese Netsukes from the early 19th century. It had been amassed over three generations and comprised 73 pieces. In total, the auction brought a result of 99.500 €.
During our Christmas auction, a wonderful mirror by Franz Hagenauer form 1966 achieved a selling price of 7.424 € and therefore became the most expensive wall mirror by the artist. Another record, this time for a chandelier by Otto Prutscher was achieved during the same auction. The gilded chandelier from around 1924 sold for 28.000 €.
About im Kinsky
Im Kinsky © 2021
A-1010 Wien, Freyung 4
office@imkinsky.com


"Like" token, awarded by catman1900.
Description: "Fern-Wifi-Cracker is designed to be used in testing and discovering flaws in ones own network with the aim of fixing the flaws detected."
JoshStrobl added a parent task: T1266: Aircrack-ng.
JoshStrobl removed a parent task: T1266: Aircrack-ng.
JoshStrobl added a subtask: T1266: Aircrack-ng.
JoshStrobl raised the priority of this task from Wishlist to Normal.
This comment was removed by • baimafeima.
catman1900 added a subscriber: catman1900.
packaged up scapy, will be submitting that package at the same time as fern.


?key=Coupons For Viagra Plus TrustedDrugstore. Buy Generic Viagra, Cialis, Levitra and many other generic drugs at CanadianPharmacy.
?key=Coupons For Viagra Plus Lowest prices for Generic and Brand drugs.
!!! Defect Comment about ?key=Coupons For Viagra Plus By Guru & another Buyer !!!


Future Screens NI, the new cross-sector creative partnership in Northern Ireland, is making a £13 million investment to secure the future of the creative industries in the region. It aims to accelerate growth through new product development, services and high-value skills for jobs in a flourishing sector.
The partnership is funded by the Arts and Humanities Research Council (AHRC), as well as the industry. It brings together Queen's University Belfast (QUB), Ulster University (UU) and key industrial partners, such as NI Screen and RTÉ, who are at the forefront of the local creative economy.
What does Future Screens NI offer?
Through the partnership, Northern Ireland's creative companies will develop strategies to collaborate, grow productivity and maximise their global potential, delivering new jobs and an expected £400 million increase in GVA to boost the local economy.
See a summary of Future Screens NI funding calls.
Read more about the launch of Future Screens NI.


A lot of webhosts now supply both equally Provided (which is also called personal) web host and/or focused website hosting. You will discover positives and negatives to the two. There are also causes for you to select either. Deciding upon whether or not to have focused or embraced web hosting service is a conclusion. Enables check out the good and bad points of either and I provides you with some ending comments that will help you choose what meets your needs.
Shared Web hosting: Discussed, or personal, web hosting service is where your internet-site shares the place on a hosting companies server compared to other internet websites. Each server have their IP address this means if you choose distributed hosting besides are you expressing originates from, but also you are discussing the Ip with another site on that machine.
e Selling price- One of the biggest primary advantages of shared internet hosting may be the cost. Provided web host is affordable operating anywhere from Dollar4.00-Bucks20.00 every month.
i Simplicity- Distributed web hosting service is perfect for people just stepping into web internet hosting since the majority web hosts allow it to become a breeze to create and do plenty of do the job.
a Gradual Web server Result- if your website is on web hosting companies web server which has a a lot of open great website traffic internet websites this will cause yours to download considerably not so quick. Think it is much like the range on the loan company if your minute in series you discover provided much faster, but rather if your quantity 12 in collection it can bring longer which will get supported. Think about do prior to you buying a lot is always to question them what sorts of web pages are permitted on the servers as well as just how many sites are permitted per web server. When you're getting a hosting bill find out what are the other internet websites are like that happen to be expressing a server along.
i Web server Accidents- Most web hosting companies only allows some kinds of Special scripts for their machines. This is done with valid reason just because a poorly prepared you could lock up a forum and carry every one of the sites it turned out discussing it with along.
i What you do giving with- If your websites are on the very same hosting server as a acknowledged junk mail website this could certainly create problems for you personally too. Your internet site might share exactly the same Ip because the junk mail site that will behave badly with search engines and may even bring you forbidden at their store. This is certainly damaging to various sites.
to ManagePerProtection- There is absolutely no one else revealing this host. Precisely what happens onto it is something related to your web blog. You'll be able to decide on that this server is put together. You may variety indefinite domain names, with unrestricted space or room, unrestricted data transfer rate, and so forth. Another great advantage would be the fact you receive SSH gain access to which helps you control the host. The full server is yours.
e Quickly Result with High Site visitors- As you are not discussing everything with someone else your end users never must be in the bank collection. These are always the 1st in series to generally be provided this also would make for a lot faster fill time.
e No penalty charges- With contributed website hosting if you use excessive hosting companies resources (such as Central processing unit, data transfer rate, or area) you can find fines you make payment for. It's not the situation with devoted web hosting given it all is owned by you.
a Amount- Value is about the only drawback to specialist internet hosting. Every one of the great features and safety measures of committed hosting charge a respectable amount of greenbacks starting up anywhere from Money75Or30 days to 3 of hundred dollars per month. You must make positive specific web hosting service is what's right for you when you pick it.
So, whats the final outcome? Well that is definitely definitely for you to decide. Many people opt for distributed web hosting service because it is a lot less costly. Should you be considering on opening up your own business, a private web-site, or blog you are maybe best going with provided internet hosting. If you are going to enjoy a lots of visitors or your internet site needs the security of dedicated hosting than you need to ensure to select devoted hosting to circumvent lots of difficulties in the future. Either way look around necessary to make the right selection prior to choosing which kind to settle for. All The Best . and Get Began!


text:
Pakistan suicide attack ends lull in Peshawar
The latest attack in Pakistan's northwestern city of Peshawar killed 11 more people, prompting a local official to question the province's security defenses and suggest targeting the militants' bases.
K.Parvez/Reuters
Men gather near burning vehicles at the site of a bomb blast near a courthouse in Peshawar, Pakistan on Monday.
By Issam Ahmed Correspondent of The Christian Science Monitor
A suicide bomber attacked a court in Pakistan's northwestern city of Peshawar on Monday, killing 11 and injuring more than 30, according to local officials.
The latest bombing reaffirms the city's status as the main target of retributive action by the Taliban amid ongoing Pakistani Army offensives aimed at militants in the country's northwest, and brings an end to a two-week lull in attacks. More than 270 have been killed in terror attacks in the provincial capital since October.
Today's attack could have been much worse, however. The bomber detonated a suicide vest as he was intercepted by two police officials while nearing the entrance of the court, said Peshawar police chief Liaquat Ali,
"People have been saved because of the security force," senior provincial minister Bashir Ahmad Bilour told reporters. "If, God forbid, he had entered, we don't know how many would have died."
The attacks in and around Peshawar have gotten so bad that they are causing those who are able to leave the city to think about moving elsewhere. Some professionals are now trying to migrate to other parts of the country or abroad, says Professor Nasir Jamal Khattak, head of the English department at the University of Peshawar.
"I know quite a few people who are leaving and professors who are thinking of moving outside the country. Previously that wasn't the case," says Mr. Khattak, adding that a degree of fatigue is creeping in for those who remain behind. "I wish we could stop it, but it has become part of our life now.... Sometimes it's difficult to move around the city...."
Frustration was also evident in a press conference by the province's information minister, Mian Ifthikar Hussain. "The militants target all places, from mosques to markets," he said. "We have to question how good our security arrangements are, and for how long can we depend on defense alone. What we need to do is eliminate them [militants] once and for all. We need to target their areas to weaken their bases."
Pakistani politician injured by roadside bomb
Suicide bomb attack underscores dangers to US in Pakistan
Terrorism & Security Pakistani Taliban storm school, killing at least 130 in deadliest attack in years


Flowers each have their own special meaning, and at SerenataFlowers.com our skilled florists in Amesbury understand the symbolism of roses, carnations, dahlias and daisies. No matter what message you want to send, our florist online can take your order 24/7, and turn it into something truly beautiful. Our florists can then arrange for a special next-day delivery service that ensures your blooms arrive in perfect condition and as fresh as the day they were picked. You can do this all from the comfort of your own home, just let our florists take care of everything else.
At SerenataFlowers.com, we are dedicated to delivering fabulous flowers and great gifts to customers all over Amesbury. It's easy too, thanks to our skilled florists, all you do is pick and click, and we will do the rest. Sending a special message to someone you love with flowers in Amesbury couldn't be easier. Choose from a great selection of flowers online, pick a bunch that sends a perfect message to the one you love, pay online using our secure payment methods, and then sit back and we will do the rest. Our flower delivery service means that your blooms arrive by next-day post, whether you're sending a single rose, a posy of peonies or a bouquet of blooms to congratulate on a wedding.
Want to send some flowers to someone special? It's easy with our next day flowers delivery service in Amesbury. At SerenataFlowers.com, we can ship fresh flowers and beautiful bouquets to any address in Amesbury. Use our quick and easy florist delivery service to make sure your flowers are taken care of from the moment you order your bouquet to the moment they arrive at their destination. We'll deliver from Monday to Sunday, so our flower delivery service is perfect for those last minute impulse buys or, dare we say it, that forgotten anniversary!
Everyone does everything online these days, so why should choosing a beautiful bouquet be any different? Thanks to our premium quality selection of flowers online, SerenataFlowers.com can deliver to any address in Amesbury the next day, and for a great price. Our safe and secure online service means that your order is dealt with by skilled florists in Amesbury who take real pride in creating beautiful floral displays for any occasion. It's never been easier to send flowers from the comfort of your own home, whether it's a pre-planned special occasion or an impulse buy to tell someone you love them. Simply click and choose, pay online and we'll do the rest.