text:
package com.francetelecom.clara.cloud.core.service;

import com.francetelecom.clara.cloud.TestHelper;
import com.francetelecom.clara.cloud.commons.AuthorizationException;
import com.francetelecom.clara.cloud.commons.MissingDefaultUserException;
import com.francetelecom.clara.cloud.commons.NotFoundException;
import com.francetelecom.clara.cloud.commons.TechnicalException;
import com.francetelecom.clara.cloud.core.service.exception.*;
import com.francetelecom.clara.cloud.coremodel.*;
import com.francetelecom.clara.cloud.services.dto.ApplicationDTO;
import com.francetelecom.clara.cloud.services.dto.ConfigOverrideDTO;
import cucumber.api.java.Before;
import org.apache.commons.lang3.StringUtils;
import org.junit.After;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.*;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.jpa.domain.Specifications;

import java.util.*;

import static org.junit.Assert.*;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.*;

/**
 * Test Business implementation for Application component
 *
 * @author Clara
 */
@RunWith(MockitoJUnitRunner.class)
public class ManageApplicationImplTest {

	private static final PaasUser JOE_DALTON = new PaasUser("Joe", "Dalton", new SSOId("jdalton"), "joe.dalton@alcatraz.com");

	@InjectMocks
	ManageApplicationImpl manageApplication;

	@Spy
	SecurityUtils securityUtils;
	@Spy
	SecurityContextUtilImpl securityContextUtil;

	@Mock
	ApplicationRepository applicationRepository;
	@Mock
	ApplicationReleaseRepository applicationReleaseRepository;
	@Mock
	PaasUserRepository paasUserRepository;
	@Mock
    ConfigRoleRepository configRoleRepository;

	@After
	public void cleanSecurityContext() {
		TestHelper.logout();
	}

	@Test
	public void shouldCount2Applications() {
		// Given 2 applications exist
		Mockito.when(applicationRepository.count(any(Specification.class))).thenReturn(new Long(2));
		// when I count all applications
		Long count = manageApplication.countApplications();
		// then I should get 2 applications
		Assert.assertEquals(new Long(2), count);
	}

	@Test
	public void admin_user_should_count_private_applications_he_is_a_member_of() {
		// given bob is authenticated
		TestHelper.loginAsAdmin();
		// Given bob is a member of private application joyn
		Mockito.when(applicationRepository.count(any(Specifications.class))).thenReturn(new Long(1));

		// when bob count applications
		long count = manageApplication.countMyApplications();

		// then bob should count 1 application
		Assert.assertEquals(1, count);

	}

	@Test
	public void non_admin_user_should_count_private_applications_she_is_a_member_of() {
		// given alice is authenticated
		TestHelper.loginAsUser();
		// Given alice is a member of private application joyn
		Mockito.when(applicationRepository.count(any(Specifications.class))).thenReturn(new Long(1));

		// when Alice count applications
		long count = manageApplication.countMyApplications();

		// then Alice should count 1 application
		Assert.assertEquals(1, count);

	}

	@Test
	public void shouldCreateApplicationWithNonExistingCodeAndNonExistingLabel() throws Exception {
		// given bob is authenticated
		TestHelper.loginAsAdmin();
		// Given user "Joe Dalton"
		doReturn(JOE_DALTON).when(paasUserRepository).findBySsoId(new SSOId("jdalton"));
		// given no application with label aLabel exists
		Mockito.when(applicationRepository.findOne(any(Specifications.class))).thenReturn(null);
		// given no application with code aCode exists
		Mockito.when(applicationRepository.findOne(any(Specifications.class))).thenReturn(null);
		// when I create an application with label aLabel and code aCode
		manageApplication.createPublicApplication("aCode", "aLabel", null, null, new SSOId("jdalton"));
		// then application should be persisted
		Mockito.verify(applicationRepository).save(Matchers.isA(Application.class));
	}

	@Test(expected = DuplicateApplicationException.class)
	public void shouldFailToCreateApplicationWithExistingLabel() throws Exception {
		// given bob is authenticated
		TestHelper.loginAsAdmin();
		// Given user "Joe Dalton"
		doReturn(JOE_DALTON).when(paasUserRepository).findBySsoId(new SSOId("jdalton"));
		// given application with label aLabel exists
		Mockito.when(applicationRepository.findOne(any(Specifications.class))).thenReturn(new Application("aLabel", "aCode"));
		// when I create an application with label aLabel and code aCode
		manageApplication.createPublicApplication("aCode", "aLabel", null, null, new SSOId("jdalton"));
		// then it should fail
	}

	@Test(expected = DuplicateApplicationException.class)
	public void shouldFailToCreateApplicationWithExistingCode() throws Exception {
		// given bob is authenticated
		TestHelper.loginAsAdmin();
		doReturn(JOE_DALTON).when(paasUserRepository).findBySsoId(new SSOId("jdalton"));
		// given application with code aCode exists
		Mockito.when(applicationRepository.findOne(any(Specifications.class))).thenReturn(new Application("aLabel", "aCode"));
		// when I create an application with label aLabel and code aCode
		manageApplication.createPublicApplication("aCode", "aLabel", null, null, new SSOId("jdalton"));
	}

	@Test(expected = TechnicalException.class)
	public void shouldValidateApplicationWithTooLongDescription() throws Exception {
		doReturn(JOE_DALTON).when(paasUserRepository).findBySsoId(new SSOId("jdalton"));
		String description = TestHelper.generateOutOfLengthForDefaultString();
		manageApplication.createPublicApplication("aCode", "aLabel", description, null, new SSOId("jdalton"));
	}

	@Test(expected = TechnicalException.class)
	public void shouldValidateApplicationWithTooLongLabel() throws Exception {
		doReturn(JOE_DALTON).when(paasUserRepository).findBySsoId(new SSOId("jdalton"));
		String label = TestHelper.generateOutOfLengthForDefaultString();
		manageApplication.createPublicApplication("aCode", label, "description", null, new SSOId("jdalton"));
	}

	@Test(expected = TechnicalException.class)
	public void shouldValidateApplicationWithTooLongCode() throws Exception {
		doReturn(JOE_DALTON).when(paasUserRepository).findBySsoId(new SSOId("jdalton"));
		String code = TestHelper.generateOutOfLengthForDefaultString();
		manageApplication.createPublicApplication(code, "label", "description", null, new SSOId("jdalton"));
	}

	@Test
	public void should_delete_existing_application_with_no_active_releases() throws ApplicationNotFoundException {
		// given Bob is authenticated
		TestHelper.loginAsAdmin();
		// given application with label aLabel and code aCode exists
		Application application = new Application("aLabel", "aCode");
		Application spy = Mockito.spy(application);
		Mockito.when(applicationRepository.findByUid(application.getUID())).thenReturn(spy);
		// given application with label aLabel and code aCode has no active
		// release
		Mockito.when((applicationReleaseRepository).countApplicationReleasesByApplicationUID(spy.getUID())).thenReturn(new Long(0));
		// when I delete application with label aLabel and code aCode
		manageApplication.deleteApplication(spy.getUID());
		// then application should be set as removed
		Mockito.verify(spy).markAsRemoved();
	}

	@Test(expected = ApplicationNotFoundException.class)
	public void ShouldFailToDeleteUnknownApplication() throws ApplicationNotFoundException {
		// given Bob is authenticated
		TestHelper.loginAsAdmin();
		// given no application with uid unknown exists
		Mockito.when(applicationRepository.findByUid("unknown")).thenReturn(null);
		// when I delete application with uid unknown
		manageApplication.deleteApplication("unknown");
		// then It should failed
	}

	@Test(expected = IllegalStateException.class)
	public void fail_to_delete_existing_application_with_active_releases() throws ApplicationNotFoundException {
		// given Bob is authenticated
		TestHelper.loginAsAdmin();
		// given application with label aLabel and code aCode exists
		Application application = new Application("aLabel", "aCode");
		Mockito.when(applicationRepository.findByUid(application.getUID())).thenReturn(application);
		// given application with label aLabel and code aCode has 2 active
		// releases
		Mockito.when((applicationReleaseRepository).countApplicationReleasesByApplicationUID(application.getUID())).thenReturn(new Long(2));
		// when I delete application with label aLabel and code aCode
		manageApplication.deleteApplication(application.getUID());
		// then It should failed
	}

	@Test
	public void shouldFindApplicationByExistingUID() throws ApplicationNotFoundException {
		// given Bob is authenticated
		TestHelper.loginAsAdmin();
		// given application joyn
		Application joyn = new Application("joyn", "joyn");
		Mockito.when(applicationRepository.findByUid(joyn.getUID())).thenReturn(joyn);
		// when I find application joyn by its UID
		Application result = manageApplication.findApplicationByUID(joyn.getUID());
		// then I should get application joyn
		Mockito.verify(applicationRepository).findByUid(joyn.getUID());
		Assert.assertEquals(joyn, result);
	}

	@Test
	public void admin_user_should_find_by_its_existing_uid_an_editable_application() throws ApplicationNotFoundException {
		// given Bob is authenticated
		TestHelper.loginAsAdmin();
		// given private application joyn
		Application joyn = new Application("joyn", "joyn");
		Set<SSOId> members = new HashSet<>();
		members.add(new SSOId("alice123"));
		joyn.setAsPrivate();
		joyn.setMembers(members);
		Mockito.when(applicationRepository.findByUid(joyn.getUID())).thenReturn(joyn);
		// when I find application joyn by its UID
		Application result = manageApplication.findApplicationByUID(joyn.getUID());
		// then I should get application joyn
		Mockito.verify(applicationRepository).findByUid(joyn.getUID());
		Assert.assertEquals(joyn, result);
		Assert.assertTrue(joyn.isEditable());
	}

	@Test
	public void non_admin_user_should_find_by_its_existing_uid_an_editable_application_if_she_is_a_member_of() throws ApplicationNotFoundException {
		// given Alice is authenticated
		TestHelper.loginAsUser();
		// given Alice is a member of private application joyn
		Application joyn = new Application("joyn", "joyn");
		Set<SSOId> members = new HashSet<>();
		members.add(new SSOId("alice123"));
		joyn.setAsPrivate();
		joyn.setMembers(members);
		Mockito.when(applicationRepository.findByUid(joyn.getUID())).thenReturn(joyn);

		// when Alice find application joyn by its UID
		Application result = manageApplication.findApplicationByUID(joyn.getUID());

		// then Alice should get application joyn
		Mockito.verify(applicationRepository).findByUid(joyn.getUID());
		Assert.assertEquals(joyn, result);
		// then application joyn should be editable
		Assert.assertTrue(joyn.isEditable());
	}

	@Test
	public void non_admin_user_should_find_by_its_existing_uid_a_non_editable_application_if_she_is_not_a_member_of()
			throws ApplicationNotFoundException {
		// given Alice is authenticated
		TestHelper.loginAsUser();
		// given Alice is a not member of private application joyn
		Application joyn = new Application("joyn", "joyn");
		Set<SSOId> members = new HashSet<>();
		members.add(new SSOId("bob123"));
		joyn.setAsPrivate();
		joyn.setMembers(members);

		Mockito.when(applicationRepository.findByUid(joyn.getUID())).thenReturn(joyn);

		// when Alice find application joyn by its UID
		Application result = manageApplication.findApplicationByUID(joyn.getUID());

		// then Alice should get application joyn
		Mockito.verify(applicationRepository).findByUid(joyn.getUID());
		Assert.assertEquals(joyn, result);
		// then application joyn should not be editable
		Assert.assertFalse(joyn.isEditable());
	}

	@Test(expected = ApplicationNotFoundException.class)
	public void shouldFailToFindApplicationByUnkownUID() throws ApplicationNotFoundException {
		// given no application with UID unknown exists
		Mockito.when(applicationRepository.findByUid("unkown")).thenReturn(null);
		// when I find application with UID unknown
		manageApplication.findApplicationByUID("unkown");
		// then It should fail
	}

	@Test
	public void shouldFindApplicationByExistingLabel() throws ApplicationNotFoundException {
		// given application with label aLabel and code aCode exists
		Application application = new Application("aLabel", "aCode");
		Mockito.when(applicationRepository.findOne(any(Specifications.class))).thenReturn(application);
		// when I find application with label aLabel
		ApplicationDTO result = manageApplication.findApplicationByLabel(application.getLabel());
		// then I should get application with uid
		Assert.assertEquals(application.getUID(), result.getUid());
		// then I should get application with label aLabel
		Assert.assertEquals("aLabel", result.getLabel());
		// then I should get application with code aCode
		Assert.assertEquals("aCode", result.getCode());
	}

	@Test(expected = ApplicationNotFoundException.class)
	public void shouldFailToFindApplicationByUnkownLabel() throws ApplicationNotFoundException {
		// given no application with label unknown exists
		Mockito.when(applicationRepository.findOne(any(Specifications.class))).thenReturn(null);
		// when I find application with label unknown
		manageApplication.findApplicationByLabel("unkown");
		// then It should fail
	}

	@Test
	public void shouldUpdateExistingApplication() throws ApplicationNotFoundException, DuplicateApplicationException, PaasUserNotFoundException {
		// given Bob is authenticated
		TestHelper.loginAsAdmin();
		// given application with label aLabel and code aCode exists
		Application application = new Application("aLabel", "aCode");
		Mockito.when(applicationRepository.findByUid(application.getUID())).thenReturn(application);
		// when I update application
		application.setLabel("anotherLabel");
		application.setCode("anotherCode");
		manageApplication.updateApplication(application);
		// application should be updated
		Mockito.verify(applicationRepository).save(application);
	}

	@Test(expected = PaasUserNotFoundException.class)
	public void fail_to_update_application_with_unknown_members() throws ApplicationNotFoundException, DuplicateApplicationException,
			PaasUserNotFoundException, NotFoundException {
		// given Bob is authenticated
		TestHelper.loginAsAdmin();
		// given application with label aLabel and code aCode exists
		Application application = new Application("aLabel", "aCode");
		when(applicationRepository.findByUid(application.getUID())).thenReturn(application);
		when(paasUserRepository.findBySsoId(new SSOId("hacker"))).thenReturn(null);
		// when I update application
		Set<SSOId> members = new HashSet<>();
		members.add(new SSOId("hacker"));
		application.setAsPrivate();
		application.setMembers(members);
		manageApplication.updateApplication(application);
		// application should be updated
		Mockito.verify(applicationRepository).save(application);
	}

	@Test(expected = ApplicationNotFoundException.class)
	public void shouldFailToUpdateUnkwownApplication() throws ApplicationNotFoundException, DuplicateApplicationException, PaasUserNotFoundException {
		// given Bob is authenticated
		TestHelper.loginAsAdmin();
		// given no application with label aLabel and code aCode exists
		Application application = new Application("aLabel", "aCode");
		Mockito.when(applicationRepository.findByUid(application.getUID())).thenReturn(null);
		// when I update application
		application.setLabel("anotherLabel");
		application.setCode("anotherCode");
		manageApplication.updateApplication(application);
		// then It should fail
	}

	@Test(expected = DuplicateApplicationException.class)
	public void fail_to_update_application_with_existing_code() throws DuplicateApplicationException, ApplicationNotFoundException,
			PaasUserNotFoundException {
		// given Bob is authenticated
		TestHelper.loginAsAdmin();
		// given application with label aLabel and code aCode exists
		Application application = new Application("aLabel", "aCode");
		Mockito.when(applicationRepository.findByUid(application.getUID())).thenReturn(new Application("aLabel", "aCode"));
		// given application with code anotherCode exists
		Mockito.when(applicationRepository.findOne(any(Specifications.class))).thenReturn(new Application("anotherLabel", "anotherCode"));
		// when I update application
		application.setLabel("aLabel");
		application.setCode("anotherCode");
		manageApplication.updateApplication(application);
		// then It should fail
	}

	@Test(expected = DuplicateApplicationException.class)
	public void fail_to_update_application_with_existing_label() throws DuplicateApplicationException, ApplicationNotFoundException,
			PaasUserNotFoundException {
		// given Bob is authenticated
		TestHelper.loginAsAdmin();
		// given application with label aLabel and code aCode exists
		Application application = new Application("aLabel", "aCode");
		Mockito.when(applicationRepository.findByUid(application.getUID())).thenReturn(new Application("aLabel", "aCode"));
		// given application with label anotherLabel exists
		Mockito.when(applicationRepository.findOne(any(Specifications.class))).thenReturn(new Application("anotherLabel", "anotherCode"));
		// when I update application
		application.setLabel("anotherLabel");
		application.setCode("aCode");
		manageApplication.updateApplication(application);
		// then It should fail
	}

	@Test(expected = ApplicationNotFoundException.class)
	public void ShouldBeUnableToDeleteUnknownApplication() throws ApplicationNotFoundException {
		// given no application with uid unknown exists
		Mockito.when(applicationRepository.findByUid("unknown")).thenReturn(null);
		// when I ask if application with uid unknown can be deleted
		boolean result = manageApplication.canBeDeleted("unknown");
		// then I should be unable to delete application with uid unknown
		Assert.assertFalse(result);
	}

	@Test
	public void created_public_Application_should_be_public() throws Exception {
		// given bob is authenticated
		TestHelper.loginAsAdmin();

		ManageApplication manageApplication = spy(this.manageApplication);
		// Given user "Joe Dalton"
		doReturn(JOE_DALTON).when(paasUserRepository).findBySsoId(new SSOId("jdalton"));

		// When I create an application without specifying its visibility and
		// creator
		manageApplication.createPublicApplication("code", "label", "desc", null, new SSOId("jdalton"));

		// Then detailed create application service should be called with public
		// visibility and no creator
		verify(manageApplication).createPublicApplication("code", "label", "desc", null, new SSOId("jdalton"));
	}

	@Test
	public void created_private_Application_should_be_private() throws Exception {
		// given bob is authenticated
		TestHelper.loginAsAdmin();

		// Given user "Joe Dalton"
		doReturn(JOE_DALTON).when(paasUserRepository).findBySsoId(new SSOId("jdalton"));

		// when Joe creates a private application

		manageApplication.createPrivateApplication("code", "label", "description", null, new SSOId("jdalton"));

		// Then the persisted application should be private
		ArgumentCaptor<Application> captor = ArgumentCaptor.forClass(Application.class);
		verify(applicationRepository).save(captor.capture());
		Application app = captor.getValue();

		assertEquals("isPublic", false, app.isPublic());
	}

	@Test
	public void created_private_Application_should_contain_specified_members() throws Exception {
		// given bob is authenticated
		TestHelper.loginAsAdmin();

		// Given user "Joe Dalton"
		doReturn(JOE_DALTON).when(paasUserRepository).findBySsoId(new SSOId("jdalton"));

		// when Joe creates a private application
		manageApplication.createPrivateApplication("code", "label", "description", null, new SSOId("jdalton"));

		// Then the persisted application should have "Joe Dalton" as member
		ArgumentCaptor<Application> captor = ArgumentCaptor.forClass(Application.class);
		verify(applicationRepository).save(captor.capture());
		Application app = captor.getValue();

		assertTrue("user that creates the application should be a member", app.listMembers().contains(new SSOId("jdalton")));
	}

	@Test(expected = PaasUserNotFoundException.class)
	public void fail_to_create_a_private_application_with_unknown_member() throws Exception {
		// Given user "jdalton" ssoid does not exists
		Mockito.doReturn(null).when(paasUserRepository).findBySsoId(new SSOId("jdalton"));

		// When I create a private application with "jdalton" as a member
		manageApplication.createPrivateApplication("code", "label", "description", null, new SSOId("jdalton"));

		// Then it should fail
	}

	@Test(expected=MissingDefaultUserException.class)
	public void fail_to_create_a_private_application_with_no_member() throws Exception {
		// When I create a private application without specifying a user
		manageApplication.createPrivateApplication("code", "label", "description", null);
	}

	@Test(expected=MissingDefaultUserException.class)
	public void fail_to_create_a_public_application_with_no_member() throws Exception {
		// When I create a private application without specifying a user
		manageApplication.createPublicApplication("code", "label", "description", null);
	}

	@Test
	public void non_admin_user_should_see_public_and_private_applications_she_is_a_member_of_as_accessible() {
		// given Alice is authenticated
		TestHelper.loginAsUser();
		// Given Alice is a member of private application joyn
		Application joyn = new Application("joyn", "joyn");
		Set<SSOId> joynMembers = new HashSet<>();
		joynMembers.add(new SSOId("alice123"));
		joyn.setAsPrivate();
		joyn.setMembers(joynMembers);

		// Given a public application elPaaso
		Application elPaaso = new Application("elPaaso", "elPaaso");

		List<Application> result = new ArrayList<Application>();
		result.add(joyn);
		result.add(elPaaso);
		Mockito.when(applicationRepository.findAll(any(Specifications.class))).thenReturn(result);

		// when Alice find all applications
		Collection<Application> applications = manageApplication.findAccessibleApplications();
		// then Alice should get 2 applications
		Assert.assertEquals(2, applications.size());
		// then Alice should get application joyn
		Assert.assertTrue(applications.contains(joyn));
		// then Alice should get application elPaaso
		Assert.assertTrue(applications.contains(elPaaso));
		// then application joyn should be editable
		Assert.assertTrue(joyn.isEditable());
		// then public application elPaaso should not be editable
		Assert.assertFalse(elPaaso.isEditable());
	}

	@Test
	public void non_admin_user_should_only_see_as_her_own_pageable_applications_she_is_a_member_of() {
		// given Alice is authenticated
		TestHelper.loginAsUser();
		// Given Alice is a member of private application joyn
		Application joyn = new Application("joyn", "joyn");
		Set<SSOId> joynMembers = new HashSet<>();
		joynMembers.add(new SSOId("alice123"));
		joyn.setAsPrivate();
		joyn.setMembers(joynMembers);

		// Given Alice is a member of private application myOrange
		Application myOrange = new Application("myOrange", "myOrange");
		Set<SSOId> myOrangeMembers = new HashSet<>();
		myOrangeMembers.add(new SSOId("alice123"));
		joyn.setAsPrivate();
		joyn.setMembers(myOrangeMembers);

		List<Application> result = new ArrayList<Application>();
		result.add(joyn);
		result.add(myOrange);
		Mockito.when(
				applicationRepository.findAll(any(Specification.class), any(Sort.class))).thenReturn(result);

		// when Alice find all applications
		Collection<Application> applications = manageApplication.findMyApplications();
		// then Alice should get 2 applications
		Assert.assertEquals(2, applications.size());
		// then Alice should get application joyn
		Assert.assertTrue(applications.contains(joyn));
		// then Alice should get application myOrange
		Assert.assertTrue(applications.contains(myOrange));
		// then application joyn should be editable
		Assert.assertTrue(joyn.isEditable());
		// then application myOrange should be editable
		Assert.assertTrue(myOrange.isEditable());
	}

	@Test
	public void admin_user_should_see_as_her_own_pageable_applications_she_is_a_member_of() {
		// given Alice is authenticated
		TestHelper.loginAsAdmin();
		// Given Alice is a member of private application joyn
		Application joyn = new Application("joyn", "joyn");
		Set<SSOId> joynMembers = new HashSet<>();
		joynMembers.add(new SSOId("bob123"));
		joyn.setAsPrivate();
		joyn.setMembers(joynMembers);
		// Given Alice is a member of private application myOrange
		Application myOrange = new Application("myOrange", "myOrange");
		Set<SSOId> myOrangeMembers = new HashSet<>();
		myOrangeMembers.add(new SSOId("bob123"));
		myOrange.setAsPrivate();
		myOrange.setMembers(myOrangeMembers);

		List<Application> result = new ArrayList<Application>();
		result.add(joyn);
		result.add(myOrange);
		Mockito.when(
				applicationRepository.findAll(any(Specification.class), any(Sort.class))).thenReturn(result);

		// when Alice find all applications
		Collection<Application> applications = manageApplication.findMyApplications();
		// then Alice should get 2 applications
		Assert.assertEquals(2, applications.size());
		// then Alice should get application joyn
		Assert.assertTrue(applications.contains(joyn));
		// then Alice should get application myOrange
		Assert.assertTrue(applications.contains(myOrange));
		// then application joyn should be editable
		Assert.assertTrue(joyn.isEditable());
		// then application myOrange should be editable
		Assert.assertTrue(myOrange.isEditable());
	}

	@Test
	public void admin_user_should_see_all_applications_as_his_own() {
		// given Alice is authenticated
		TestHelper.loginAsAdmin();
		// Given Alice is a member of private application joyn
		Application joyn = new Application("joyn", "joyn");
		Set<SSOId> joynMembers = new HashSet<>();
		joynMembers.add(new SSOId("bob123"));
		joyn.setAsPrivate();
		joyn.setMembers(joynMembers);
		// Given Alice is a member of private application myOrange
		Application myOrange = new Application("myOrange", "myOrange");
		Set<SSOId> myOrangeMembers = new HashSet<>();
		myOrangeMembers.add(new SSOId("bob123"));
		myOrange.setAsPrivate();
		myOrange.setMembers(myOrangeMembers);

		List<Application> result = new ArrayList<Application>();
		result.add(joyn);
		result.add(myOrange);
		Mockito.when(applicationRepository.findAll(any(Specification.class), any(Sort.class))).thenReturn(result);

		// when Alice find all applications
		Collection<Application> applications = manageApplication.findMyApplications();
		// then Alice should get 2 applications
		Assert.assertEquals(2, applications.size());
		// then Alice should get application joyn
		Assert.assertTrue(applications.contains(joyn));
		// then Alice should get application myOrange
		Assert.assertTrue(applications.contains(myOrange));
		// then application joyn should be editable
		Assert.assertTrue(joyn.isEditable());
		// then application myOrange should be editable
		Assert.assertTrue(myOrange.isEditable());
	}

	@Test
	public void non_admin_user_should_only_see_as_editable_private_appplications_she_is_a_member_of() {
		// given Alice is authenticated
		TestHelper.loginAsUser();
		// Given Alice is a member of private application joyn
		Application joyn = new Application("joyn", "joyn");
		Set<SSOId> joynMembers = new HashSet<>();
		joynMembers.add(new SSOId("alice123"));
		joyn.setAsPrivate();
		joyn.setMembers(joynMembers);
		// Given Alice is a not member of private application myOrange
		Application myOrange = new Application("myOrange", "myOrange");
		Set<SSOId> myOrangeMembers = new HashSet<>();
		myOrangeMembers.add(new SSOId("bob123"));
		myOrange.setAsPrivate();
		myOrange.setMembers(myOrangeMembers);
		// Given a public application elPaaso
		Application elPaaso = new Application("elPaaso", "elPaaso");

		List<Application> result = new ArrayList<Application>();
		result.add(joyn);
		result.add(myOrange);
		result.add(elPaaso);
		Mockito.when(applicationRepository.findAll(any(Specification.class), any(Sort.class))).thenReturn(result);

		// when Alice find all applications
		Collection<Application> applications = manageApplication.findApplications();
		// then Alice should see all applications
		Assert.assertEquals(3, applications.size());
		// then Alice should get application joyn
		Assert.assertTrue(applications.contains(joyn));
		// then Alice should get application myOrange
		Assert.assertTrue(applications.contains(myOrange));
		// then Alice should get application myOrange
		Assert.assertTrue(applications.contains(elPaaso));
		// then application joyn should be editable
		Assert.assertTrue(joyn.isEditable());
		// then application myOrange should not be editable
		Assert.assertFalse(myOrange.isEditable());
		// then application elPaaso should not be editable either
		Assert.assertFalse(elPaaso.isEditable());
	}

	@Test
	public void admin_user_should_see_all_applications_as_accessible() {
		// given Bob is authenticated
		TestHelper.loginAsAdmin();
		// Given Bob is a member of private application joyn
		Application joyn = new Application("joyn", "joyn");
		Set<SSOId> joynMembers = new HashSet<>();
		joynMembers.add(new SSOId("bob123"));
		joyn.setAsPrivate();
		joyn.setMembers(joynMembers);
		// Given Bob is a member of public application elPaaso
		Application elPaaso = new Application("elPaaso", "elPaaso");

		List<Application> result = new ArrayList<Application>();
		result.add(joyn);
		result.add(elPaaso);
		Mockito.when(applicationRepository.findAll(any(Specification.class),any(Sort.class))).thenReturn(result);

		// when Bob find all applications
		Collection<Application> applications = manageApplication.findAccessibleApplications();
		// then bob should get 2 applications
		Assert.assertEquals(2, applications.size());
		// then bob should get application joyn
		Assert.assertTrue(applications.contains(joyn));
		// then bob should get application elpaaso
		Assert.assertTrue(applications.contains(elPaaso));
		// then application joyn should be editable
		Assert.assertTrue(joyn.isEditable());
		// then application elPaaso should be editable
		Assert.assertTrue(elPaaso.isEditable());
	}

	@Test
	public void admin_user_should_see_all_pageable_applications() {
		// given Bob is authenticated
		TestHelper.loginAsAdmin();
		// Given Bob is a member of private application joyn
		Application joyn = new Application("joyn", "joyn");
		Set<SSOId> joynMembers = new HashSet<>();
		joynMembers.add(new SSOId("bob123"));
		joyn.setAsPrivate();
		joyn.setMembers(joynMembers);
		// Given Bob is a member of public application elPaaso
		Application elPaaso = new Application("elPaaso", "elPaaso");

		List<Application> result = new ArrayList<Application>();
		result.add(joyn);
		result.add(elPaaso);
		Mockito.when(applicationRepository.findAll(any(Specification.class), any(Sort.class))).thenReturn(result);

		// when Bob find all applications
		Collection<Application> applications = manageApplication.findApplications();
		// then bob should get 2 applications
		Assert.assertEquals(2, applications.size());
		// then bob should get application joyn
		Assert.assertTrue(applications.contains(joyn));
		// then bob should get application elpaaso
		Assert.assertTrue(applications.contains(elPaaso));
	}

	@Test
	public void non_admin_user_can_edit_a_private_application_she_is_a_member_of() throws ApplicationNotFoundException, PaasUserNotFoundException,
			DuplicateApplicationException {
		// given Alice is authenticated
		TestHelper.loginAsUser();
		// Given a private application joyn
		Application joyn = new Application("joyn", "joyn");
		// given Alice is a member of application joyn
		Set<SSOId> joynMembers = new HashSet<>();
		joynMembers.add(new SSOId("alice123"));
		joyn.setAsPrivate();
		joyn.setMembers(joynMembers);

		Mockito.when(applicationRepository.findByUid(joyn.getUID())).thenReturn(joyn);
		doReturn(JOE_DALTON).when(paasUserRepository).findBySsoId(new SSOId("alice123"));
		// when Alice update application joyn
		joyn.setLabel("anotherLabel");
		manageApplication.updateApplication(joyn);

		// it should succeed
	}

	@Test(expected = AuthorizationException.class)
	public void non_admin_user_can_not_edit_a_public_application_she_is_not_member_of() throws ApplicationNotFoundException,
			PaasUserNotFoundException, DuplicateApplicationException {
		// given Alice is authenticated
		TestHelper.loginAsUser();
		// given a public application elpaaso
		Application joyn = new Application("elpaaso", "elpaaso");
		Mockito.when(applicationRepository.findByUid(joyn.getUID())).thenReturn(joyn);

		// when Alice update application joyn
		joyn.setLabel("anotherLabel");
		manageApplication.updateApplication(joyn);

		// it should succeed
	}

	@Test(expected = AuthorizationException.class)
	public void non_admin_user_fail_to_edit_a_private_application_she_is_not_a_member_of() throws ApplicationNotFoundException,
			PaasUserNotFoundException, DuplicateApplicationException {
		// given Alice is authenticated
		TestHelper.loginAsUser();
		// Given a private application joyn
		Application joyn = new Application("joyn", "joyn");
		// given Alice is not a member of application joyn
		Set<SSOId> joynMembers = new HashSet<>();
		joynMembers.add(new SSOId("jdalton"));
		joyn.setAsPrivate();
		joyn.setMembers(joynMembers);

		Mockito.when(applicationRepository.findByUid(joyn.getUID())).thenReturn(joyn);
		doReturn(JOE_DALTON).when(paasUserRepository).findBySsoId(new SSOId("jdalton"));

		// when Alice update application joyn
		joyn.setLabel("anotherLabel");
		manageApplication.updateApplication(joyn);

		// it should fail
	}

	@Test(expected = AuthorizationException.class)
	public void non_admin_user_can_not_delete_a_public_application_she_is_not_member_of() throws ApplicationNotFoundException,
			PaasUserNotFoundException, DuplicateApplicationException {
		// given Alice is authenticated
		TestHelper.loginAsUser();
		// given a public application elpaaso
		Application joyn = new Application("elpaaso", "elpaaso");
		Mockito.when(applicationRepository.findByUid(joyn.getUID())).thenReturn(joyn);

		// when Alice ask if she can delete public application joyn
		boolean canBeDeleted = manageApplication.canBeDeleted(joyn.getUID());
		// then it should be possible
		Assert.assertFalse(canBeDeleted);

		// when Alice delete public application joyn
		manageApplication.deleteApplication(joyn.getUID());
		// it should succeed
	}

	@Test(expected = AuthorizationException.class)
	public void non_admin_user_fail_to_delete_a_private_application_she_is_not_a_member_of() throws ApplicationNotFoundException,
			PaasUserNotFoundException, DuplicateApplicationException {
		// given Alice is authenticated
		TestHelper.loginAsUser();
		// Given a private application joyn
		Application joyn = new Application("joyn", "joyn");
		Mockito.when(applicationRepository.findByUid(joyn.getUID())).thenReturn(joyn);
		// given Alice is not a member of application joyn
		Set<SSOId> joynMembers = new HashSet<>();
		joynMembers.add(new SSOId("bob123"));
		joyn.setAsPrivate();
		joyn.setMembers(joynMembers);

		// when Alice ask if she can delete public application joyn
		boolean canBeDeleted = manageApplication.canBeDeleted(joyn.getUID());
		// then it should not be possible
		Assert.assertFalse(canBeDeleted);

		// when Alice delete private application joyn
		manageApplication.deleteApplication(joyn.getUID());

		// it should fail
	}

	@Test
	public void non_admin_user_can_delete_a_private_application_she_is_a_member_of() throws ApplicationNotFoundException, PaasUserNotFoundException,
			DuplicateApplicationException {
		// given Alice is authenticated
		TestHelper.loginAsUser();
		// Given a private application joyn
		Application joyn = new Application("joyn", "joyn");
		Mockito.when(applicationRepository.findByUid(joyn.getUID())).thenReturn(joyn);
		// given Alice is a member of application joyn
		Set<SSOId> joynMembers = new HashSet<>();
		joynMembers.add(new SSOId("alice123"));
		joyn.setAsPrivate();
		joyn.setMembers(joynMembers);

		// when Alice ask if she can delete public application joyn
		boolean canBeDeleted = manageApplication.canBeDeleted(joyn.getUID());
		// then it should be possible
		Assert.assertTrue(canBeDeleted);

		// when Alice delete application joyn
		manageApplication.deleteApplication(joyn.getUID());

		// it should succeed
	}

	@Test
	public void admin_user_can_edit_a_private_application() throws ApplicationNotFoundException, PaasUserNotFoundException,
			DuplicateApplicationException {
		// given Bob is authenticated
		TestHelper.loginAsAdmin();
		// Given a private application joyn
		Application joyn = new Application("joyn", "joyn");
		Set<SSOId> joynMembers = new HashSet<>();
		joynMembers.add(new SSOId("jdalton"));
		joyn.setAsPrivate();
		joyn.setMembers(joynMembers);
		Mockito.when(applicationRepository.findByUid(joyn.getUID())).thenReturn(joyn);
		doReturn(JOE_DALTON).when(paasUserRepository).findBySsoId(new SSOId("jdalton"));

		// when bob update application joyn
		joyn.setLabel("anotherLabel");
		manageApplication.updateApplication(joyn);

		// it should succeed
	}

	@Test
	public void admin_user_can_edit_a_public_application() throws ApplicationNotFoundException, PaasUserNotFoundException,
			DuplicateApplicationException {
		// given Bob is authenticated
		TestHelper.loginAsAdmin();
		// Given a public application elpaaso
		Application elpaaso = new Application("elpaaso", "elpaaso");
		Mockito.when(applicationRepository.findByUid(elpaaso.getUID())).thenReturn(elpaaso);

		// when bob update application joyn
		elpaaso.setLabel("anotherLabel");
		manageApplication.updateApplication(elpaaso);

		// it should succeed
	}

	@Test
	public void admin_user_can_delete_a_private_application() throws ApplicationNotFoundException, PaasUserNotFoundException,
			DuplicateApplicationException {
		// given Bob is authenticated
		TestHelper.loginAsAdmin();
		// Given a private application joyn
		Application joyn = new Application("joyn", "joyn");
		Set<SSOId> joynMembers = new HashSet<>();
		joynMembers.add(new SSOId("alice123"));
		joyn.setAsPrivate();
		joyn.setMembers(joynMembers);
		Mockito.when(applicationRepository.findByUid(joyn.getUID())).thenReturn(joyn);

		// when Bob ask if he can delete public application joyn
		boolean canBeDeleted = manageApplication.canBeDeleted(joyn.getUID());
		// then it should be possible
		Assert.assertTrue(canBeDeleted);

		// when bob delete application joyn
		manageApplication.deleteApplication(joyn.getUID());

		// it should succeed
	}

	@Test
	public void admin_user_can_delete_a_public_application() throws ApplicationNotFoundException, PaasUserNotFoundException,
			DuplicateApplicationException {
		// given Bob is authenticated
		TestHelper.loginAsAdmin();
		// Given a public application elpaaso
		Application elpaaso = new Application("elpaaso", "elpaaso");
		Mockito.when(applicationRepository.findByUid(elpaaso.getUID())).thenReturn(elpaaso);

		// when Bob ask if he can delete public application joyn
		boolean canBeDeleted = manageApplication.canBeDeleted(elpaaso.getUID());
		// then it should be possible
		Assert.assertTrue(canBeDeleted);

		// when bob delete application elpaaso
		manageApplication.deleteApplication(elpaaso.getUID());

		// it should succeed
	}

    @Test
    public void member_user_can_create_config_roles() throws ApplicationNotFoundException, InvalidConfigOverrideException, ConfigRoleNotFoundException {
        TestHelper.loginAsUser(); // given Bob is authenticated

        Application joyn = new Application("joyn", "joyn");
        Set<SSOId> joynMembers = new HashSet<>();
        joynMembers.add(new SSOId(TestHelper.USER_WITH_USER_ROLE_SSOID.getValue()));
        joyn.setAsPrivate();
        joyn.setMembers(joynMembers);
        String applicationUID = joyn.getUID();
        Mockito.when(applicationRepository.findByUid(applicationUID)).thenReturn(joyn);

        //given valid config role
        List<ConfigOverrideDTO> overrideConfigs = new ArrayList<>();
        ConfigOverrideDTO configOverrideDTO = new ConfigOverrideDTO("configSet", "key", "value", "comment");
        overrideConfigs.add(configOverrideDTO);

        //when
        String configRoleUID = manageApplication.createConfigRole(applicationUID, "role label", overrideConfigs);

        // then request is not rejected
        // (asserts on proper saving of the role are in integration tests, see ApplicationLifeCycleTest
    }

    @Test(expected = AuthorizationException.class)
    public void non_member_user_can_not_create_config_roles() throws ApplicationNotFoundException, InvalidConfigOverrideException, ConfigRoleNotFoundException {
        TestHelper.loginAsUser(); // given Bob is authenticated

        Application joyn = new Application("joyn", "joyn");
        joyn.setAsPrivate();
        String applicationUID = joyn.getUID();
        Mockito.when(applicationRepository.findByUid(applicationUID)).thenReturn(joyn);

        //given valid config role
        List<ConfigOverrideDTO> emptyOverrideConfigs = new ArrayList<>();

        //when
        manageApplication.createConfigRole(applicationUID, "role label", emptyOverrideConfigs);
    }

    @Test
    public void syntaxically_invalid_config_roles_are_rejected() throws ApplicationNotFoundException {
        TestHelper.loginAsUser(); // given Bob is authenticated

        Application elpaaso = new Application("elpaaso", "elpaaso");
        Set<SSOId> joynMembers = new HashSet<>();
        joynMembers.add(new SSOId(TestHelper.USER_WITH_USER_ROLE_SSOID.getValue()));
        elpaaso.setAsPrivate();
        elpaaso.setMembers(joynMembers);
        Mockito.when(applicationRepository.findByUid(elpaaso.getUID())).thenReturn(elpaaso);

        Mockito.when(applicationRepository.findByUid(elpaaso.getUID())).thenReturn(elpaaso);

        //given invalid config role: too large comment
        List<ConfigOverrideDTO> overrideConfigs = new ArrayList<>();
        String tooLargeComment = StringUtils.rightPad("value", ConfigOverrideDTO.MAX_CONFIG_VALUE_LENGTH + 2, 'X');
        ConfigOverrideDTO configOverrideDTO = new ConfigOverrideDTO("configSet", "key", tooLargeComment, "comment");
        overrideConfigs.add(configOverrideDTO);

        //when
        try {
            manageApplication.createConfigRole(elpaaso.getUID(), "role label", overrideConfigs);
            fail("expected config role to be rejected with invalid config role");
        } catch (InvalidConfigOverrideException e) {
            Assert.assertTrue(e.getFaultyOverride() == configOverrideDTO);
        }

    }

}

redpajama_set_name: RedPajamaGithub


text:
Color Run slated for Oct. 22
To raise money for the House of Ruth, all Stevenson University students and staff are invited to participate in the first-ever SU Color Run on Oct. 22 from 4-6 p.m. on the Greenspring Campus. Proceeds from registration will help the House of Ruth, a shelter for victimized women and children, fund basic food and other necessities. The departments of Business Communication and Student Activities are the primary sponsors of the 4K challenge (about 2.5 miles) which will be run or walked on the cross country track on the Greenspring Campus.
Registration is at The Rock and costs $10 for SU community members. Guests may run the course for $15. To receive an event T-shirt, register by Oct. 13. Prizes will be awarded for craziest and most spirited outfits.
CM 265, Event Planning and Publicity, has planned, organized and will execute the event.
Register today!!
Keywords: outreach
BizComm leads cross country team
Junior BizComm Lanie Swanhart helped lead the Stevenson University cross country team on Saturday, September 27, at the Don Cathcart Invitational at Salisbury University.
Swanhart ran a time of 25:18 in the 5K finishing just behind teammate Brittany Appleby.
(Photo from gomustangsports.com)
BizComms help bring Mustangs to 4-0
On Saturday, September 27, the Stevenson University football team won their fourth game of the season on the road at Albright College. This is the first time in school history that the football team is 4-0, and six members of the Business Communication department contributed to the effort.
Congratulations to freshman Daniel Williams who started at quarterback. Other BizComm starters for the Mustangs included Andrew Wysoki and Jarrett Bragg. Frederick Terry, Anthony Arcell, Danny Miller and Zach Jefferson also helped lead the Mustangs to the 13-6 win over Albright.
In the photo, senior Anthony Arcell (54) works hard on the defensive line. (Photo by Talia Cortada-Houston)

redpajama_set_name: RedPajamaCommonCrawl


The number of households holding life insurance is at a 50-year low. Digital disruption has changed demand and how consumers interact with agents. To adapt, carriers must use more predictive analytics, increase digital offerings, and activate agents to give advice in a digitally enabled ecosystem.
So, how did we get here and what can carriers do about it? Deloitte surveyed more than 1,600 middle-market consumers in the United States on both their attitudes toward life insurance and their path-to-purchase for life insurance products. New results from the most recent survey, combined with our longitudinal analysis from Deloitte's 2012 and 2015 consumer preferences studies, has uncovered new insights that can help carriers better understand and engage a modern, more digitally savvy consumer.
Consumers generally have a limited awareness of life insurance and do not understand the need for a policy until a life event triggers action. Marketing needs to be more effective at identifying and reaching out to consumers at the right time with the right message.
Carriers should differentiate through their services and innovate pricing. Competition for consumer wallet share is fierce and evolving to include new entrants not previously considered competitors, such as subscription entertainment services.
The time period for life insurance agents to inform the decision-making process is now compressed. While there is still a clear need for carriers to deliver high-quality, timely, and comprehensive financial advice, consumers are increasingly turning to digital channels that offer a more streamlined experience for product evaluation, purchase, and postpurchase service.
Most carriers have not yet developed the digital capabilities across the purchasing life cycle (research, evaluation, purchase, and postpurchase servicing) that consumers demand.
Facing this reality, the time for carriers to adjust to digital disruption in the path to purchase is now. Carriers should leverage more predictive analytics and marketing, increase digital capabilities, and better enable agents to provide holistic advice to meet consumers' evolving expectations.
The life insurance industry is undergoing dramatic changes, from the expectations of its consumer base to the players who compete in the industry. This disruption coincides with the 50-year low in the number of US households holding a life insurance policy.3 While the overall US economy is generally on an upward trajectory, the life and annuities industry continues to trail GDP in growth.4 The industry is failing to adapt effectively to evolving consumer preferences, creating a need to redefine business as usual to be able to overcome the following key challenges.
Have not embraced the customer experience that leading modern online retailers provide.
With declining life insurance sales, the industry has turned to cutting costs.6 But another approach could prove more fruitful: Workflow automation breakthroughs and implementation can enable carriers to scale every customer touchpoint. Further, the financial services industry and their infrastructure security and compliance organizations are increasingly accepting of cloud capabilities, thus driving speed to market for myriad software-as-a-service platforms that would enable engagement with the rewired buyer.
Technological innovations have also reduced barriers to entry and have made the insurance industry more competitive than ever before. Incumbents face competition from external forces, such as from startups, as well as from emerging technological and pricing innovations within the industry.7 Competition for consumer dollars is now not only between carriers but also across industries as consumers evaluate insurance alongside ever-evolving financial priorities.
This changing landscape presents a clear opportunity for industry revitalization. Carriers should embrace digital disruption by developing the digital capabilities to more effectively engage digitally savvy consumers and compete with technologically driven competitors to spur much-needed growth.
Since 2010, Deloitte has been studying life insurance consumers to determine what separates buyers from nonbuyers. This study builds on Deloitte's published works in 20128 and 20159 that analyzed consumer preferences and identified key trigger moments in the path to purchase.
We compiled data from a sample population of US consumers largely in the 25- to 54-year-old age range—the Generation X and Generation Y consumers many carriers are targeting. The population was split almost equally by gender (50.1 percent men and 49.9 percent women) with a median household income of approximately US$52,000. Survey respondents included a distribution between buyers and nonbuyers of life insurance, as well as buyers who retained their policies and those who let them lapse. Figure 1 offers details on the 1,600+ survey respondents.
Marketing deficit. Many carriers continue to fall short at reaching consumers at the right time with the right message. Life events, which we identified in previous studies as triggers to purchase, overwhelmingly continue to be the top drivers for life insurance purchase. Carriers should develop a more targeted approach to marketing and a compelling value proposition that better resonates with modern consumers.
New financial hurdles. Competition for share of wallet continues to become more intense as it evolves to include less traditional products and services; consumer priorities have shifted to include experiences and subscription entertainment services, another reason carriers need to clarify their value.
Advice compression. The amount of time agents are involved in the buying life cycle is compressing and shifting. Most buyers now want to engage with agents later in the process and for a shorter time period, creating a heightened need for high-quality, timely, and comprehensive advice.
Digital gaps. Consumers increasingly prefer to self-manage across the purchasing life cycle, but most carriers have not yet developed digital capabilities to match these preferences. Consumers also observed competition for their attention and dollars between many enterprises.
By addressing these key themes, carriers can improve their ability to create the frictionless omnichannel experience that consumers now expect while better addressing the needs of an increasingly complex consumer base.
Today, carriers' marketing efforts are generally ineffective at encouraging consumers to consider buying life insurance policies. Generating awareness of life insurance products is the first step in engaging prospective buyers, yet survey respondents ranked seeing marketing advertisements and receiving marketing materials among the five least important events in prompting them to consider purchasing life insurance (see figure 3).
Instead, survey respondents indicated that certain life events, such as having children (62 percent), changes to overall financial situation (54 percent), becoming a homeowner (54 percent), interacting with a life insurance agent (54 percent), and marriage (53 percent), continue to be the most important events leading them to consider purchase as they were in the 2015 study.10 This consistently reactive nature of purchase suggests that most providers are doing an insufficient job demonstrating the importance of life insurance to consumers through marketing outreach.
Ineffective marketing efforts also have consequences throughout the consumer path to purchase. We found that when buyers moved past the initial purchase consideration to provider selection, only 7 percent of respondents cited marketing efforts as the way by which they connected with their current provider; in contrast, more than one-half of all buyers cited personal referrals. Interestingly, despite the availability and convenience of digital channels, only 9 percent found their current provider through an online inquiry (see figure 4).
Overall, carriers should invest more in marketing efforts to identify the most effective timing, content, and channel to engage each individual consumer and to inform them of the full value of a life insurance product. Beyond this, carriers should aim to generate a sense of urgency and need for life insurance products, so any purchase is proactive instead of reacting to forces beyond provider control. This will also help prevent consumers from falling back on personal relationships to inform provider selection.
Insurance carriers in the United States have long faced the challenge of competing for consumer wallet share with day-to-day financial priorities (see figure 5). Articulating the value of insurance versus other purchases such as vacations or paying bills has long been a critical focus of carriers, but we are seeing an interesting evolution in the past several years.
The majority of respondents who are either nonbuyers or lapsed buyers cited alternative financial priorities as the primary reason they did not purchase a policy or allowed their existing policy to lapse. Among the responses, we saw many of the same priorities from previous studies,11 such as paying monthly bills (cited by 69 percent of respondents), providing for my family (44 percent), and paying off car payments (28 percent).
At the same time, we see a shift in priorities: The biggest movers speak to consumers taking on more personal debt and a growing number of subscription services. For example, paying credit card debt and student loans marked two of the largest increases (referenced as top financial priorities by 38 percent and 17 percent of respondents, respectively). Payments for entertainment subscriptions represent a new entrant, with a rather substantial response rate (9 percent), outpacing going on vacation and several other "traditional" priorities.
Have agents articulate the value of life insurance against specific competing financial decisions.
Leverage innovative pricing models (such as dynamic pricing, or "pay as you go" payment options) to match emerging competing models.
Develop intelligent financial planning tools so consumers can understand the impact of insurance payments on their budgeting and financial goals.
Our data revealed that there is a gap between consumers' preferences for digital services and carriers' digital capabilities throughout the buying life cycle. Twenty-three percent of buyers surveyed reported that they were willing to purchase life insurance via digital channels, but on average only 11 percent purchased digitally. The difference between these two values speaks to the incongruence between consumer preferences and carrier capabilities. Moreover, just under one-quarter of buyers expressed a willingness to purchase digitally; this does not mean that consumers are ready to dive headfirst into a fully digital experience, but there is a growing appetite for these capabilities. Product complexity continues to drive consumers to an agent for clarity, however, as many view life insurance as a complex product not easily understood without the help of an agent. When put all together, these insights underscore the importance for carriers to invest in creating a streamlined omnichannel experience for consumers across all touchpoints, including both agent and digital (see figure 6).
While product complexity presents a challenge for customers leveraging digital channels, carriers can still focus on digital channel development for simpler transactions. Survey respondents indicated a preference for digital-only engagement over direct agent contact for simple transactional touches such as making annual or monthly payments, and 90 percent of all respondents rated postpurchase account management via Web or mobile channels as very helpful or helpful. A dramatic drop in preference for analog channels, branch, and phone interactions between 2015 and 2018 only further demonstrates the importance of digital is increasing over time.
Overall, the preference for digital channels throughout the path to purchase, from research and evaluation to postpurchase management, was strongest among younger consumers. Differences between expressed attitudes and actual purchasing behaviors were greatest among this cohort, which suggests these digital natives would have preferred to purchase digitally but carriers may have lacked the capabilities to allow them to do so. As these consumers age into the primary purchasing group of life insurance products, carriers should expect an increased reliance upon, and preference for, digital channels.
While life insurance consumers traditionally relied on an agent throughout the buying life cycle, more and more consumers indicated they would prefer to interact with agents and carriers later in the purchasing cycle and for a shorter period of time. Today's consumers prefer self-service capabilities for research and evaluation and digital self-management of existing policies: Forty-one percent of buyers surveyed preferred digital12 platforms during the research stage and 90 percent of buyers indicated a preference for self-management of existing policies through digital channels. Given this preference for self-service, the period of time in which an agent has the ability to influence purchasing decisions has been compressed.
However, there is a silver lining to this advice compression trend. Data indicates that consumers still value high-quality, timely, and comprehensive financial advice at the decision-making stage. Sixty-eight percent of buyers prefer to speak to an agent before purchase compared to 31 percent of nonbuyers. This indicates that as the role of the agent is compressed, high-impact agent advice remains critical to drive purchases. So despite this increasing emphasis on digital distribution channels, agent advice still provides a degree of clarity and fosters confidence in ways that independent research cannot.
Furthermore, the preference for self-directed research and evaluation paired with timely and comprehensive agent advice may also be leading to increasing retention rates. Buyer lapse rates dropped 18 percent from our last survey in 2015.13 The implication here is that as consumers are more diligent in evaluating their needs before they purchase a policy and when an agent supports their choice, that decision can be stickier than ever.
As advice compression continues, how carriers position agents in the buying cycle matters now more than ever. When consumers own the product evaluation and account management of their policy choices, an agent's ability to offer targeted and informed outreach becomes even more important. Carriers should develop tools and services that provide consumers with easy methods to evaluate their services and a direct and efficient connection to agents to finalize purchase decisions. Further, the recent reductions in insurance lapses also reveal the importance of having quality digital interactions and personalized agent interactions at the front end of the buying cycle.
Make digital and self-service channels more readily available and easy to use.
Now more than ever, to be able to meet the needs and preferences of the modern consumer, insurance carriers will need to employ bold and innovative thinking. As carriers adapt their capabilities to how and when consumers want to engage most, a key first step would be to focus on bolstering their digital and analog capabilities. Approaches to consider are outlined in figure 7.
Kevin Sharps is a principal in the Deloitte Consulting Insurance practices. He is based in San Francisco.
Chin Ma is a leader in Deloitte's Customer and Marketing market offering. He is based in New York.
Michele van Rensburg is a leader in Deloitte Consulting's Financial Services practice specializing in organization transformation. She is based in Parsippany, NJ.
Nikias Stefanakis works in Deloitte's Customer and Marketing portfolio offering, specializing in commercial excellence and experience. He is based in New York.
The authors would like to thank Emily Lundberg, Simmone Seymour, and Dustin Musial of Deloitte Consulting LLP for their significant contributions to this publication and Nick Huang, Rahul Sinha, and Manoj B.S. of Deloitte Consulting LLP for their analytical support to this publication.
Embracing digital disruption has been added to your bookmarks.
Embracing digital disruption has been removed from your bookmarks.


JAH CHYLD THINKS "DEM SOFT" in his NEW TRACK >> CHECK IT OUT !
Jah Chyld is a singer/songwriter straight out of Kingston Jamaica. He dumped our GLOBAL LISTENERS upside down with his track "Crying Out." His vocals , lyrics and expression were all dead on perfect. The song goes straight to your heart leaving you feeling moved and singing along to a theme we all can identify with ... "the hopes for a better world." But hey check it out for yourself !


text:
Home / Entertainment / Megan Thee Stallion Just Signed A First Look Deal To Make Content For The Iconic Streaming Platform
Megan Thee Stallion Just Signed A First Look Deal To Make Content For The Iconic Streaming Platform
Megan Thee Stallion just graduated college, but the Houston hottie has already taken on a new gig serving as creator and executive producer on her new Netflix collabo. Not much information has been released so far on the specifics of her deal.
Netflix's Head of Comedy Tracey Pakosta commented on the partnership saying "Megan is a multi-talented creative force who has consistently made her mark on culture. She's always growing and evolving as an artist, and we're thrilled that she's making a home at Netflix for this next chapter in her journey."
Megan also commented on the deal saying: "I've always had a passion for telling creative and entertaining stories, so I'm thrilled about this partnership with Netflix. Venturing into production is the next step in my journey as an entrepreneur and I can't wait to bring all my ideas to life and for my Hotties to watch."
Recently Megan graduated from college and was awarded a Humanitarian award. Megan Thee Stallion has been on a high since celebrating her graduation from Texas Southern University.
The rapper was awarded the 18th Congressional District Humanitarian Award Sunday afternoon in Houston.
Additionally, recently a new update in her trial against Tory Lanez shows he allegedly said "Dance Bitch Dance" before shooting at her feet.
The altercation that happened in 2020 in Hollywood Hills where Tory Lanez allegedly shot Megan Thee Stallion in her feet is finally unfolding in court. An LAPD officer has testified in court that Tory Lanez shouted "Dance bitch, dance!" while firing gunshots at the ground near Megan Thee Stallion's feet.
Related ItemsHouston hottieMegan Thee Stallion
Megan Thee Stallion Has Canceled Her Performance At Iheartradio's Power 96.1 Jingle Ball After Possible Exposure To COVID-19
Megan Thee Stallion Is Blasting Reports Claiming She Was In A Catfight After A Judge Upheld The Assault Charges Against Tory Lanez
Tory Lanez Has Seen All Of The Reports About Telling Megan Thee Stallion "Dance, Bitch" While Shooting At Her Feet


Sunny spell at The Quiraing from my last trip to Skye. Loved the way the light hit the rocks at that moment. Such a magical place no matter the weather! 🏴 Shares / Reposts welcome 🙏🏻- kris 🏴 What's everyone's plans for this Easter Weekend?
Went for a photo of Kilchurn Castle but couldn't take my eyes off these moody mountain tones!


text:
MoboReader> Sci-fi > High Steaks
High Steaks By Christina Engela Characters: 4989
Referring to their Remotes, Gary and Mei worked as a team to judge what needed to be done to avoid the patrols, and Gary would slow the vehicle or speed it up, or even stop for a moment. In this sense, timing really would mean everything in order to safely slip past their enemies and get out of the city!
"Probably just as well this thing doesn't have windows at the back!" He grinned at Mei.
"I'll say!" Mei grinned back. Doubtless, Peg – sitting at the back of the bus – was trying to work out how they were managing this! If the passengers saw how close their narrow-misses of fascist patrols were in the past few minutes, it might have caused a panic!
Timaset Skooch and Dory had come to a standstill in an alley just off the big broad road around the space port – which had seemed clear enough at the time – before the Jeepo-full of troopers came around a corner unexpectedly behind them, and caught them in their headlights! The electric vehicle came to a halt almost silently behind them, and the driver and three troopers that had been riding on the back jumped off, weapons at the ready!
"Hold it!" "Freeze!" "Halt!" "Don't make a move!" The four ordered all at once, waving dangerous-looking sonic-pulse rifles all over the place, and rushing at them. The closest guy – a fresh-faced kid in a dark gray urban-camouflage uniform, leered at him from under his black helmet – coming quite close to Tim, who was looking every which way for an out!
"Oh, fuck it!" Tim
Jean Wen sacrificed herself for family interests. Before her husband divorced her, she made every effort to please him.
"You are inexperienced in bed," he said coldly.
"You! Give that land to my family, or I won't agree to divorce," Jean replied furiously.
"Fine. It is exactly what I am thinking about," he sneered.
would bring more patrols to investigate! If they were still going to make a break for it, the time was now! But what would he do with these two?
"Better get running!" Tim ordered the two troopers. "Move! Before I change my mind!"
Without a word, the two young troopers turned and fled down the alley back to the main road, their boots pounding a disjointed rhythm, while Tim dumped the rifle onto the front seats. He looked over at Dory, who was still frozen to the spot, looking at him.
"Dory!" He called. She looked at him, ashen-faced and frightened. "We have to go, sweetheart!"
Pausing to eject and pocket the power packs from two of the fallen weapons, he rushed over to her, and gripped her gently by the shoulders.
"The noise will have tipped them off! More will come!" He said as calmly as he could, as her eyes locked onto his. "We've got to go now!"
She nodded, and went with him silently to the vehicle, clambering into the passenger seat while he took the wheel.
Similar Sci-fi Ebooks to High Steaks
The Galaxii Series Omnibus 1
Loderunner
Demonspawn
Dead Man's Hammer
Black Sunrise
How to: Survive an Alien Invasion


text:
Hamilton is een Amerikaanse musical die bedacht en geschreven werd door Lin-Manuel Miranda. De voorstelling is gebaseerd op de biografie Alexander Hamilton (2004) van auteur Ron Chernow. De musical vertelt het levensverhaal van de Amerikaanse politicus Alexander Hamilton aan de hand van rapmuziek. In 2016 werd de musical bekroond met een Pulitzerprijs, in 2018 met Kennedy Center Honors.

Achtergrond

Lin-Manuel Miranda las tijdens een vakantieperiode een biografie over het leven van Amerikaans politicus Alexander Hamilton en onderzocht vervolgens of er al ooit een musical over Hamilton was gemaakt. In 1917 werd de Broadway-musical Hamilton opgevoerd met de Engelse acteur George Arliss in de hoofdrol. Na die ontdekking begon Miranda onder de titel The Hamilton Mixtape met het schrijven van rapnummers voor de musical. Het openingsnummer van de musical rapte hij op 12 mei 2009 tijdens de "Avond van poëzie, muziek en het gesproken woord" in het Witte Huis. In het daaropvolgende jaar werkte hij aan het nummer "My Shot".

In februari 2015 ging de musical off-Broadway in première. De show was meteen uitverkocht. Op 6 augustus 2015 volgde de Broadway-première in het Richard Rodgers Theatre.

De off-broadway-voorstelling won in 2015 zeven Drama Desk Awards.

Verhaal

Eerste Akte
Alexander Hamilton groeit als weeskind op op de Caraïben. Op zijn zeventiende wordt zijn dorp vernietigd door een orkaan. Hij schrijft een essay over de orkaan. Zijn dorp is onder de indruk. Ze besluiten geld in te zamelen zodat Hamilton in Amerika kan studeren.

In 1776 zoekt Hamilton contact op met Aaron Burr om te weten te komen hoe die erin geslaagd is om in twee jaar af te studeren. Burr is onder de indruk van Hamiltons passie en neiging om veel te praten, maar raadt hem aan om minder te spreken en meer te glimlachen. Hamilton sluit zich vervolgens aan bij drie revolutionairen: de abolitionist John Laurens, de flamboyante Marquis de La Fayette en Hercules Mulligan, de leerjongen van de kleermaker. Ondertussen wandelen de rijke Schuyler-zussen Angelica, Eliza en Peggy door de straten van New York. De oudste zus, Angelica, is op zoek naar iemand die haar intellectueel kan bekampen.

Een Britse loyalist preekt tegen de revolutie, maar Hamilton lacht zijn verklaringen weg. Dan arriveert er een boodschap van koning George III, die de kolonisten duidelijk maakt dat hij bereid is om te vechten voor hun liefde.

De revolutie komt eraan en Hamilton en Burr sluiten zich met hun vrienden aan bij het Continentaal Leger. Terwijl het leger zich terugtrekt van New York beseft generaal George Washington dat hij zonder hulp de oorlog niet kan winnen. Burr biedt zich aan, maar Washington is meer geïnteresseerd in Hamilton als zijn rechterhand. Hoewel deze aan de frontlinie wil vechten, besluit hij de unieke kans niet te laten liggen.

In 1780 gaan de heren naar het winterbal van Philip Schuyler, waarna Hamilton zijn aandacht op diens dochters richt. Eliza valt meteen voor de charmes van Hamilton en de twee trouwen niet veel later. Angelica voelt zich ook aangetrokken tot Hamilton, maar verbergt haar gevoelens om haar zus niet te kwetsen. Ondertussen onthult Burr dat hij een liefdesaffaire heeft met de echtgenote van een Britse officier. Hamilton spoort hem aan om tot actie over te gaan, maar Burr stelt voor om te wachten en uit te kijken naar wat het leven voor hem nog in petto heeft.

Hamilton vraagt Washington meermaals om hem de leiding te geven, maar het is uiteindelijk Charles Lee die gepromoveerd wordt. Een beslissing die slecht uitdraait tijdens de slag bij Monmouth, waar Lee een bevel van Washington negeert. Washington vervangt hem vervolgens door Lafayette, waarna Lee roddels over Washington begint te verspreiden, tot grote ergernis van Hamilton. Laurens daagt Lee vervolgens uit voor een duel. Lee raakt gewond, waardoor Laurens het duel wint. Washington is razend en stuurt Hamilton naar huis, waar hij te horen krijgt dat Eliza zwanger is.

Lafayette krijgt een belangrijkere rol tijdens de oorlog en overtuigt Frankrijk om mee te strijden met de Amerikanen. Met de steun van de Fransen maakt het Continentaal Leger snel progressie. Washington en Lafayette beseffen dat ze de oorlog kunnen winnen als ze de Britse marine bij Yorktown kunnen afscheiden, maar dan moeten ze wel de hulp inroepen van Hamilton. Aarzelend geeft Washington hem de promotie waar hij al lang op zat te wachten. Na een gevecht van enkele dagen wint het Continentaal Leger de strijd. De Britten geven zich over en koning George III vraagt zich af hoe ze hun land nu zullen regeren.

Kort na de revolutie wordt Hamiltons zoon Phillip geboren en krijgt Burr een dochter genaamd Theodosia. De twee mannen beelden zich in hoe ze een natie kunnen bouwen voor hun kinderen. Het vredig moment wordt onderbroken door het nieuws dat Laurens na het beëindigen van de oorlog is gestorven in een ruzie met enkele Britse soldaten.

Hamilton en Burr keren beide terug naar New York om hun studies af te maken en een carrière als advocaat na te streven. Burr is onder de indruk van Hamiltons werklust en raakt geïrriteerd door diens succes. Hamilton mag nadien als vertegenwoordiger deelnemen aan de Constitutional Convention en vraagt Burr om een reeks artikels te publiceren tot steun van de Amerikaanse Grondwet, maar die weigert dat. Hamilton neemt vervolgens James Madison en John Jay in dienst om de Federalist Papers te schrijven zonder Burr.

Angelica verhuist naar Engeland, terwijl Eliza zich afvraagt waarom ze zo weinig betrokken wordt in Hamiltons leven. De pas verkozen president Washington benoemt Hamilton tot minister van Financiën. Ondanks Eliza's protest aanvaardt hij de functie.

Tweede Akte
In 1789 keert Thomas Jefferson van Frankrijk terug naar de Verenigde Staten. Washington vraagt hem om Secretary of State te worden en James Madison roept zijn hulp in om Hamiltons financiële plan tegen te houden. Madison is ervan overtuigd dat Hamilton te veel macht aan de regering wil geven. Jefferson en Hamilton debatteren tijdens een kabinetsvergadering. Wanneer de spanning oploopt, wordt Hamilton door Washington apart genomen. De president vraagt hem om een compromis te zoeken dat het Amerikaans Congres kan overtuigen.

Hamilton weigert om met Eliza naar het huis van haar vader te reizen omdat hij tijd nodig heeft om zijn financieel plan uit te werken. Vanuit Engeland raadt Angelica hem aan om Jefferson te overtuigen met zijn plan, zodat het Congres het plan zal goedkeuren. Nadien reist ze naar de Verenigde Staten om Eliza te vergezellen tijdens haar reis en vakantie, maar ze is teleurgesteld omdat Hamilton afwezig is.

Wanneer hij alleen is, krijgt Hamilton bezoek van Maria Reynolds, die beweert dat haar man haar mishandelt. Wanneer hij voorstelt om haar te helpen, verleidt ze hem en beginnen ze een liefdesaffaire. Nadien wordt hij door haar echtgenoot James Reynolds gechanteerd. Hamilton is woedend op Maria, maar betaalt Reynolds en besluit de relatie met haar verder te zetten.

Hamilton past Burrs advies om "minder te praten en meer te glimlachen" toe om zijn plan goedgekeurd te krijgen. Hamilton heeft een gesprek met Jefferson en Madison en komt tot een compromis. Het plan wordt gesteund en in ruil verhuist de hoofdstad van New York naar Virginia. Burr is jaloers op de politieke macht van Hamilton.

Burr verslaat Eliza's vader Philip Schuyler in de strijd om een plekje in de Senaat. Hamilton beschuldigt Burr ervan te zijn overgelopen naar Jeffersons partij, enkel om de strijd tegen Hamiltons schoonvader te kunnen aangaan. Burr stelt echter dat hij een kans zag en greep. Hamilton gelooft hem niet en er ontstaat tweespalt.

Tijdens een andere kabinetsvergadering vragen Jefferson en Hamilton zich af of de Amerikanen de Fransen moeten steunen tijdens hun revolutie. Washington sluit zich uiteindelijk aan bij Hamiltons mening dat Amerika best neutraal kan blijven. Burr, Jefferson en Madison klagen na de vergadering dat Hamilton altijd de steun krijgt van Washington en bedenken een plan om zijn imago te besmeuren.

Washington kondigt aan dat hij zich niet meer verkiesbaar zal stellen en dat Jefferson president wil worden. In Engeland verneemt koning George III dat Washington zal aftreden en dat John Adams de nieuwe president wordt. De koning bereidt zich al voor op de val van Amerika onder Adams leiderschap.

Adams en Hamilton hebben een stevige woordenwisseling die leidt tot het einde van de Federalistische Partij. Ondertussen wordt Hamilton door Jefferson, Madison en Burr beschuldigd van verduistering en verraad. In werkelijkheid hebben ze zijn affaire met Maria Reynolds ontdekt. Hamilton vreest dat de waarheid aan het licht zal komen en smeekt hen om de affaire te verzwijgen. Desondanks schrijft hij de Reynolds-pamfletten, waarin hij de affaire openlijk toegeeft. Zijn persoonlijke reputatie is door de bekentenis naar de vaantjes. Uit moedeloosheid verbrandt Eliza haar correspondentie met Hamilton, waardoor toekomstige historici nooit te weten zullen komen hoe ze op de bekentenis gereageerd heeft.

Zijn zoon Phillip is inmiddels negentien jaar oud en wordt geprezen om zijn intelligentie, charmes en knap uiterlijk. Hij daagt een man genaamd George Eacker uit voor een duel omdat die Hamilton heeft beledigd. Hamilton raadt zijn zoon aan om in de lucht te schieten. Als Eaker een eerbare man is, zal hij het voorbeeld volgen. Eaker telt echter tot zeven en schiet Phillip neer. Hij wordt naar een dokter gebracht en sterft.

De Amerikaanse presidentsverkiezingen van 1800 zijn een spannende strijd tussen Jefferson en Burr. Die laatste wil de steun van Hamilton en zegt dat hij er alles aan doet om president te worden. Hamilton is opnieuw kwaad dat Burr voor persoonlijk gewin van politieke overtuiging is veranderd en besluit Jefferson te steunen. Jefferson wint de verkiezingen. Burr is razend en daagt Hamilton uit voor een gevecht. Op de ochtend van het duel vraagt Eliza aan Hamilton om nog wat langer in bed te blijven liggen. Hij vertrekt zonder te zeggen waarheen.

Burr en Hamilton reizen naar New Jersey voor het duel. Burr merkt dat Hamilton zijn bril draagt en concludeert dat Hamilton van plan is om hem dodelijk te raken. Hamilton richt zijn wapen naar de lucht, maar wordt zelf dodelijk geraakt.

Washington legt uit dat niemand kan bepalen "wie leeft, wie sterft of wie je verhaal vertelt". Eliza legt uit dat ze gedurende vijftig jaar alles geprobeerd heeft om de reputatie van haar man te beschermen, maar vreest dat het nog niet genoeg was. Nu ze zelf gestorven is, vraagt ze zich af wie hun verhaal zal vertellen.

Rolverdeling

Musicalnummers

Eerste bedrijf
 "Alexander Hamilton" – Volledige gezelschap (behalve koning George III)
 "Aaron Burr, Sir" – Hamilton, Burr, Laurens, Lafayette, Mulligan
 "My Shot" – Hamilton, Burr, Laurens, Lafayette, Mulligan
 "The Story of Tonight" – Hamilton, Laurens, Lafayette, Mulligan
 "The Schuyler Sisters" – Angelica, Eliza, Peggy, Burr
 "Farmer Refuted" – Samuel Seabury, Hamilton , Burr, Mulligan
 "You'll Be Back" – koning George III
 "Right Hand Man" – Washington, Hamilton, Burr
 "A Winter's Ball" – Burr, Hamilton
 "Helpless" – Eliza, Hamilton
 "Satisfied" – Angelica, Hamilton
 "The Story of Tonight" (Reprise) – Hamilton, Burr, Laurens, Lafayette, Mulligan
 "Wait For It" – Burr
 "Stay Alive" – Hamilton, Washington, Charles Lee, Laurens
 "Ten Duel Commandments" – Laurens, Hamilton, Lee, Burr
 "Meet Me Inside" – Washington, Hamilton
 "That Would Be Enough" – Eliza, Hamilton
 "Guns and Ships" – Burr, Lafayette, Washington
 "History Has Its Eyes on You" – Washington
 "Yorktown (The World Turned Upside Down)" – Hamilton, Lafayette, Laurens, Mulligan
 "What Comes Next?" – koning George III
 "Dear Theodosia" – Burr, Hamilton
 "Non-Stop" – Burr, Hamilton, Washington, Eliza, Angelica

Tweede bedrijf
 "What'd I Miss" – Burr, Jefferson, Madison
 "Cabinet Battle #1" – Washington, Jefferson, Hamilton, Madison
 "Take a Break" – Eliza, Phillip, Hamilton, Angelica
 "Say No to This" – Burr, Hamilton, Maria, James Reynolds
 "The Room Where It Happens" – Burr, Hamilton, Jefferson, Madison
 "Schuyler Defeated" – Phillip, Eliza, Hamilton, Burr
 "Cabinet Battle #2" – Washington, Jefferson, Hamilton, Madison
 "Washington on Your Side" – Burr, Jefferson, Madison
 "One Last Time" – Washington, Hamilton
 "I Know Him" – koning George III
 "The Adams Administration" – Burr, Hamilton, Jefferson, Madison
 "We Know" – Burr, Hamilton, Jefferson, Madison
 "Hurricane" – Hamilton
 "The Reynolds Pamphlet" – Volledige gezelschap
 "Burn" – Eliza
 "Blow Us All Away" – Phillip, George Eacker, Hamilton
 "Stay Alive" (Reprise) – Phillip, Hamilton, Eliza, dokter
 "It's Quiet Uptown" – Angelica, Hamilton, Eliza
 "The Election of 1800" – Jefferson, Madison, Burr, Hamilton
 "Your Obedient Servant" – Burr, Hamilton
 "Best of Wives and Best of Women" – Eliza, Hamilton
 "The World Was Wide Enough" – Burr, Hamilton
 "Who Lives, Who Dies, Who Tells Your Story" – Eliza, volledige gezelschap

Opname en hitnoteringen
Een opname van de musicalnummers, gezongen door de oorspronkelijke Broadway-cast, werd op 21 september 2015 uitgezonden op National Public Radio (NPR). Op 25 september 2015 werden de nummers door Atlantic Records digitaal beschikbaar gemaakt en op 16 oktober 2015 werd het album ook op cd uitgebracht.

Het album werd door het tijdschrift Billboard op de tweede plaats gezet in de top 25 met beste albums van 2015. Het magazine Rolling Stone plaatste het album op de achtste plek in zijn overzicht van de 50 beste albums van 2015. Daarnaast bereikte het album ook de eerste plaats in Billboards hitparade voor rapalbums.

In februari 2016 won het cast-album de Grammy Award voor beste musical-opname. Twee maanden later werd de musical ook bekroond met de Pulitzerprijs in de categorie literatuur (drama).

Externe link
 Hamilton in de Internet Broadway database

Musical

redpajama_set_name: RedPajamaWikipedia


text:
GS-II : International Relations
Return of the socialists: On the victory of Evo Morales's party in Bolivia
MAJOR WORLD ISSUES
Preliminary results of Sunday's Presidential election in Bolivia point to an emphatic victory for the former President Evo Morales's Movement Toward Socialism (MAS) party almost a year after he was ousted by protesters and the military.
This is as much a victory for Mr. Morales, Bolivia's first indigenous leader, as it is for Mr. Arce.
Mr. Morales left the country, first for Mexico and then for Argentina, after the Generals asked him to stand down in November 2019.
Since then, Jeanine Añez, a right-wing conservative Senator, has been the acting President, rolling back many of Mr. Morales's policies and going after his supporters.
But MAS mobilised its supporters and fought back.
Mr. Arce promised voters that if elected, he would carry forward the pro-poor socialist legacy of Mr. Morales, while MAS portrayed Mr. Mesa as a representative of the pre-Morales elites, whose rapid privatisation and pro-market policies had triggered frequent mass protests.
Achievements of socialist regime in Bolivia:
The results demonstrate that the voters chose the equity-oriented socialist stability, which MAS offered, over the free-market conservatism of its rivals.
Mr. Morales is credited with turning around South America's poorest country economically.
Under his government, Bolivia saw a drop in extreme poverty, from 33% of the population in 2006 to 15% in 2018.
He also stepped up public investments, opened more schools and health clinics, built roads and nationalised the oil and gas industry, all while ensuring that the economy continued to expand.
These policies helped MAS build a strong connect with the poor, a base which continued to back the party despite last year's political turbulence.
Morales actions that led to coup like situation in 2019:
At the same time, Morales push to stay in power beyond the term limits set by the Constitution helped the Opposition organise itself.
He got the ban lifted by a constitutional court after his bid failed in a referendum.
This raised questions about the legitimacy of his candidacy in the October 2019 election, which he won but was accused of fraud, leading to protests and his ouster.
Mr. Arce's biggest challenge would be to continue Mr. Morales's welfare policies, while keeping the battered economy on track.
Moreover, the anti-Socialist and mostly white opposition is now more powerful, after ousting Mr. Morales and having run the interim government for a year with the U.S.'s support.
Mr. Arce can keep the galvanised opposition at bay only by continuing MAS's socio-economic "revolution" to expand its support base in a divided country.
Potholes on the digital payment superhighway


text:
B.C. threatens to sue Alberta as all sides in Trans Mountain dispute dig in
Dirk Meissner
VICTORIA — All sides in the escalating dispute over the Trans Mountain expansion project appear to be digging in with the Alberta and British Columbia governments clashing over fuel prices and Indigenous and political leaders warning of civil unrest
Tensions escalated Monday with B.C. Attorney General David Eby threatening to sue Alberta over legislation it introduced to restrict the flow of oil, gasoline and natural gas leaving that province, which could boost fuel prices in B.C.
"The immediate recourse that's available to us is to potentially sue the Alberta government for an unconstitutional piece of legislation," he said.
Eby said he can't predict gasoline prices — now at about $1.50 per litre in Metro Vancouver — but "what I can say is any concern British Columbians have that a bill that preferentially punishes B.C. from the Alberta perspective and tries to drive up gas prices would be unconstitutional and we would take action immediately to address that."
Alberta Premier Rachel Notley said the legislation sends the message that Alberta is prepared to defend its resources.
It would direct pipeline companies, truckers and rail operators on how much oil product they ship and when. Violators would face fines of up to $1 million a day for individuals and $10 million a day for corporations.
The legislation is the latest manoeuvre in the ongoing dispute over the pipeline project that has the federal and Alberta governments supporting the pipeline expansion project, while B.C. opposes it, saying it is defending its coast from a potentially catastrophic spill.
The federal government approved the 1,700-kilometre pipeline expansion project starting near Edmonton and ending in Burnaby, B.C., in November 2016, saying the pipeline is in the national interest. Alberta said the $7.4-billion pipeline to the West Coast gives the province access to overseas markets.
But the B.C. government says the expansion and seven-fold increase in oil tanker traffic in coastal waters poses environmental and economic risks that are too great. The province is preparing to ask the courts to determine who has jurisdiction over the pipeline in the province.
Kinder Morgan announced earlier this month it is pulling back on spending for the project and gave Prime Minister Justin Trudeau's government until May 31 to give a clear signal the project will proceed.
Trudeau, Notley and B.C. Premier John Horgan met Sunday in Ottawa to discuss the pipeline, but emerged from the meeting deadlocked. Trudeau repeated the federal government's commitment to ensuring the project's completion and announced his government was preparing to hold private, financial talks with Kinder Morgan.
Indigenous leaders, who were not invited to the meeting in Ottawa, joined together with representatives of the cities of Vancouver and Burnaby on Monday to redouble their opposition to the pipeline.
Stewart Phillip, the grand chief of the Union of B.C. Indian Chiefs, said opposition is broad-based and entrenched.
"It's a stinker of an idea. It's a stinker of a proposal and it will be defeated," he said.
Phillip said resistance to Trans Mountain isn't just from Indigenous Peoples, but people of all backgrounds from across Canada.
So far, about 200 people have been arrested at protests near the pipeline terminal site in Burnaby.
Burnaby Mayor Derek Corrigan said he expected civil disobedience against the pipeline to continue to grow.
He said he's embarrassed Canada's prime minister and the Alberta premier are kowtowing to an American multinational oil company.
"I think if people totally lose faith in our democratic system, if they believe that the federal government has been able to impose its will, that they've ignored the court proceedings, then I think we're looking for chaos," said Corrigan. "And that's what worries me."
B.C.'s prosecution service announced Monday it would consider criminal contempt of court charges against protesters alleged to have broken a court injunction while demonstrating near the pipeline construction site.
The service also said it had appointed a special prosecutor in the cases of Green party Leader Elizabeth May and New Democrat MP Kennedy Stewart, both arrested at the site.
— With files from Gemma Karstens-Smith.


iPRO-TECT 24/7 by AIM World is Wearable technology that Emits invisible fumes creating 1 to 2 meters "Force Field" against bacteria and viruses.
A breakthrough product made in the US and formulated in Japan. This biotechnology device is an antiviral, antibacterial self protection that kills harmful microbes within one to two meters. Protection lasts for 60 days.
against MERS, SARS, Ebola, and other Coronaviruses.
When worn, it creates a green zone by emitting invisible fumes within 1-2 meter range. Bacteria and Viruses quickly disintegrate when it come in the contact with the fumes. This protection last for 60 days.
A U.S. study says 1.5 Billion People each day wake up with a certain kind of Body Pain.
iPRO-TECT HOME by AIM World is a revolutionary product that safe guards your home from viruses and bacteria.
to kill harmful viruses and bacteria indoors.
Place it in your child's playroom, in your office desk, in your car or inside the refrigerator - protection starts immediately..
A real value for money, get a combination package of the new AIM World products. 3 sachets of IPROTECT 24/7 that comes with a Necklace, 1 SACHET IPROTECT HOME and 6 packS of CARELEAF with 20 patches.


A living room is one of the most frequented rooms in a modern household. As well as being the place we retire to in the evenings to snuggle up and relax, it's also a space in which many entertain guests. With this in mind, it's not uncommon to covet a luxurious living room that packs a punch.
So, whether you're looking to implement a few subtle changes or completely redesign the room from scratch, we've listed just a few ways in which you can attain a living room that boasts that wow factor.
For those who are looking to revamp an entire living room, why not start by choosing a theme to help you decorate the space? A floral theme will allow you to be experimental with colours whilst the botanicals trend is likely to birth a living room with zany green wallpaper and an abundance of budding plants and trees. When it comes to building a living room that makes a statement, it definitely pays to be bold.
Not only is lighting a great way to highlight certain features in a room, but a dramatic light fixture can also be a feature in itself. So, whether you're looking to purchase a ceiling chandelier that oozes grandeur, or a contemporary free standing lamp to add a touch of modern style, don't be afraid to be adventurous.
A big comfy corner sofa is bound to be the focal point of any living room. As well as being extremely comfortable, corner sofas make the best use of all available space and as a result, all your guests will have a comfortable seat to relax on. For a sofa that exudes style and sophistication, why not opt for a deep blue or rich green colour? You could also decorate your sofa with brightly coloured cushions to give it a bit of oomph.
This is arguably the ultimate living room installation. A wall of books is extremely impressive to look at and is also a great way to inject some colour into your new living space. This feature lends itself to both traditional and contemporary style living rooms, so what are you waiting for? Get some shelving installed and while away the winter evenings reading your favourite literary works in your luxurious new living room.
Here at Grays Fitted Furniture, we specialise in the design and installation of kitchens and bedrooms as well as living rooms and studies. To find out more about our bespoke services, contact us and begin your living renovation with Grays Fitted Furniture.


Education: In 2009 he earned a master's degree in Theology at St. Kliment Ohridski Sofia University and in 2012 a master's degree in Digital Arts at the National Academy of Art, Sofia.
Awarded the 2018 Baza/Young Visual Artist Award for emerging visual artists in Bulgaria, Martin Penev's practice encompasses performance, contemporary dance, sound, installation, interactive design and soft sculpture. His research focuses on the relationship between materials and objects. Penev's narratives are often loaded with humor and uncanny imagination. Through the contradiction between absurdity and seriousness in his oeuvre the artist intentionally creates an atmosphere of alienation bringing the audience out of their comfort zone. From 2012 to 2015 Martin Penev was a member of the Contemporary Performance Arts Guild at the Bulgarian Actors Union.
Since 2010 he has been participating in group and individual projects in a number of festivals and events in Bulgaria and abroad. Selected solo exhibitions include: Sofia, Bulgaria Unforeseen ICA, Sofia; 2018 Wonderful Urban Story, The Fridge, Sofia; 2018, An Object of Concern, Swimming Pool, Sofia, curated by Viktoria Draganova; 2018 Ritual, Atelie Plastelin, Sofia, 2017 Appetite, Aether, Sofia; 2017 Exploiting the Erased Image at Vaska Emanouilova Gallery, Sofia, 2016.
Selected projects and group exhibitions include: Unicorn, an action performed at Bridges. Uprising Art & Culture Festival, Thessaloniki (2018); Art Start: Young Artists to Follow in 2018, Credo Bonum gallery,Goethe-Institut Bulgaria, Sofia 2018 curated by Vessela Nozharova, Daniela Radeva and Stefka Tsaneva Shifting Layers. Young Art at the Museum, Sofia City Art Gallery, 2017 curated by Vladiya Mihaylova, CloseEncounters - ICA, Sofia, 2017 curated by Iara Boubnova, Luchezar Boyadjiev, Krassimir Terziev.
Support: Martin Penev's residency is made possible with support from the Trust for Mutual Understanding.


text:
Q: Fill in trailing variables based on row position using rollmean I'm wondering if there is a way to adjust how the rollmean function from the zoo package handles trailing variables (or possibly another cumulative-type rolling mean function). Say that I have the following data.frame:
df <- as.data.frame(as.matrix(sample(1:10), ncol = 3))
df$roll <- rollmean(df$V1, 5, fill = NA, align = "right")
df

   V1  roll
1   2   NA
2   7   NA
3   6   NA
4   1   NA
5   9  5.0
6   5  5.6
7  10  6.2
8   3  5.6
9   4  6.2
10  8  6.0

I know that I can use something like fill = "extend" with rollmean to get the average of all trailing variables, but is there a way to adjust this extend approach so that each trailing variable is cumulative based on the row position? So what I want is something like the below df, where row 4 of df$roll has a 4-row rolling window, row 3 has a 3-row rolling window, and so on.
   V1  roll
1   2   NA
2   7  4.5
3   6  5.0
4   1  4.0
5   9  5.0
6   5  5.6
7  10  6.2
8   3  5.6
9   4  6.2
10  8  6.0

Any ideas?

A: rollapply (and rollapplyr which defaults to right alignment) support the partial = TRUE argument.  See ?rollapply
transform(df, roll = rollapplyr(V2, 5, mean, partial = TRUE))

giving:
   V1 V2 roll
1   1  2  2.0
2   2  7  4.5
3   3  6  5.0
4   4  1  4.0
5   5  9  5.0
6   6  5  5.6
7   7 10  6.2
8   8  3  5.6
9   9  4  6.2
10 10  8  6.0

Note: To make the code for producing the input reproducible one would have to use set.seed(...).  Since that is not done we used this:
df <- structure(list(V1 = 1:10, V2 = c(2L, 7L, 6L, 1L, 9L, 5L, 10L,
3L, 4L, 8L)), .Names = c("V1", "V2"), row.names = c(NA, -10L), class = "data.frame")

redpajama_set_name: RedPajamaStackExchange


text:
Travis Scott to Perform at Hot97 Holiday Concert
Winter is coming and Hot 97 is getting us ready by announcing the lineup for their annual Hot for the Holidays concert that is set to include performances from Travis Scott (who will also be performing at ComplexCon), Young Thug, Joey Badass, Jidenna, and Kehlani. That's not even all that you have to look forward to because Hot 97 will be announcing more artists down the line.
Last year's show boasted an equally impressive lineup featuring the likes of Mary J. Blige, Puff Daddy, Lil Wayne, Fetty Wap, French Montana, Sean Paul, Jeremih, and Rick Ross, which definitely clues the fans into the level of talent they can expect to see all in one night.
Subscribe to our New Complex Channel: https://goo.gl/43ac5w
Subscribe to Complex for More: http://goo.gl/PJeLOl
Check out more of Complex here:
http://www.complex.com
https://twitter.com/ComplexMag
https://www.facebook.com/complex
https://www.instagram.com/complex/
https://plus.google.com/+complex/
COMPLEX is a community of creators and curators, armed with the Internet, committed to surfacing and sharing the voices and conversations that define our new America. Our videos exemplify convergence culture, exploring topics that include music, sneakers, style, sports and pop culture through original shows and Complex News segments. Featuring your favorite celebrities, authoritative commentary, and a unique voice, our videos make culture pop.
Travis Scott Gets Sued By Fan Who Fell During His Concert
Travis Scott On Fall During Drake Concert: 'I Was Floating, I Don't Fall'
Kylie Jenner Threw Travis Scott a Travis Scott-Themed Birthday Party!
by admin 8 months ago 36 Views
Travis Scott 's Epic Fall During Drake and Young Thug Concert
Travis Scott & James Blake Perform 'Stargazing' / 'Stop Trying To Be God' / 'Sicko Mode' | 2018 VMAs
Video Shows Travis Scott Fan Getting Choked by Security at Concert
Maroon 5, Big Boi, and Travis Scott to Perform Super Bowl Halftime Show LIII | Fast Facts
by admin 12 months ago 22 Views
Kid Cudi, Travis Scott, Skrillex Perform Night 1 of ComplexCon
Thirty Seconds to Mars ft. Travis Scott Perform 'Walk On Water' | 2017 VMAs | MTV
Travis Scott SUED For Cancelling Concert Days After Kylie Gave Birth
Winter is coming and Hot 97 is getting us ready by announcing the lineup for their annual Hot for the Holidays concert that is set to include performa...


Ramallah: Palestinians in the occupied West Bank city of Jenin say that Jewish colonists have released wild hyenas into the eastern part of the town.
Residents managed to drive them out with knives and stones and were able to kill two before the dangerous animals could kill or injur anyone, according to anonymous sources.
Jewish colonists frequently release wild pigs to ravage Palestinian crops and farms.