text:
\section{Introduction}

The Hawkes point process was first introduced in \cite{Hawkes1} as a model of chain-reaction-like phenomena, in which the occurrence of an event increases the
likelihood of more such events happening in the future. This intrinsic ``self-exciting'' property has made Hawkes processes appealing to a wide variety of researchers dealing
with data exhibiting strong temporal clustering. Although it was originally used to model the dynamics of aftershocks that accompany strong earthquakes \cite{Ogata1988,Vere-Jones1970}, it has since found
application to many other problems, including accretion disc formation \cite{Pechacek2008}, gene interactions \cite{Reynaud-Bouret2010}, social dynamics \cite{Mitchell2010}, insurance risk
\cite{Karabash2012,Zhu2013}, corporate default clustering \cite{Azizpour2008,AffinePointProcess}, market impact \cite{Bacry2014}, high-frequency financial data
\cite{Bauwens2009}, micro-structure noise \cite{Bacry2011}, crime \cite{Mohler2011}, generic properties of high-dimensional inverse problems in statistical mechanics \cite{AstronomyMastromatteo},
and dynamics of neural networks \cite{Pernice2011, PreOnaga}.  There is also recent theoretical work exploring generic mathematical properties of the process in its own respect
\cite{PreSaichev1, PreSaichev2, PreBouchaud}.

As the areas of application of Hawkes models continue to grow, it becomes increasingly important to understand the probabilistic behavior of the process.  Unfortunately,
despite its ubiquity, the mathematical properties of the Hawkes process are still not fully known. In fact, the same dynamical characteristics that make it such a useful model
in practice are the ones that complicate formal analysis. Hawkes processes do not (except in some special cases, see \cite{DynamicContagion}) possess the Markov property,
making it impossible to study them using standard techniques.

Recently, quite a few methods have been devised to circumvent this problem; there are now many well known results describing Hawkes process stability
\cite{Stability}, long-term behavior \cite{Karabash2012,Zhu2012} and large deviation properties \cite{Zhu2011}. Yet, since the early works of Hawkes himself on the covariance density and
Bartlett spectrum \cite{Bartlett} of self-exciting processes \cite{Hawkes1,Hawkes2}, few have tried to further elucidate their statistical properties. In his work, Adamopoulos \cite{PGF},
for example, attempts to derive the probability generating functional of the Hawkes process, but manages only to represent it implicitly, as a solution of an intractable functional equation.
Errais et al. \cite{AffinePointProcess}, using the elegant theory of affine jump processes, show that the moments of Hawkes processes can be computed by solving a system of non-linear
ODEs. Once again, however, explicit formulas turn out to be unobtainable by analytic means. Lastly, Saichev and Sornette \cite{Saichev2011,Saichev2011a}, using the alternative Poisson cluster
representation of self-exciting processes, show that the moment generating function of the Hawkes process satisfies a transcendental equation which does not admit an explicit solution.

Statistical behavior of, for example, Hawkes process moments and cumulants is of some importance in neuroscience, where the problem of quantifying levels of
synchronization of action potentials has become very pertinent. It has been shown that nerve cells can be extremely sensitive to synchronous input from large groups
of neurons \cite{Rossant2011}. More precisely, a neuron's firing rate profile depends, to a large degree, on higher order correlations amongst the presynaptic spikes \cite{Kuhn2003}.
Of course, which synchronous patterns are favored by the network is also determined by its connection structure. While the contribution of specific structural motifs to the emergence
of pairwise correlations (i.e., two-spike patterns) has already been dissected \cite{Pernice2011}, no such result exists in the case of more complex patterns,
stemming from correlations of higher order.

In this paper, we derive analytic formulas for the $n$th order cumulant densities of a linear, self-exciting Hawkes process with arbitrary interaction kernels,
generalizing the result in \cite{Hawkes2}. Inspired by the approach of Saichev et al., we do this by utilizing the Poisson cluster process representation \cite{Cluster},
which simplifies calculations considerably. Furthermore, we show that the cumulant densities admit a natural and intuitive graphical representation in terms of the
branching structure of the underlying process and describe an algorithm that facilitates practical computation. Finally, we generalize the result in \cite{Pernice2011} by
showing that the integrated cumulant densities can be expressed in terms of formal sums of topological motifs of a graph, induced by specifying the physical interactions between
different types of point events.

\section{Preliminaries}

\subsection*{Basic definitions}

Consider a sequence $T = (T_{n})_{n\geq 1}$ of positive, random variables, representing times of random occurrences of a certain event. Alternatively, $T$ can be also thought of as as collection of
random points on the positive half-line $\mathbb{R}^{+}$. By superposing all event times in the sequence, we obtain the point process $s = (s(t))_{t\geq0}$, formally defined by setting

\begin{equation}
 s(t):=\sum_{n\geq 1}\delta(t-T_{n})\textmd{,}
\end{equation}
where $\delta(t-T_{n})$ denotes the Dirac delta function, centered at the random point $T_{n}$.

It is easy to see that the number of events occurring before time $t$ is given by

\begin{align}\label{count_process}
 N(t):= \int_{-\infty}^{t}s(u)du  = |\{n : T_{n}\leq t\}|\textmd{,}
\end{align}

The conditional probability, given the past activity, of a new event occurring in the interval $(t,t+dt)$ is given by the conditional rate function $(\lambda(t))_{t\geq0}$. More
specifically, we have, up to first order \cite{CoxPoint}

\begin{equation}\label{rate_definition}
 P\{dN(t)=1 | \mathcal{H}_{t}\} = \lambda(t)dt\textmd{,}
\end{equation}
where $\mathcal{H}_{t}$ represents the history of the point process $s$ up to time $t$. Additionally, we assume that

\begin{equation}
  P\{dN(t)\geq 2 | \mathcal{H}_{t}\}=o(dt)\textmd{,}
\end{equation}
i.e. that the probability of two or more events arriving simultaneously is negligibly small. Intuitively, therefore, the conditional rate function represents the probability of a new event occurring in
the infinitesimally near future, given the information about all events in the past.

Furthermore, from our previous considerations it also follows that $dN(t)$ is (up to first order) a Bernoulli random variable and therefore,

 \begin{equation}\label{bernoulli}
  \langle dN(t) \rangle = P\{dN(t)=1\} = P\{\textmd{an event occurs at $t$}\}\textmd{.}
 \end{equation}

\subsection{The multivariate Hawkes process}
As was pointed out in \cite{Cluster}, the Hawkes process can be defined in two equivalent ways: either by specifying its conditional rate function
or as a \textit{Poisson cluster process}, generated by a certain branching structure.

\subsubsection{The conditional rate representation}
Following \cite{Hawkes1} and \cite{Hawkes2}, let us consider a $d$-dimensional point process $\mathbf{s} = (\mathbf{s}(t))_{t\geq0}$, with rate function
$(\bm{\lambda}(t))_{t\geq0}$ \linebreak defined by

\begin{align}\label{rate}
 \bm{\lambda}(t) &:= \bm{\mu} + \int_{-\infty}^{t}\mathbf{G}(t-u)\cdot d\mathbf{N}(u)\\
 &\equiv\bm{\mu} + \int_{-\infty}^{t}\mathbf{G}(t-u)\cdot \mathbf{s}(u)du\textmd{,}
\end{align}
where $\bm{\mu}$ denotes the $d$-dimensional base rate vector with positive entries ($\mu^{i}>0$) and $\mathbf{G}(t)$ is an $d\times d$ matrix of non-negative,
integrable functions $g^{ij}(t)$, with support on $\mathbb{R}^{+}$, called the interaction kernel. In principle, therefore, the rate $\bm{\lambda}(t)$ should
always remain positive, but models for which the probability of negative values is sufficiently small may be useful approximations \cite{Volker}.

Rewriting equation (\ref{rate}) in terms of the components of the conditional rate function $\lambda^{i}(t)$, we find that, $\forall i$,

\begin{equation}\label{rate_comp}
 \lambda^{i}(t) = \mu^{i} + \sum_{j=1}^{d}\int_{-\infty}^{t}g^{ij}(t-u)dN^{j}(u)\textmd{.}
\end{equation}

From equations (\ref{rate_definition}) and (\ref{rate_comp}), we can now see that

\begin{align}
 \frac{P\{dN^{i}(t) =1 |\mathcal{H}_{t}\}}{dt} &= \stackrel{\textmd{base rate}}{\overbrace{\mu^{i}}}\\
 &+ \underset{\textmd{influence of past $\mathcal{H}_{t}$}}{\underbrace{\sum_{j=1}^{d}\int_{-\infty}^{t}g^{ij}(t-u)dN^{j}(u)}}\textmd{,}
\end{align}
i.e. that the probability of an event of type $i$ occurring at time $t$ is simply the
sum of a constant base rate and a convolution of the complete history of the process with the interaction kernel $\mathbf{G}(t)$, whose component $g^{ij}(t)$
describes the increase of the likelihood of type $i$ events at $t$, caused by a type $j$ event, occurring at $0$. Note that, in the special case of
no interactions ($g^{ij}(t)\equiv0$), we recover the definition of a multivariate Poisson process with constant rate $\bm{\mu}$. In this case, however,
the (conditional) rate function is independent both of time and of the history $\mathcal{H}_{t}$.

\subsubsection{The cluster process representation}

Let us consider a Poisson cluster process $C$, which evolves in the following way (\cite{Bayes}, see also Figure \ref{pedFigure}) :

\begin{enumerate}
\item Let $I^{k}$ be a realization, on the interval $[0,T]$, of a homogeneous Poisson process with rate $\mu^{k}$. We will call points in $I^{k}$ \textit{immigrants of type $k$}.
\item For every $k$, each immigrant $x\in I^{k}$  generates a \textit{cluster} of points $C^{k}_{x}$. All such clusters are mutually independent.
\item The clusters $C^{k}_{x}$ are generated according to the \linebreak following branching structure:
			\begin{itemize}
			 \item Each cluster $C^{k}_{x}$ consists of generations of \linebreak offspring of all types of the immigrant $x$, which itself belongs to generation $0$.
			 \item Recursively, given the immigrant $x$ and the offspring of generation $1,2,\cdots,n$ of all types, every "child" $y$ of generation $n$ and
			 type $j$, produces, $\forall i$, its own offspring of generation $n+1$ and type $i$ by generating a realization of an inhomogeneous Poisson process
			 $O^{ij}$ with rate $\lambda(t):= g^{ij}(t - y)$. In other words, the probability of there being, at time $t$, a type $i$ offspring event of generation $n+1$,
			 caused by a type $j$ event $y$ of generation $n$ is equal to $g^{ij}(t-y)dt$.
			\end{itemize}
\item The point process $C$ is equal to the superposition of all points in all generated clusters, i.e.
			\begin{equation}
			 C = \sum_{k,x}C^{k}_{x}\textmd{.}
			\end{equation}
\end{enumerate}

\begin{figure}
 \begin{center}
  \includegraphics[width=0.5\textwidth]{figure1-ver21.pdf}
  \caption{(Color online) Evolution of a Poisson cluster process on a network with $4$ nodes and $6$ directed links. \\Left column: Hatched nodes are active, and dashed links are transmitting a signal to all their respective
  neighbors.\\ Right column: A cluster, generated by the arrival of an immigrant from node $A$, evolves sequentially as new offspring are produced. \\Row $1$: A type $A$ immigrant arrives, providing the seed from which a new cluster will emerge. \\Row $2$: The type $A$ immigrant generates $1$st generation offspring of types $B$ and $D$, respectively.
  Together, these constitute the $1$st generation of events. \\Row $3$: The $1$st generation, type $D$, event generates a single offspring event of type $C$. The event of type $B$ creates two offspring of
  types $A$ and $C$, respectively. \\Row $4$: Finally, the $2$nd generation, type $A$, event is the only one to generate $3$ offspring events, of types $B$, $C$ and $D$, respectively. \\Bottom: $A$ time sequence
  of events generated in this $4$ generation long evolution, here displayed by means of a "raster plot" which indicates the events generated by each node on the time axis.}
  \label{pedFigure}
 \end{center}
\end{figure}

For example, if  $C$ were used to model the dynamics of a spiking neuronal network, the immigrants $I^{k}$ would represent all the spikes of neuron $k$, caused by constant, external
input to the network, and the clusters $C^{k}_{x}$ all subsequent spikes, caused by action potential propagation through the network via synaptic connections.

Having defined the cluster process $C$, it is then possible to show (see e.g. \cite{Cluster}) that by letting, $\forall i$ and $\forall t\geq0$,

\begin{equation}
 \lambda^{i}(t):= \lim_{\delta\rightarrow 0}\frac{1}{\delta}P\{\textmd{event of type $i$ in $[t, t+\delta)$}|\mathcal{H}_{t}\}\textmd{,}
\end{equation}
and assuming that the spectral radius $\rho(\mathbf{G})$ (i.e. the largest eigenvalue) of the integrated kernel matrix

\begin{equation}
 \mathbf{G}:=\int_{-\infty}^{+\infty}\mathbf{G}(t)dt
\end{equation}
is strictly less than $1$, then $\lambda^{i}(t)$ must be equal to the conditional rate function in equation (\ref{rate_comp}). Furthermore,
the corresponding point process will also be stationary. In other words, we will have

\begin{equation}\label{stationary_rate}
 \frac{\langle \mathbf{N}(t)\rangle}{t} =  \langle \bm{\lambda}(t)\rangle = \bm{\lambda} = (\mathbf{I}-\mathbf{G})^{-1}\bm{\mu}\textmd{,}
\end{equation}
where $\mathbf{I}$ denotes the $d\times d$ identity matrix. In what follows, we will always assume that we are working with a stationary version of a Hawkes process.
More specifically, we will assume that $\rho(\mathbf{G})<1$ and, consequently, that the matrix $(\mathbf{I}-\mathbf{G})^{-1} $ can be expanded in terms of powers of the
integrated kernel matrix $\mathbf{G}$, i.e.

\begin{equation}\label{expansion}
 (\mathbf{I}-\mathbf{G})^{-1} = \sum_{n=0}^{+\infty}\mathbf{G}^{n}\textmd{.}
\end{equation}

Note that the matrix $\mathbf{G}$ has a very useful interpretation (which follows from the definition of the Poisson cluster process) - its component
$g^{ij}$ represents the average total number of events of type $i$ in the second generation, caused by a first generation, type $j$ event. Thus, the
components of the $n$th matrix power $\mathbf{G}^{n}$ equal the average total number of type $i$ offspring within $n$ subsequent generations, of a first generation,
type $j$ event.

From our previous considerations, it now follows that by requiring that $\rho(\mathbf{G})<1$ (or, equivalently, that the series (\ref{expansion}) converges) we,
in fact, assume that each event of a given type produces only finitely many events of any other type, after an infinite number of generations.

\section{The Hawkes process cumulant density}

Consider now an arbitrary $n$-dimensional random vector $\mathbf{X} =(X_{1},\cdots, X_{n})\equiv X_{\bar{n}}$, where we used the symbol $\bar{n}$ to denote the set $\{1,\cdots,n\}$ The
cumulant of order $n$, denoted by $k(X_{\bar{n}})$, is a general measure of statistical dependence of the components of $\mathbf{X}$. It is defined, combinatorially, as (see \cite{lukacs},
page 27.)

 \begin{equation}\label{cumulant}
 k(X_{\bar{n}}) = \sum_{\pi}(|\pi|-1)!(-1)^{|\pi|-1}\prod_{B\in\pi}\left\langle X_{B}\right\rangle\textmd{,}
\end{equation}
where the sum goes over all partitions $\pi$ of the set $\{1,\cdots,n\}$, $|\cdot|$ denotes the number of blocks of a given partition, and

\begin{equation}
 \langle X_{B} \rangle = \left\langle\prod_{i\in B}X_{i}\right\rangle\textmd{.}
\end{equation}

A dual formula, expressing moments in terms of cumulants, reads

\begin{equation}\label{moments_cumulant_formula}
 \langle X_{\bar{n}}\rangle = \sum_{\pi}\prod_{B\in\pi}k(X_{B})\textmd{,}
\end{equation}
where $k(X_{B})$ denotes the cumulant of those components of $\mathbf{X}$, whose indices are in $B$.

The cumulant $k(X_{\bar{n}})$ is a natural generalization, to higher dimensions, of the covariance $cov(X_{1},X_{2})$ of two variables.

Indeed, if we set $n=2$, $\mathbf{X} = (X_{1},X_{2})$ and apply formula (\ref{cumulant}), we obtain

\begin{align}
 k(X_{1},X_{2}) &= (1-1)!(-1)^{1-1}\langle X_{1} X_{2}\rangle\nonumber\\
 &+ (2-1)!(-1)^{2-1} \langle X_{1}\rangle\langle X_{2}\rangle\textmd{,}
\end{align}
as $\pi_{1}=\{\{1,2\}\}$ and $\pi_{2}=\{\{1\},\{2\}\}$ are the only partitions of the set $\{1,2\}$. Also, obviously, $|\pi_{1}|=1$ and $|\pi_{2}|=2$. Thus,

\begin{equation}\label{covariance_cumulant}
  k(X_{1},X_{2})=\langle X_{1} X_{2}\rangle -  \langle X_{1}\rangle\langle X_{2}\rangle=cov(X_{1},X_{2})\textmd{.}
\end{equation}

For a given time vector $\mathbf{t} = (t_{1},\cdots, t_{n})$ and multi-index $\mathbf{i} = (i_{1},\cdots,i_{n})$, we now define the the
$\mathbf{n}$th order cumulant density of the Hawkes process, denoted by $k^{\mathbf{i}}(\mathbf{t})$, by letting

\begin{equation}
 k^{\mathbf{i}}({\mathbf{t}}):= \frac{k(dN^{i_{1}}(t_{1}),\cdots,dN^{i_{n}}(t_{n}))}{d\mathbf{t}}\textmd{,}
\end{equation}
 where we used $d\mathbf{t}$ to denote the differential $dt_{1}\cdots dt_{n}$.

As in the general case, the cumulant density $k^{\mathbf{i}}(\mathbf{t})$ is used to quantify the mutual dependence of random events of types
$(i_{1},\cdots,i_{n})$ at times $(t_{1},\cdots,t_{n})$.

For example, from equations (\ref{covariance_cumulant}) and (\ref{bernoulli}), we can see that, for $\mathbf{i}=(1,2)$, $\mathbf{t}=(t_{1},t_{2})$ and $d\mathbf{t}=dt_{1}dt_{2}$,

 \begin{eqnarray}
  k^{\mathbf{i}}(\mathbf{t})d\mathbf{t}&&=P\{\textmd{type $1$ event at $t_{1}$, type $2$ event at $t_{2}$}\}\nonumber\\
  &&\hspace*{-25pt}-P\{\textmd{type $1$ event at $t_{1}$}\}P\{\textmd{type $2$ event at $t_{2}$}\}\textmd{.}
 \end{eqnarray}

The formulas for the $n$th order cumulant density $k^{\mathbf{i}}(\mathbf{t})$, however, get more and more complicated with increasing $n$,
as the number of set partitions involved grows supra-exponentially.

To illustrate this point, we set $n=3$, $\mathbf{i} = (1,2,3)$ and $\mathbf{t}=(t_{1},t_{2},t_{3})$. Then, from (\ref{cumulant}), we have

  \begin{align}
  k^{\mathbf{i}}(\mathbf{t})d\mathbf{t} &= \langle dN^{1}(t_{1})dN^{2}(t_{2})dN^{3}(t_{3})\rangle\nonumber\\
  &- \langle dN^{1}(t_{1})dN^{2}(t_{2})\rangle\langle dN^{3}(t_{3})\rangle\nonumber\\
  &- \langle dN^{1}(t_{1})dN^{3}(t_{3})\rangle\langle dN^{2}(t_{2})\rangle\nonumber\\
  &- \langle dN^{2}(t_{2})dN^{3}(t_{3})\rangle\langle dN^{1}(t_{1})\rangle\nonumber\\
  &+2\langle dN^{1}(t_{1})\rangle\langle dN^{2}(t_{2})\rangle\langle dN^{3}(t_{3})\rangle\textmd{.}
 \end{align}

To alleviate the problem of increasing complexity, we use the cluster process representation to come up with a useful and intuitive expression for the density
$k^{\mathbf{i}}(\mathbf{t})$ in terms of the cluster process's branching structure.

First off, note that the only way that events $(t_{1},\cdots,t_{n})$ (of types $(i_{1},\cdots,i_{n})$)
can be statistically dependent is if they all belong to the same cluster, i.e. if they are all offspring (possibly of different generations) of a single original immigrant.

More specifically, we can show that (see Appendix \ref{proof}), for every multi-index $\mathbf{i} = (i_{1},\cdots,i_{n})$ and every vector $\mathbf{t}=(t_{1},\cdots,t_{n})$,

 \begin{equation}\label{cumulant_probability_formula}
  k^{\mathbf{i}}(\mathbf{t})d\mathbf{t} = P\left\{E^{\mathbf{i}}_{\mathbf{t}}\cap C^{\mathbf{i}}_{\mathbf{t}}\right\}\textmd{,}
 \end{equation}
 where

 \begin{align}
  &E^{\mathbf{i}}_{\mathbf{t}} = \{\textmd{$\forall k$, there is a type $i_{k}$ event at time $t_{k}$}\}\textmd{,}\\
  &C^{\mathbf{i}}_{\mathbf{t}} = \{ \exists\textmd{ cluster } C\textmd{ such that, }\forall k\textmd{, }t_{k}\in C\}\textmd{.}
 \end{align}

This result now provides us with a practical way of \linebreak computing $k^{\mathbf{i}}(\mathbf{t})d\mathbf{t}$.

For example, in the case when $n=2$, we have that $k^{ij}(t_{1},t_{2})dt_{1}dt_{2}$ is equal to the probability of there being a type $i$ event at
time $t_{1}$, a type $j$ event at time $t_{2}$, and that both of these events are descendant from a common immigrant. Therefore, in order to compute the $2$nd
order cumulant density, we need to sum up the probabilities of all possible "family trees" which contain events $t_{1}$ and $t_{2}$ (see Figure \ref{2-trees}).

\begin{figure}
 \includegraphics[trim = 60mm 185mm 0mm 43mm]{figure2}
 \caption{A schematic representation of all possible family trees, containing events $t_{1}$ and $t_{2}$. Two concrete examples of family trees, mapping to the same general schema are
 given in the second row. The root, $x$, denotes the original immigrant and $u$ the branching point in the family
 tree of immigrant $x$, leading to the appearance of offspring $t_{1}$ and $t_{2}$. Note that each link connecting two nodes can be, in theory, any number of generations long.}
\label{2-trees}
\end{figure}

In order to formalize this computation, we define

\begin{equation}
R^{ij}_{t}:=\frac{P\{\textmd{type $j$ event at $0$ causes type $i$ event at $t$}\}}{dt}.
\end{equation}

Then,

\begin{equation}
 R^{ij}_{t} = \left[\sum_{n\geq0}\mathbf{G}^{\star n}(t)\right]_{ij}\textmd{,}
\end{equation}
where $[\cdot]_{ij}$ extracts component $(i,j)$ of a given matrix, and $\mathbf{G}^{\star n}(t)$ denotes the $\mathbf{n}$th convolution power of the
interaction kernel $\mathbf{G}(t)$, defined recursively by

\begin{align*}
 \mathbf{G}^{\star 0}(t)&=\mathbf{I}\delta(t)\textmd{,}\\
 \mathbf{G}^{\star n}(t)&= \int_{-\infty}^{t}\mathbf{G}^{\star (n-1)}(t-s)\cdot \mathbf{G}(s)ds\textmd{.}
\end{align*}

Indeed, if we define $p^{ij}_{n}(t)$ to be equal to the probability that an event of type $j$ at $0$, after $n$ generations,
causes a type $i$ event at $t$, we have
\begin{align}
 &\frac{p^{ij}_{0}(t)}{dt} = \delta_{ij}\delta(t)=[\mathbf{I}\delta(t)]_{ij}\textmd{,}\\
 &\frac{p^{ij}_{1}(t)}{dt} = [\mathbf{G}(t)]_{ij}\textmd{,}\\
 &\frac{p^{ij}_{2}(t)}{dt} = \sum_{k=1}^{d}\int_{-\infty}^{t}[\mathbf{G}(t-s)]_{ik}[\mathbf{G}(s)]_{kj}ds = [\mathbf{G}^{\star 2}(t)]_{ij}\textmd{,}
\end{align}
and therefore, by induction,

\begin{align}
 R^{ij}_{t} &= [I\delta(t)+\mathbf{G}(t)+\mathbf{G}^{\star 2}(t)+\mathbf{G}^{\star 3}(t)+\cdots]_{ij}\\
 &= \left[\sum_{n\geq0}\mathbf{G}^{\star n}(t)\right]_{ij}\textmd{.}
 \end{align}

Furthermore, noting that $P\{$type $k$ immigrant at $x\}$ is, by construction, equal to $\mu^{k} dx$, we obtain the probability
of an immigrant (arriving at any point in time) generating an event of type $m$ at time $u$. It equals

\begin{equation}
 \sum_{k=1}^{d}\int_{\mathbb{R}}\mu^{k}R^{mk}_{u-x}dx = \sum_{k=1}^{d}[(\mathbf{I}-\mathbf{G})^{-1}]_{mk}\mu^{k} =\lambda^{m}\textmd{,}
\end{equation}
i.e. it is the $m$th component of the stationary rate vector $\bm{\lambda}$ in (\ref{stationary_rate}), where the first equality in the previous equation
follows from

\begin{align}
 \int_{\mathbb{R}}R^{mk}_{u-x}dx &= \sum_{n\geq 0}\int_{\mathbb{R}}[\mathbf{G}^{\star n}(u-x)]_{mk}dx \\
 &=\sum_{n\geq 0}[\mathbf{G}^{n}]_{mk} = [(\mathbf{I}-\mathbf{G})^{-1}]_{mk}\textmd{.}
\end{align}

Computing the probability of the family tree $T_{12}$ in Figure \ref{2-trees} is now straightforward; recalling the definition of $R^{ij}_{t}$ and taking into account
our previous considerations, we get

\begin{align}
 &k^{ij}(t_{1},t_{2})=\frac{P(T_{12})}{dt_{1}dt_{2}}=\sum_{m=1}^{d}\lambda^{m}\int_{\mathbb{R}}R^{im}_{t_{1}-u}R^{jm}_{t_{2}-u}du\textmd{,}
\end{align}
recovering a classical and well known result on the \linebreak covariance density of the Hawkes process (see \cite{Hawkes2}).

A big advantage of our approach, however, is that it can be used to compute cumulant densities of orders greater than $2$.

For example, in order to compute the $3$rd order density $k^{ijk}(t_{1},t_{2},t_{3})$ we start, as in the $2$-dimensional case, by enumerating all possible
family trees with leaves $t_{1}$, $t_{2}$ and $t_{3}$. In this case, however, there are in total $4$ different possibilities (see Figure \ref{3-trees}).

We can now proceed in much the same way as before, summing up the probabilities of all possible trees in order to derive the desired formula. We define $\mathbf{t}=(t_{1},t_{2},t_{3})$,
$d\mathbf{t}=dt_{1}dt_{2}dt_{3}$ and

\begin{equation}
 \Psi^{ij}_{t}=R^{ij}_{t}-\delta_{ij}\delta(t)=\left[\sum_{n\geq1}\mathbf{G}^{\star n}(t)\right]_{ij}\textmd{,}
\end{equation}
finally obtaining

\begin{align}\label{3-density}
 &k^{ijk}(\mathbf{t}) = \frac{P(T_{1,23})}{d\mathbf{t}}+\frac{P(T_{2,13})}{d\mathbf{t}} +\frac{P(T_{3,12})}{d\mathbf{t}}+\frac{P(T_{123})}{d\mathbf{t}}\nonumber\\
 &= \sum_{m,n=1}^{d}\lambda^{n}\int_{\mathbb{R}}R^{in}_{t_{1}-u}\left(\int_{\mathbb{R}}R^{jm}_{t_{2}-v}R^{km}_{t_{3}-v}\Psi^{mn}_{v-u}dv\right)du\nonumber\\
 &+ \sum_{m,n=1}^{d}\lambda^{n}\int_{\mathbb{R}}R^{jn}_{t_{2}-u}\left(\int_{\mathbb{R}}R^{im}_{t_{1}-v}R^{km}_{t_{3}-v}\Psi^{mn}_{v-u}dv\right)du\nonumber\\
 &+ \sum_{m,n=1}^{d}\lambda^{n}\int_{\mathbb{R}}R^{kn}_{t_{3}-u}\left(\int_{\mathbb{R}}R^{im}_{t_{1}-v}R^{jm}_{t_{2}-v}\Psi^{mn}_{v-u}dv\right)du\nonumber\\
 &+ \sum_{m=1}^{d}\lambda^{m}\int_{\mathbb{R}}R^{im}_{t_{1}-u}R^{jm}_{t_{2}-u}R^{km}_{t_{3}-u}du\textmd{.}
\end{align}

It is important to point out that equation (\ref{3-density}) can be derived in a different, albeit a more tedious way using martingale theory arguments, generalizing the derivation of Bacry et al.
in \cite{bacry2012} for the second order cumulant density.

The newly introduced function $\Psi^{ij}_{t}$ corresponds to the probability of a type $j$ event at $0$ generating a type $i$ event at $t$, after
at least one generation.

The appearance of such a term in the above equations is a consequence of the fact that, for instance, contracting the link
between nodes $u$ and $v$ in tree $T_{1,23}$ to a point turns it into $T_{123}$, which is already accounted for. Thus, in order to avoid counting certain
configurations twice, we must introduce a "stiff" link between the two internal nodes $u$ and $v$ in trees $T_{1,23}$, $T_{2,13}$ and $T_{3,12}$.

\begin{figure}
 \includegraphics[trim = 60mm 185mm 0mm 44mm, width = 0.8\textwidth]{figure3}
 \caption{A schematic representation of all possible family trees, containing events $t_{1}$, $t_{2}$ and $t_{3}$. Once again, the root $x$ denotes the original
 immigrant, nodes $u$ and $v$ represent the branching points in the family tree of immigrant $x$ and each link between two nodes can be any number of generations long.}
 \label{3-trees}
\end{figure}

By generalizing the above considerations, it is possible to construct a general procedure for computing the $n$th order cumulant density
$k^{i_{1}\cdots i_{n}}(t_{1},\cdots,t_{n})$.

\begin{enumerate}
 \item For a given $n\geq 2$, generate all possible rooted trees $T$ with $n$ leaves.
 \item Label the leaves of $T$ with ordered pairs $(i_{k},t_{k})$, in arbitrary order. Label the internal nodes (including the root) of $T$ arbitrarily.
 \item For every tree $T$, construct an integral term $I_{T}$, according the the following pseudo-algorithm :
	\begin{enumerate}
	  \item Set $I_{T} \leftarrow 1$;
	  \item For every edge in T, connecting a node $v$ of type $j_{v}$ to a leaf $t_{k}$ of type $i_{k}$ :
		\begin{equation*}
		 I_{T} \leftarrow I_{T}\cdot R^{i_{k}j_{v}}_{t_{k}-v}dv\textmd{;}
		\end{equation*}

          \item For every edge in T, connecting an internal node $u$ of type $j_{u}$ to another internal node $v$ of type $j_{v}$ :
		\begin{equation*}
		  I_{T} \leftarrow I_{T}\cdot \Psi^{j_{v}j_{u}}_{v-u}du\textmd{;}
		\end{equation*}
          \item Let $x$ be the root of $T$. Set
		\begin{equation*}
		  I_{T} \leftarrow I_{T}\cdot \lambda^{j_{x}}\textmd{;}
		\end{equation*}
	  \item Integrate $I_{T}$ with respect to the variable $du$, for every internal node $u$.
	  \item Sum over all $j_{u}$ for every internal node $u$.
	  \item Sum over all $j_{x}$
	\end{enumerate}
 \item Add up all integral terms $I_{T}$ for every rooted tree $T$, generated in the first step, to obtain the $n$th order cumulant density.
\end{enumerate}

The principal difficulty of the above procedure lies its first step, i.e. in the enumeration of all topologically distinct rooted trees with $n$ labeled leaves.
While there are known algorithms that can tackle this problem (see e.g. the classic text by Felsenstein \cite{Felsenstein}), the number of terms grows very quickly
with increasing $n$ (see Figure \ref{number_of_terms}) and thus computing $k^{\mathbf{i}}(\mathbf{t})$ quickly becomes impractical.

\begin{figure}
\begin{center}
 \begin{tabular}{ |c|r| }
  \hline
  $n$ & Terms in $k^{\mathbf{i}}(\mathbf{t})$\\
  \hline
  $2$ & $1$ \\
  $3$ & $4$ \\
  $4$ & $26$ \\
  $5$ & $236$ \\
  $6$ & $2,752$ \\
  $7$ & $39,208$ \\
  $8$ & $660,302$ \\
  $9$ & $12,818,912$ \\
  $10$ & $282,137,824$ \\
  \hline
\end{tabular}
\end{center}
\caption{Number of terms in $k^{\mathbf{i}}(\mathbf{t})$ for a given $n$ - from \cite{Felsenstein}}
\label{number_of_terms}
\end{figure}

\section{Integrated cumulants as sums of topological motifs}

 Let $k^{\mathbf{i}}(\mathbf{t})$ be, for a given time vector $\mathbf{t} = (t_{1},\cdots,t_{n})$ and multi-index $\mathbf{i} = (i_{1},\cdots,i_{n})$,
 the $n$th order cumulant \linebreak density of a $d$-dimensional Hawkes process. We define the integrated cumulant of order $\mathbf{n}$, denoted simply by
 $k^{\mathbf{i}}$, by setting

 \begin{align}
  k^{\mathbf{i}}:=\int_{\mathbb{R}^{n}_{+}}k^{\mathbf{i}}(\mathbf{t})d\mathbf{t}\textmd{.}
 \end{align}

 Note that $k^{\mathbf{i}}$ can be seen as the $n$-dimensional Laplace transform, "at zero", of $k^{\mathbf{i}}(\mathbf{t})$. Indeed, if we denote

 \begin{equation}
  \mathcal{L}_{\bm{\omega}}(k^{\mathbf{i}}(\mathbf{t})) = \int_{\mathbb{R}^{n}_{+}}e^{-\bm{\omega}\cdot\mathbf{t}}k^{\mathbf{i}}(\mathbf{t})d\mathbf{t}\textmd{,}
 \end{equation}
 where $\bm{\omega} = (\omega_{1},\cdots,\omega_{n})\in\mathbb{C}^{n}$ and $\bm{\omega}\cdot\mathbf{t} = \sum_{i}\omega_{i}t_{i}$, we have,
 clearly,

\begin{equation}
 k^{\mathbf{i}} = \mathcal{L}_{\mathbf{0}}(k^{\mathbf{i}}(\mathbf{t}))\textmd{.}
\end{equation}

Thus, if we define

\begin{equation}
\mathbf{R}_{t}:=
 \begin{pmatrix}
  R^{11}_{t} & \cdots & R^{1d}_{t} \\
  \vdots & \ddots & \vdots \\
  R^{d1}_{t}& \cdots & R^{dd}_{t}
 \end{pmatrix}\textmd{ , }\bm{\Psi}_{t} = \mathbf{R}_{t}-\mathbf{I}\delta(t)\textmd{,}
\end{equation}
we can, by Laplace transforming the covariance density $k^{ij}(t_{1},t_{2})$, prove (see Appendix \ref{formulas_for_integrated_cumulants}) that,

\begin{equation}\label{integrated_covariance}
 k^{ij} = \sum_{m=1}^{d}\lambda^{m}[\mathbf{R}]_{im}[\mathbf{R}]_{jm}\textmd{,}
\end{equation}
where we set

\begin{equation}
 \mathbf{R} = (\mathbf{I}-\mathbf{G})^{-1} = \mathcal{L}_{0}(\mathbf{R}_{t})\textmd{.}
\end{equation}

Expanding $\mathbf{R}$ in powers of $\mathbf{G}$, we get

\begin{equation}
 k^{ij} = \sum_{m=1}^{d}\sum_{k=0}^{+\infty}\sum_{l=0}^{+\infty}\lambda^{m}[\mathbf{G}^{k}]_{im}[\mathbf{G}^{l}]_{jm}\textmd{.}
\end{equation}

Interpreting now the matrix power $\mathbf{G}^{l}$ in the sense of graph theory, i.e. as a matrix whose component $(i,j)$ corresponds to the sum of
lengths of all paths from node $j$ to node $i$ in exactly $l$ steps, we see that the integrated covariance density $k^{ij}$ can be equivalently represented as

\begin{equation}
 k^{ij} = \sum_{T\in\mathcal{T}^{m}_{ij}}w(T)\textmd{,}
\end{equation}
where the sum goes over the set $\mathcal{T}^{m}_{ij}$ of all rooted trees $T$ with root $m$, containing nodes $i, j$. Here, $w(T)$ \linebreak denotes the
weight of tree $T$, defined as the product of weights of all edges, contained in $T$, times the weight of the root $m$, defined as being equal
to $\lambda^{m}$.

The graph $H$ with adjacency matrix $\mathbf{G}$ can be thought of as follows. Each node $i\in\{1,\cdots,n\}$ in $H$ corresponds to a type of event in the
underlying Hawkes process, and the existence of an edge $e_{ij}$ from $j$ to $i$ indicates the possibility of generating type $i$ events from those of
type $j$. Starting in node $j$, traversing the corresponding edge to reach node $i$ is equivalent to generating $g^{ij}$ type $i$ offspring of a type $j$ immigrant.
Therefore, each path through graph $H$ represents a specific "bloodline" of a type $m$
immigrant, while a tree $T\in\mathcal{T}^{m}_{ij}$ accounts for the possibility of the bloodline splitting somewhere along the way, concluding in, after a
certain number of generations, in offspring of both types $i$ and $j$. The previous formula tells us that the sum of weights of all such trees is equal to the
integrated covariance $k^{ij}$.

Now, reasoning in much the same way as before we have, for $k^{ijk}$,

\begin{align}\label{integrated_thrid_cumulant}
k^{ijk} &= \sum_{m=1}^{d}\lambda_{m}[\mathbf{R}]_{im}[\mathbf{R}]_{jm}[\mathbf{R}]_{km}\\
&+ \sum_{m,n=1}^{d}\lambda_{n}[\mathbf{R}]_{im}[\mathbf{R}]_{jm}[\bm{\Psi}]_{mn}[\mathbf{R}]_{kn}\\
&+ \sum_{m,n=1}^{d}\lambda_{n}[\mathbf{R}]_{jm}[\mathbf{R}]_{km}[\bm{\Psi}]_{mn}[\mathbf{R}]_{in}\\
&+ \sum_{m,n=1}^{d}\lambda_{n}[\mathbf{R}]_{im}[\mathbf{R}]_{km}[\bm{\Psi}]_{mn}[\mathbf{R}]_{jn}\textmd{,}
\end{align}
where $\bm{\Psi} = (\mathbf{I}-\mathbf{G})^{-1}-\mathbf{I} = \mathcal{L}_{0}(\bm{\Psi}_{t})$. Once again, expanding $\mathbf{R}$ and $\bm{\Psi}$
in powers of $\mathbf{G}$ yields

\begin{equation}
 k^{ijk} = \sum_{T\in\mathcal{T}^{m}_{ijk}}w(T)\textmd{,}
\end{equation}
where $\mathcal{T}^{m}_{ijk}$ is the set of all rooted trees with root $m$, containing nodes $i,j,k$ and $w(\cdot)$ is the already defined weight function.

It is now easy to see that the general result is of the form

\begin{equation}
 k^{\mathbf{i}} = \sum_{T\in\mathcal{T}^{m}_{\mathbf{i}}}w(T)\textmd{,}
\end{equation}
where $\mathbf{i} = (i_{1},\cdots,i_{n})$ and $\mathcal{T}^{m}_{\mathbf{i}} = \mathcal{T}^{m}_{i_{1}\cdots i_{n}}$ is the set of all rooted trees with root $m$, containing
nodes $i_{1},\cdots,i_{n}$.

\section{Discussion}

In this paper we described the method for computing a class of statistics of linear Hawkes self-exciting point processes with arbitrary interaction kernels.
By using the Poisson cluster process representation, we were able to obtain a general procedure for deriving formulas for $n$th order cumulant densities.
Furthermore, we have shown there is a one-to-one correspondence between the integral terms, appearing in said densities, and all topologically distinct rooted
trees with $n$ labeled leaves.

We also considered the problem of computing time-integrated cumulants and showed this can be done by simplifying the expressions for the corresponding cumulant
densities. Moreover, and not surprisingly, we demonstrated that integrated cumulants likewise admit a representation in terms of a formal sum of topological
motifs, generalizing previous work on the topological expansion of the integrated covariance \cite{Pernice2011}.

The problem of quantifying higher-order correlations is of some importance in theoretical neuroscience. Indeed, it has long been suggested \cite{hebb1949, gerstein1989} that
understanding the cooperative dynamics of populations of neurons would provide fundamental insight into the nature of neuronal computation. However, while direct experimental evidence for coordinated
activity on the spike train level mostly relies on the correlations between pairs of nerve cells \cite{Gray1989, vaadia1995, riehle1997, bair2001, kohn2005},
it is becoming increasingly clear that such pairwise correlations cannot completely resolve the cooperative dynamics of neuronal populations \cite{martignon1995, bohte2000, Kuhn2003, Nature2010} and
that higher-order cumulants need to be taken into account.

One possible shortcoming of our work is the (supra-exponentially) increasing complexity of the closed-form expressions for the densities $k^{\mathbf{i}}(\mathbf{t})$
for higher values of $n$. This "explosion", however, is mostly due to combinatorial factors, that arise in many problems involving cumulants. As their definition
naturally involves objects such as set partitions, it seems to us that these sorts of issues would be quite difficult to avoid.

Another limitation of the present model is that it only allows for excitatory interactions - an arrival of an event at a given time can only \textit{increase}
the likelihood of future event, never decrease it. We hope, in the future, to be able to extend our analysis to include models in which there also exists a
possibility of mutual inhibition between points of different types.

Further generalizations of our results might involve computing cumulants (and other important statistics) of a non-linear Hawkes processes (see e.g.
\cite{Stability} for the definition), whose conditional rate function involves a non-linear transformation of equation (\ref{rate}), thus allowing for, for example,
multiplicative interaction between point events \cite{Cardanobile2009}. However, in this case, the resulting process no longer admits an immigrant-offspring representation, meaning
an alternative approach would be necessary.

\acknowledgments{Supported by the Erasmus Mundus Joint Doctoral programme EuroSPIN and the German Federal Ministry of Education and Research (BFNT - Freiburg*T\"{u}bingen, grant 01GQ0830). Stojan Jovanovi\'{c}
acknowledges the hospitality of NORDITA. The authors would also like to thank the referees for many helpful comments and suggestions, Marcel Sauerbier for useful discussion and Gunnar Grah for making Figure \ref{pedFigure}.}

\begin{appendices}
 \section{Proof of equation (\ref{cumulant_probability_formula})}\label{proof}

 Let $\mathbf{t}$ be an arbitrary time vector $\mathbf{t} = (t_{1},\cdots, t_{n})$ and $\mathbf{i}$ an arbitrary multi-index $\mathbf{i} = (i_{1},\cdots,i_{n})$.

 From (\ref{bernoulli}), for every vector $\mathbf{t} = (t_{1},\cdots, t_{n})$ and multi-index $\mathbf{i} = (i_{1},\cdots,i_{n})$ we have that

 \begin{align}
  &\langle dN^{i_{1}}(t_{1})\cdots dN^{i_{n}}(t_{n})\rangle= P\{E^{\mathbf{i}}_{\mathbf{t}}\}\textmd{,}\\
  &P\{E^{\mathbf{i}}_{\mathbf{t}}\} = P\{\textmd{$\forall k$, there is a type $i_{k}$ event at $t_{k}$}\}\textmd{.}
 \end{align}

 Furthermore, it is clear that

 \begin{equation}\label{decomposition_of_average}
  P\{E^{\mathbf{i}}_{\mathbf{t}}\} = P\{E^{\mathbf{i}}_{\mathbf{t}}\cap C^{\mathbf{i}}_{\mathbf{t}}\}+P\{E^{\mathbf{i}}_{\mathbf{t}}\cap \bar{C}^{\mathbf{i}}_{\mathbf{t}}\}\textmd{,}
 \end{equation}
 where  $\bar{C}^{\mathbf{i}}_{\mathbf{t}}$ denotes the complement of the set

\begin{equation}
 C^{\mathbf{i}}_{\mathbf{t}} = \{ \exists\textmd{ cluster } C\textmd{ such that, }\forall k\textmd{, }t_{k}\in C\}\textmd{.}
\end{equation}

Indeed, events $\mathbf{t}$ of type $\mathbf{i}$ either are, or aren't all in some cluster $C$. We now proceed by induction in $n$. For $n=2$, we have

 \begin{equation}
  P\{E^{ij}_{t_{1}t_{2}}\} = P\{E^{ij}_{t_{1}t_{2}}\cap C^{ij}_{t_{1}t_{2}}\} + P\{E^{ij}_{t_{1}t_{2}}\cap \bar{C}^{ij}_{t_{1}t_{2}}\}\textmd{.}
 \end{equation}

 But, as the only way that two events are not in the same cluster is if they each belong to a different one; say, if $t_{1}\in C$ and $t_{2}\in D$,

 \begin{align}
 &P\{E^{ij}_{t_{1}t_{2}}\cap \bar{C}^{ij}_{t_{1}t_{2}}\}=\sum_{C,D}P\{E^{i}_{t_{1}}\cap E^{j}_{t_{2}}\cap C^{i}_{t_{1}}\cap D^{j}_{t_{2}}\}\\
&=\sum_{C,D}P\{E^{i}_{t_{1}}\cap C^{i}_{t_{1}}\}P\{E^{j}_{t_{2}}\cap D^{j}_{t_{2}}\}\\
&=P\{E^{i}_{t_{1}}\}P\{E^{j}_{t_{2}}\} = \langle dN^{i}_{t_{1}}\rangle\langle dN^{j}_{t_{2}}\rangle\textmd{,}
\end{align}
because of independence of different clusters $C$ and $D$. Thus,

\begin{align}
 P\{E^{ij}_{t_{1}t_{2}}\cap C^{ij}_{t_{1}t_{2}}\} &= P\{E^{ij}_{t_{1}t_{2}}\} - \langle dN^{i}(t_{1})\rangle\langle dN^{j}(t_{2})\rangle\\
 &=k^{ij}(t_{1},t_{2})dt_{1}dt_{2}\textmd{,}
\end{align}
proving that formula (\ref{cumulant_probability_formula}) is true for $n=2$.

Next, we assume that (\ref{cumulant_probability_formula}) is true for $n-1$ and prove that it then must also be true for $n$.

Consider the complementary set $\bar{C}^{\mathbf{i}}_{\mathbf{t}}$. If events $\mathbf{t}$ are not all in the same cluster, how could they be distributed? One
possibility is that they are divided up between two different clusters, like in the previous case. In fact, they could potentially be distributed in $c$ different
clusters, where $2\leq c \leq n$. Therefore,

\begin{equation}
 P\{E^{\mathbf{i}}_{\mathbf{t}}\cap \bar{C}^{\mathbf{i}}_{\mathbf{t}}\} = \sum_{c=2}^{n}\prod_{r=1}^{c}P\{E^{\mathbf{i}_{r}}_{\mathbf{t}_{r}}\cap B(r)^{\mathbf{i}_{r}}_{\mathbf{t}_{r}}\}\textmd{,}
\end{equation}
where the first sum goes over all possible numbers of different clusters that events $\mathbf{t}$ could be partitioned in, while $\mathbf{t}_{r}$ denotes the subset
of $\mathbf{t}$ that belong to the $r$th cluster $B(r)$ (and $\mathbf{i}_{r}$ denotes their types).

Now, note that the previous equation is, in fact, a sum over all partitions $\pi$ of the set $\{1,\cdots,n\}$ with at least two blocks (i.e. $|\pi|>1$). Let us now
fix one such partition $\pi = \{B(1),\cdots, B(|\pi|)\}$. As $|\pi|>1$, we must have, $\forall r$, $1\leq r \leq |\pi|$, that $|B(r)|<n$. But then, by the inductive
assumption,

\begin{equation}
 P\{E^{\mathbf{i}_{r}}_{\mathbf{t}_{r}}\cap B(r)^{\mathbf{i}_{r}}_{\mathbf{t}_{r}}\} = k^{\mathbf{i}_{r}}(\mathbf{t}_{r})\textmd{,}
\end{equation}
and, therefore,

\begin{equation}\label{different_clusters}
 P\{E^{\mathbf{i}}_{\mathbf{t}}\cap \bar{C}^{\mathbf{i}}_{\mathbf{t}}\} = \sum_{\pi : |\pi|>1}\prod_{B\in \pi}k^{\mathbf{i}_{r}}(\mathbf{t}_{r})d\mathbf{t}_{r}\textmd{.}
\end{equation}

Finally, from (\ref{decomposition_of_average}), (\ref{different_clusters}) and (\ref{moments_cumulant_formula}), we get

\begin{equation}
 k^{\mathbf{i}}_{\mathbf{t}}d\mathbf{t} + \sum_{\pi : |\pi|>1}\prod_{B\in \pi}k^{\mathbf{i}_{r}}(\mathbf{t}_{r})d\mathbf{t}_{r} = P\{E^{\mathbf{i}}_{\mathbf{t}}\cap C^{\mathbf{i}}_{\mathbf{t}}\} + P\{E^{\mathbf{i}}_{\mathbf{t}}\cap \bar{C}^{\mathbf{i}}_{\mathbf{t}}\}\textmd{,}
\end{equation}
which completes the proof.

 \section{Formulas for integrated cumulants}\label{formulas_for_integrated_cumulants}

 Let $\mathcal{T}^{m}_{\mathbf{i}}$ be the set of all rooted trees with root $m$ and leaves $\mathbf{i} = (i_{1},\cdots, i_{n})$. Next, let $T\in\mathcal{T}^{m}_{\mathbf{i}}$
 and let $I_{T}$ be the corresponding integral term. In order to compute the Laplace transform $\mathcal{L}_{\bm{\omega}}(I_{T})$, we first consider the
 leaves of $T$.

 Each leaf $i_{k}$ contributes a term $R^{i_{k}j_{v}}_{t_{k}-v}$, for some internal node $v$. For simplicity, let us assume that leaves $i_{1},\cdots,i_{s(v)}$
 all descend from a single internal node, which we denote $v$. Then, applying to $I_{T}$ the Laplace transform with respect to variables $t_{1},\cdots, t_{s(v)}$, we
 obtain

 \begin{equation}\label{leaf_terms}
  \prod_{l=1}^{s(v)}\mathcal{L}_{\omega_{l}}(R^{i_{l}j_{v}}_{t_{l}-v})e^{-v\sigma_{v}}\textmd{,}
 \end{equation}
 where we denote $\sigma_{v}=\sum_{l=1}^{s(v)}\omega_{l}$.

 Of course, in general the leaves $i_{1},\cdots,i_{n}$ are divided into several groups, according to which internal node they descend from. In that case, applying
 to each such group the Laplace transform in the already described way, yields several terms of type (\ref{leaf_terms}).

 Moving one level up in tree $T$, we are now in a situation in which several internal nodes, each with its own group of dependent leaves, all descend from a common
 node $u$, residing one level above them. We denote these internal nodes by $v_{1},\cdots, v_{r(u)}$. Each such internal node $v_{l}$ contributes to $I_{T}$ a term
 $\bm{\Psi}^{j_{v_{l}}j_{u}}_{v_{l}-u}$. Transforming the exponential term in (\ref{leaf_terms})

 \begin{equation}
  e^{-v_{l}\sigma_{v_{l}}} = e^{-(v_{l}-u)\sigma_{v_{l}}}e^{-u\sigma_{v_{l}}}\textmd{,}
 \end{equation}
 and multiplying with $\bm{\Psi}^{j_{v_{l}}j_{u}}_{v_{l}-u}$, we get

 \begin{equation}\label{internal_node_terms}
  \prod_{l=1}^{r(u)}\mathcal{L}_{\sigma_{v_{l}}}(R^{j_{v_{l}}j_{u}}_{v_{l}-u})e^{-u\Sigma_{u}}\textmd{,}
 \end{equation}
 where $\Sigma_{u} = \sum_{l=1}^{r(u)}\sigma_{v_{l}}$.

 By induction, we can now see that this procedure must end after a finite number of steps (equal to the "depth" of tree $T$), at which point we are left with a
 product of various terms of types (\ref{leaf_terms}) and (\ref{internal_node_terms}), integrated with respect to the position $x$ of the root $m$ (as this is the
 last node we reach by "climbing up" $T$). The exponential terms in this product can be combined to form

 \begin{equation}
  \int_{\mathbb{R}}e^{-x\sum_{i=1}^{n}\omega_{i}}dx = \delta(\omega_{1}+\cdots+\omega_{n})\textmd{,}
 \end{equation}
the integral representation of a Dirac delta function.

By setting $\bm{\omega} = \mathbf{0}$, we now see that the formulas for $k^{\mathbf{i}}$ can be obtained from formulas for the cumulant densities by simply
"erasing" all the integral signs and replacing all the functional terms with their integrated counterparts.

\end{appendices}

redpajama_set_name: RedPajamaArXiv


text:
Reaction: Afghanistan-Bangladesh WC, Asian Cup Qualifier
Published at 09:12 pm September 11th, 2019
Action from the World Cup, Asian Cup Joint Qualifiers match between Afghanistan and Bangladesh in Dushanbe Tuesday AFF
"The result is fine. They are a strong team and deserved the win. Of course there are lots of room for improvement. We should improve technically where we lacked behind them in the game. But we are on the right track. The team are improving day by day," said Salahuddin
Taking notes from the 4-0 defeat against Afghanistan in the Saff Championship four years ago, Tuesday's 1-0 defeat against the same team with a different group of players showed that Bangladesh still lag behind the Afghans technically, but the men in red and green have improved in terms of fitness and defence more than before.
Bangladesh Football Federation president and former legendary striker Kazi Salahuddin was content with the result but also stretched on where they need to improve.
"The result is fine. They are a strong team and deserved the win. Of course there are lots of room for improvement. We should improve technically where we lacked behind them in the game. But we are on the right track. The team are improving day by day," said Salahuddin.
Bangladesh began their 2022 World Cup and 2023 Asian Cup Joint Qualification Group E campaign with a 1-0 defeat against Afghanistan at the latter side's neutral home venue of Pamir Stadium in Tajikistan's capital Dushanbe Tuesdayhttps://t.co/hCj7m9v479#FOOTBALL #BFF #BANGLADESH
— Dhaka Tribune Sports (@Sport_DT) September 11, 2019
National team manager and also a former footballer, Satyajit Das Rupu was happy with how his team appeared in the second half with better stamina against a more physical side but admitted that Nabib Newaj Jibon could have scored a goal before being charged in the 93rd minute.
"They dominated ball possession in the first half but we didn't allow them spaces to create scoring chances except the goal. They looked a little bit tired in the second half where we were ahead of them in terms of fitness. We will be prepared to do better in the home matches," said Rupu after landing in Dhaka Wednesday.
While talking about the only goal in the game, former national team head coach Saiful Bari Titu said it could have been different had goalkeeper Ashraful Islam Rana tried to save the ball with a single hand instead of extending both.
"Bangladesh played good defensively but one moment of carelessness cost them the goal," said Titu, before adding, "Afghanistan are technically a far better team. They have better skilled players. The moment we won the ball the next we lost possession. We couldn't break their defence on the counter."
Afghanistan National Football team beats Bangladesh in the 2022 FIFA World Cup and 2023 AFC Asian Cup qualifiers in Tajikistan on Tuesday. pic.twitter.com/Gum95hpy3U
— ShamshadNews (@Shamshadnetwork) September 11, 2019
Titu added, "Overall, Bangladesh fought well against a side who are ahead of us in every aspect. We didn't allow them enough space. The four defenders played well, Jamal (Bhuiyan) and Sohel (Rana) worked hard in midfield but Biplu (Ahmed) seemed to be little bit off in attacking midfield. We could have involved more players during the counter attacks."
Former national captain Mamunul Islam was also in the team in 2015 but this time around, the midfielder watched the game from the bench.
He said, "Afghanistan are a far better team and they have top-class players, most of whom play in Europe. We played against them in the Saff Championship four years ago. They are as strong as before but we improved as a team."
Solskjaer: Man United are on right track despite Liverpool defeat
Robertson: Liverpool still not interested in title talk
Seychelles up against it in Palestine tie
Rafi ready to lead torn defence
Jamal eager to make impact against Burundi
Mbappe dreams of Champions League, Euro 2020 and Olympic treble
Kazi Salahuddin
Bangladesh Football
Afghanistan Football team
Qatar World Cup Qualifier

redpajama_set_name: RedPajamaCommonCrawl


text:
import React from 'react'
import './make.less'
import Upload from 'widget/upload/upload-react.js'
import Nav from 'react-bootstrap/lib/Nav'
import NavItem from 'react-bootstrap/lib/NavItem'
import Button from 'react-bootstrap/lib/Button'
import FormControl from 'react-bootstrap/lib/FormControl'
import Modal from 'react-bootstrap/lib/Modal'
import FormGroup from 'react-bootstrap/lib/FormGroup'
import Radio from 'react-bootstrap/lib/Radio'
import ControlLabel from 'react-bootstrap/lib/ControlLabel'
import Store from 'widget/store'
import Page from 'widget/page'
import msg from 'widget/msg'
import {getUrlParam} from 'xzs-util'
import PitModal from './pit-modal.js'

var {bannerStore} = Store

var id = getUrlParam('id')

//各种事件
var eventGroup = {
  changeGlobal(globalStyle){
    this.setState({globalStyle})
  },
  uploadBackgroundImage(result){
    var {globalStyle} = this.state
    globalStyle = Object.assign({},globalStyle)
    globalStyle.backgroundImage = result?`url(${result})`:'none'
    this.setState({globalStyle})
  },
  emptyBackgroundImage(){
    var {globalStyle} = this.state
    globalStyle = Object.assign({},globalStyle)
    globalStyle.backgroundImage = 'none'
    this.setState({globalStyle})
  },
  uploadBanner(result){
    var {banners} = this.state
    banners = Object.assign([],banners)
    banners.push(result)
    this.setState({banners})
    bannerStore.set(result)
  },
  // 右侧删除banner
  delectBanner(img){
    var {banners} = this.state
    this.setState({banners:banners.filter(image=>image!=img)})
    bannerStore.del(img)
  },
  // 拖拽右侧的banner
  dragBanner(e,img){
    e.dataTransfer.setData("item",JSON.stringify({type:'banner',img}))
  },
  // 拖拽右侧的坑位
  dragPit(e,pit){
    e.dataTransfer.setData('item',JSON.stringify({type:'pit',pit}))
  },
  // 拖放右侧东西到左侧的页面上
  dropPage(e){
    var item = e.dataTransfer.getData("item")
    if(item){
      var {list} = this.state
      list = Object.assign([],list)
      item = JSON.parse(item)

      //  拖放banner
      if(item.type === 'banner'){
        list.push(item)
        this.setState({bannerModal:true,bannerEditIndex:list.length-1})
      }
      // 拖放坑位 弹出对话框  要求输入商品id
      if(item.type === 'pit'){
        this.setState({pitModal:true,pitModalData:item.pit})
      }
      this.setState({list})
    }
  },
  // 添加坑位
  appendPit(e){
    var list = Object.assign([],this.state.list)
    var result = Object.assign({},e)
    result.type = 'pit'
    list.push(result)
    this.setState({list})
  },

  // 左侧删除banner
  deletePageBanner(index){
    this.setState({list:this.state.list.filter((item,idx)=>idx!==index)})
  },

  // 左侧修改坑位弹框
  editPagePit(data,index){
    this.setState({
      pitEditModal:true,
      pitEditModalData:data.data,
      pitEditIndex:index,
      pitEditGoodIds:data.goodIds
    })
  },
  // 左侧修改坑位
  editPit(e){
    var {pitEditIndex,list} = this.state
    var result = Object.assign({},e)
    list = Object.assign([],list)
    result.type = 'pit'
    list[pitEditIndex] = result
    this.setState({list})
  },

  // 右侧点击切换tab
  changeTab(tab){
    this.setState({tab})
  },

  // 上移模块
  upPanel(index){
    var list = Object.assign([],this.state.list)
    if(index<=0){ return }
    var flag = list[index-1]
    list[index-1] = list[index]
    list[index] = flag
    this.setState({list})
  },
  // 下移模块
  downPanel(index){
    var list = Object.assign([],this.state.list)
    if(index>=list.length-1){ return }
    var flag = list[index+1]
    list[index+1] = list[index]
    list[index] = flag
    this.setState({list})
  },

  //修改banner
  editBanner(index){
    this.setState({bannerModal:true,bannerEditIndex:index})
  },

  // 设置banner类型
  setBType(bType){
    var {list,bannerEditIndex} = this.state
    list = Object.assign([],list)
    list[bannerEditIndex].bType=bType
    this.setState({list})
  },
  setBSkuId(skuId){
    var {list,bannerEditIndex} = this.state
    list = Object.assign([],list)
    list[bannerEditIndex].skuId=skuId
    this.setState({list})
  },
  setBItemId(itemId){
    var {list,bannerEditIndex} = this.state
    list = Object.assign([],list)
    list[bannerEditIndex].itemId=itemId
    this.setState({list})
  },
  setBHref(href){
    var {list,bannerEditIndex} = this.state
    list = Object.assign([],list)
    list[bannerEditIndex].href=href
    this.setState({list})
  },
  // 提交页面
  submit(){
    var nameState = this.getValidationState()
    if(nameState === 'error'){
      return msg.show('请填写页面名称')
    }
    var {list,globalStyle,name,description} = this.state
    if(list.length === 0){
      return msg.show('页面没有内容')
    }
    if(!id){
      var promise = $.ajax('/api/page/create.json',{
        method:'post',
        data:{
          list,globalStyle,name,description
        }
      })
      promise.done(result=>{
        if(result.code === 1){
          var timeout = 1;
          msg.show(`添加页面成功,${timeout}秒后跳转`)
          window.setTimeout(()=>{
            window.location.href=`/make.html?id=${result.msg.insertId}`;
          },timeout*1000)
        }else{
          msg.show(result.msg)
        }
      })
    }else{
      var updatePromise = $.ajax('/api/page/update.json',{
        method:'post',
        data:{
          _id:id,list,globalStyle,name,description
        }
      })
      updatePromise.done(result=>{
        if(result.code === 1){
          msg.show('修改页面成功')
        }else{
          msg.show(result.msg)
        }
      })
    }
  },
  createHtml(){
    this.sendingCreateRequest = this.sendingCreateRequest || false
    if(this.sendingCreateRequest){
      return;
    }
    this.sendingCreateRequest = true
    var promise = $.ajax('/api/page/createHtml.json',{
      data:{_id:id},
      method:'post'
    })
    promise.done(result=>{
      if(result.code===1){
        msg.show('页面发布成功')
      }else{
        msg.show(result.msg)
      }
    })
    promise.always(()=>{
      this.sendingCreateRequest = false
    })
  },
  getValidationState(){
    var {name} = this.state
    if(name===''){
      return 'error'
    }
    return 'success'
  }

}

// 生命周期
var lifeGroup = {
  getInitialState(){
    return {
      tab:0,
      banners:[],
      pits:[],

      // 添加坑位
      pitModal:false,
      pitModalData:{},

      // 修改坑位
      pitEditModal:false,
      pitEditModalData:{},
      pitEditIndex:0,
      pitEditGoodIds:'',

      //修改banner
      bannerModal:false,
      bannerEditIndex:0,

      name:'',
      description:'',
      list:[],
      globalStyle:{
        "backgroundColor":'#000000',
        'backgroundImage':''
      }

    }
  },
  componentDidMount(){
    this.setState({banners:bannerStore.get()})

    // 获取坑位列表
    var promise = $.ajax('/api/pit/short.json')
    promise.done(result=>{
      if(result.code===1){
        this.setState({pits:result.msg})
      }
    })

    // 如果是修改  回填数据
    if(id){
      var detailPromise = $.ajax('/api/page/detail.json',{
        data:{_id:id}
      })
      detailPromise.done(result=>{
        if(result.code === 1){
          var {name,list,globalStyle,description} = result.msg
          this.setState({
            name,list,globalStyle,description
          })
        }
      })
    }

  },

  render(){

    var {
      globalStyle,tab,banners,list,pits,
      pitModal,pitModalData,
      pitEditModalData,pitEditModal,pitEditGoodIds,
      bannerModal,bannerEditIndex
    } = this.state

    var item = list[bannerEditIndex]

    return (

e.preventDefault()} onDrop={e=>this.dropPage(e)} style={globalStyle}>
              <Page
                list={list}
                onEdit={(data,index)=>this.editPagePit(data,index)}
                onDeleteBanner={e=>this.deletePageBanner(e)}
                onEditBanner={e=>this.editBanner(e)}
                onUp={e=>this.upPanel(e)}
                onDown={e=>this.downPanel(e)}
              />

          {this.changeTab(e)}}>
            <NavItem eventKey={0}>页面设置</NavItem>
            <NavItem eventKey={1}>banner设置</NavItem>
            <NavItem eventKey={2}>坑位设置</NavItem>

          {tab===0&&

            <form className="form-horizontal" role="form">
              <FormGroup
                validationState={this.getValidationState()}
              >
                页面名称

                  <FormControl
                    type="text"
                    value={this.state.name}
                    onChange={e=>!id&&this.setState({name:e.target.value.replace(/\s+/,'')})}
                    placeholder="页面名称,不可重名,禁空格,如czh20170605"
                  />
                  <FormControl.Feedback />

              </FormGroup>
              <FormGroup>
                页面标题

                  <FormControl
                    componentClass="textarea"
                    value={this.state.description||''}
                    onChange={e=>this.setState({description:e.target.value})}
                    placeholder="页面标题"
                  />

              </FormGroup>

                背景色

                  <input type="color" value={globalStyle.backgroundColor} onChange={e=>{this.changeGlobal({"backgroundColor":e.target.value})}} />

                背景图片

                  <Upload onUpload={e=>{this.uploadBackgroundImage(e)}}/>
                  {' '}
                  this.emptyBackgroundImage()} style={{"verticalAlign":"top","position":"relative","top":"3px"}}>删除背景图片

            </form>

}
          {tab===1&&

                <Upload placeholder="上传banner" onUpload={e=>{this.uploadBanner(e)}} />

                {banners.map(img=>(

                    {this.delectBanner(img)}}>x
                    this.dragBanner(e,img)} className="banner-img" src={img} />

                ))}

}
          {tab===2&&

              {pits.map(item=>(

                  模块名称 : {item.name}
                  this.dragPit(e,item)}/>

              ))}

}

        <PitModal
          pitModalData = {pitModalData}
          pitModal = {pitModal}
          onHide = {e=>this.setState({pitModal:false})}
          onSuccess = {e=>this.appendPit(e)}
        />
        <PitModal
          pitModalData = {pitEditModalData}
          pitModal = {pitEditModal}
          goodIds = {pitEditGoodIds}
          onHide = {e=>this.setState({pitEditModal:false})}
          onSuccess = {e=>this.editPit(e)}
        />
        <Modal show={bannerModal} onHide={e=>this.setState({bannerModal:false})}>
          <Modal.Header>
            <Modal.Title>banner设置</Modal.Title>
          </Modal.Header>
          <Modal.Body>
            {item&&item.type==='banner'&&(

                <FormGroup>
                  <Radio checked={item.bType==0} onChange={e=>this.setBType(0)} inline>无</Radio>
                  {' '}
                  <Radio checked={item.bType==1} onChange={e=>this.setBType(1)} inline>跳转app详情页</Radio>
                  {' '}
                  <Radio checked={item.bType==2} onChange={e=>this.setBType(2)} inline>跳转页面url</Radio>
                  {' '}
                  <Radio checked={item.bType==3} onChange={e=>this.setBType(3)} inline>回到顶部</Radio>
                </FormGroup>
                {item.bType==1&&(
                  <FormGroup>
                    <ControlLabel>sku-id</ControlLabel>
                    {' '}
                    <FormControl value={item.skuId||''} onChange={e=>this.setBSkuId(e.target.value)}/>

                    <ControlLabel>item-id</ControlLabel>
                    {' '}
                    <FormControl value={item.itemId||''} onChange={e=>this.setBItemId(e.target.value)}/>
                  </FormGroup>
                )}
                {item.bType==2&&(
                  <FormGroup>
                    <ControlLabel>url链接</ControlLabel>
                    {' '}
                    <FormControl value={item.href||''} onChange={e=>this.setBHref(e.target.value)}/>
                  </FormGroup>
                )}

            )}
          </Modal.Body>
          <Modal.Footer>
            <Button bsStyle="primary" onClick={e=>this.setState({bannerModal:false})}>确定</Button>
          </Modal.Footer>
        </Modal>

          <Button onClick={e=>this.submit(e)} bsStyle="primary">保存页面</Button>
          {' '}
          {id&&<Button onClick={e=>this.createHtml(e)} bsStyle='primary'>发布页面</Button>}

    )
  }
}

export default React.createClass(Object.assign({},eventGroup,lifeGroup))

redpajama_set_name: RedPajamaGithub


Enjoy your last Christmas goodies!
Cal is handing out the last festive gifts and rewards!
The Christmas bash at Casino Calzone is in its final stretch and Cal is getting even more generous the closer we are getting to Christmas Day. He has put up a daily calendar with all sorts of goodies we casino players love to get our hands one during the festive period. Log-in every day to find out what Cal has prepared for you.
Deposit minimum €50 in a single amount to instantly receive 15 mega spins on Secrets of Christmas. Offer can be claimed one time only. Spins need to be played before midnight. Winnings have a wagering condition of 35x within seve days and have a maximum withdrawal capped at €1,000 per batch of spins.
Deposit minimum €50 in a single amount to instantly receive 100 bonus spins on Secrets of Christmas. Offer can be claimed one time only. Spins need to be played before midnight. Winnings have a wagering condition of 35x within seve days and have a maximum withdrawal capped at €1,000 per batch of spins.
Launched in 2017, the casino is operated by MT SecureTrade Ltd. under MGA Malta and UKGC licenses. On offer are a large variety of games on desktop, mobile and tablet from Netent, Big Time Gaming, Blueprint Gaming, ELK Studios, igaming2go, JustForTheWin, Lightning Box, Microgaming, NextGen Gaming, NYX Interactive, Play'n GO, Pragmatic Play, Quickspin, Scientific Games, Thunderkick and Yggdrasil. The Live Casino tables are powered by Netent Live and Evolution Gaming.


text:
Q: Generating plot before end of program in python I am trying to plot elements of two arrays against each other. Whilst the plot works fine, it does not generate the image before asking whether the user wants to continue or not.
(this code is embedded in a while true loop).
    print 'To achieve the million pound goal using your betting strategy, you would have to spin the wheel approximately',averageiterations, 'times on average.'
    print 'The theoretical probability of you obtaining a million based on your betting strategy is: %9.7e' % p
    print 'The approximate average total amount of times that you ran out of money while using your betting strategy (went below the minimum bet) is:',len(fails)/1000.,', which rounds up to', int(math.ceil(len(fails)/1000.)),'.'

i=0
millions=[]
millionspins=[]
while i<1000:
    millions.append(allnewbank[:][i][-1])
    i=i+1
i=0
while i<1000:
    millionspins.append(len(allnewbank[:][i]))
    i=i+1
fig = plt.figure()
matplotlib.pyplot.scatter(millionspins,millions)
plt.xlabel("Number of spins")
plt.ylabel("Bank")
plt.xlim(0,max(millionspins))
plt.ylim(1000000,max(millions))
plt.show()
while restart not in exit:
        restart=raw_input('Please type "y" to restart or "n" to exit:')
    if restart==exit[0]:
            continue
    if restart==exit[1]:
        break

A: It would be good to see where the program is asking for user input.  I think what you're asking, though, is how to display a plot and continue with the program?  If so, you can simply disable matplotlib from blocking the program:
plt.show(block = False)

redpajama_set_name: RedPajamaStackExchange


text:
Джан Венсю  ( Zhāng Wén-xiù, 22 березня 1976) — китайська легкоатлетка, олімпійська медалістка.

Виступи на Олімпіадах

Посилання
 Досьє на sport.references.com

Китайські метальники молота
Легкоатлети на літніх Олімпійських іграх 2004
Легкоатлети на літніх Олімпійських іграх 2008
Легкоатлети на літніх Олімпійських іграх 2012
Легкоатлети на літніх Олімпійських іграх 2016
Срібні призери літніх Олімпійських ігор 2016
Бронзові призери літніх Олімпійських ігор 2008
Китайські срібні олімпійські медалісти
Китайські бронзові олімпійські медалісти
Уродженці Даляня
Чемпіони Азії з легкої атлетики
Чемпіони Азійських ігор з легкої атлетики

redpajama_set_name: RedPajamaWikipedia


Clocks go forward in the UK tonight -Which iOS versions will break?
Discussion in 'iPhone' started by rmwebs, Mar 26, 2011.
Ok, the clocks go on 1 hour at 2AM.
I know Apple have made a lot of unacceptable cockups with this one. Is it worth setting the old manual alarm clock? I'm on iOS 4.2.1 at the mo.
I'm setting a reoccurring and non-reoccurring alarm just incase.
I don't think mine went off. Then again it's possible i just overslept it.
iPhone 4/4.3.1 with a recurring alarm.
Both my manual and recurring one went off on time which was.....unexpected!
4.3 here in Switzerland no problems!
iOS 4.3.1 on an iPhone 4, my daily alarm failed to go off. It gave me an excuse to have an unplanned lie-in, at least!
I hav to be up at 01:15 Monday morning but can not set the alarm it keeps going to 02:15 wtf.


text:
Home Biafra Featured IPOB OHANAEZE NDI IGBO - RESTRUCTURING PART II
OHANAEZE NDI IGBO - RESTRUCTURING PART II
at 13:13:00 Biafra, Featured, IPOB,
BY: NGOZI EGORO (Abia writers)
Edited by Livingrich Ezeikpe
After the Northern elders and their elites dismissed the Ohanaeze Ndigbo on their bid for restructuring, in order to silence the IPOB, Ohanaeze plotted a genocide against unarmed youths at Umuahia. The issue of restructuring manifested again to conceal their crime against humanity since IPOB has exposed their wicked actions to the world.
It is quite apparent that economic survival is one of the objective realities in any people's life. No society has ever existed which did not have its own intrinsic economic values. The intrinsic value includes but not limited to; how to create wealth, how to store it, how to share it out and mode of transmitting it to the future generations. But the case in Nigeria is how to loot, how to fortify and enrich themselves and how to starve their generations.
By the amalgamation, discrete sub - nationalities were brought under the same colonial situation. There was contact shock. People looked and saw a different degree of socio-economic competition among ethnic groups which has continued unabated while some groups revel in the type of Competition they face.
Another catalyst that escalates socio-economic competition is insecurity, people are scared about the outcome of the competition with a high sense of feeling that it might put their people at a disadvantage. Therefore, they organize themselves in a way to enhance their competition for resources and positions. One can easily conclude that the lives of the masses are under severe threat. Hopes of many are being dashed as to the possibility of continuing under the present arrangement. The wounds cannot be healed.
The approach of Ohanaeze Ndigbo has made the generality of the people to loose confidence in them. Those that claimed to be the mirror with which the people see have turned round to connive with the killers of their youths. The level at which they handle vital issues and their people indicate that they have outlived their usefulness. The elders and elites instead of considering all the programs launched by the Nigerian government against their people are rather pegged in the same square with the Nigerian government and the system continued unabated. They eventually become the sacred cows, while the northern elders and elites are stepping on their toes and they are blindly dancing the unconventional music.
Virtually, in every part of southern Nigeria and the middle belt today, individuals from indigenous people are threatened by the activities of the Fulani sect. The situation has remained unchanged. The Northern elders and their elites have said it unequivocally, that nobody will step on their toes in the name of restructuring. The Ohanaeze opting for restructuring in order to maintain class or occupational identities will never resolve this unequivocal imbalance that has eaten deeply into the fabrics of the foundation and is almost on the verge of sudden collapse.
Biafra, Featured, IPOB


So property got damaged by water and you failed to have it insured against water destroy. You also cannot afford to hire the services of a water damage expert that means you decide to take care of all the drying and restoration processes yourself. Don't worry; you can handle genuinely as long as you follow these dos and don'ts of water damage handle.
V Dollars Codes Storm Secure Security 5 – Determine Your Storm Protect, glitch ps4 deutsch V Pounds Codes, dwell, livestream, time 4, skins, totally free vbucks, no cost vbucks, absolutely free v buck, absolutely free , fornite combat royale silenced smg, fornite doing the job hack, combat royale.
Absolutely free V Dollars Without having Study for this.
The major motives yourself created, the easy internet site support toward instill – it's good At the moment that we realize lots of individuals that will need toward fork out legitimate revenue in a different way.
totally free vbucks hack cheat vbucks hack attain endless vbucks vbucks hack hack vbucks vbucks hack apk Absolutely free V Pounds No Verification Computer Generator cheat motor Cost-free V Dollars No Verification Laptop Generator hack countless Hard cash through yourself in the direction of Web.
cost-free vbucks hack cheat vbucks hack obtain infinite vbucks vbucks hack hack vbucks vbucks hack apk Absolutely free V Pounds No Verification Personal computer Generator cheat motor Totally free V Pounds No Verification Laptop Generator hack limitless Hard cash by means of on your own in the.
bạn muốn chúng tôi tư vấn xây nhà trọ Việc này nên được bàn bạc với kiến trúc sư để được tư vấn và có những quyết định đúng đắn để tránh trường hợp lãng phí không gian, xây xong phải đập bỏ sửa lại, tiêu tốn chi phí.


text:
Pterinopsyllus stirpipes is een eenoogkreeftjessoort uit de familie van de Pterinopsyllidae. De wetenschappelijke naam van de soort is voor het eerst geldig gepubliceerd in 1996 door Humes.

Pterinopsyllidae


People often ask me if traveling with kids is worth it: will they remember it? Is it totally exhausting? Does it even slightly feel like a vacation? I asked my girls if I could share the gift they got for Christmas this year because I think it helps explain why I think travel is important and why it's fun too. They were so excited about the letter below and each of them have it tucked away in their jewelry box as they count down the days…..
This year a dream I had came true: to travel around Italy for month. I have visited many times since I studied there years ago, but always wanted to go back for a long period of time and most of all, with my children. I thought about waiting until your brothers were older, but in my heart, I knew you two were ready and you were at an age that I felt you would really enjoy all I wanted to show you. So we went.
Many people thought I was crazy and as the trip grew near, there were days I thought maybe they were right. But off we went on our big adventure. Our trip was better than I could have ever imagined. This was because of you two.
You girls were brave: Just one day after school got out you stepped onto the plane, off to a new country. You knew you'd be leaving your house and friends for half the summer. You were nothing but excited. You tried new things throughout the trip with real bravery. I remember watching you walk down that pier to the very end and jump off into the deep sea and thought "wow these girls are brave". You tried kids clubs, new games, new foods, etc all in a foreign country. You did it without hesitation (well there was a little hesitation with the pesto ha!).
You girls were smart: You tried your best to speak a new language. You put words together to make a friend or order gelato. You tried reading maps, you listened on tours and asked important questions.
You girls were helpful: You both were more helpful than I could have ever expected. You helped as we navigated trains, planes and buses with a months worth of luggage. Speaking of luggage you each carried your own on your back. You were always in charge of one little brother and even pushed their strollers sometimes. You helped make the trip happen so smoothly and of course: helped it to be so fun.
You girls were inspiring: No matter where we went, you made a friend. Some spoke Italian, some Swedish and those that spoke English were still from a very different place in the world (Australia). Your kindness and curiosity was inspiring. One night, while I ate dinner, I watched you two coordinate a game of tag with your little brothers, 2 kids from Finland and 2 from Italy. It wasn't easy because no one spoke a common language but you were determined to include everyone. I hope you are always this accepting of people from around the world. I could tell that you really appreciated visiting all of the different places we went because you were always excited about where we were off to and didn't complain. You couldn't wait to see a new city, new apartment, etc. It was inspiring and wonderful to watch.
Traveling with you is important to me. It's something I enjoy and something that I want to always do as a family. You know it's not always easy – you're there when I lose my cool and get frustrated. You've seen us miss trains and get lost. But even the tough and tricky times when we travel are important, because we're on the adventure as a family and we figure it out together. We get to see new things all together and most important of all: we have a lot of fun.
So where's our next adventure?
In just 6 weeks, we'll take off on a flight across the ocean.
We'll leave our muggle selves behind for a visit to Platform 9 ¾ and an afternoon potions lesson.
When we're ready for a break from wizardry we'll move on to royalty and enjoy time visiting palaces and sipping tea.
Have you guessed yet? This February we're taking a girls' trip to London!
Merry Christmas to my very best travel pals!
I cannot wait to follow along!!! We used all your recommendations from your trip when the girls were little when I went with G. Such a great adventure for them now.


text:
Courses with Phil Ambrose
Captain, hazardous materials specialist, and paramedic for a Type 1 hazmat squad in Southern California and the founder of HazMatNation.com
PHIL AMBROSE is a captain, hazardous materials specialist, and paramedic for a Type 1 hazmat squad in Southern California and the founder of HazMatNation.com. He has a B.S. in mechanical engineering from Loyola Marymount University and trains first responders across the country using his patented hazardous materials simulation meter, the HazSim Pro.
The latest tactics, techniques and technologies designed to take your knowledge to the next level.
The Fire Academy is an all NEW year-round interactive digital platform that brings you training from industry leaders in order for you to continue supporting your efforts in the communities you serve. The content will discuss key themes around topics including: Safety, Leadership/Management, Company Officer, and many more. With a collaborative backing of FDIC International and Fire Engineering, you won't want to miss out on this training – all at your fingertips.
The Clarion Events Fire & Rescue Group provides critical cutting-edge firefighting and emergency medical service news, education, equipment and hands-on training. Through our industry-leading publications, digital media and events Clarion's Fire & Rescue Group covers the latest developments and standards in apparatus and equipment, clinical breakthroughs, and training for firefighters, EMTs, paramedics and those professionals serving in the Fire & EMS Industries. We at Clarion Fire & Rescue hold ourselves to the strictest of standards, ensuring that our service to the first responders equals the industry's tireless service to us all while maintaining our long-standing mission to "Train and Inform the Fire & EMS Industry."
© 2022 Clarion Events Fire & Rescue Group | Privacy Policy
Waterous
Fire Drills
Firefighter 1 & 2
Designed by Divi Ultimate - Divi Child Theme


You have associated a new launch configuration to your Auto Scaling Group (ASG) which runs a fleet of EC2 instances. The new launch configuration changes monitoring from detailed to basic. There are a couple of CloudWatch alarms configured on the ASG which monitor every 60 seconds. There is a mismatch in frequency of metric reporting between these configuration settings, what will be the result?
When using the MySQL database with AWS RDS, features such as Point-In-Time restore and snapshot restore require a recoverable storage engine. Which storage engine must be used to enable these features?
One of your clients is transitioning their web presence into the AWS cloud. As part of the migration the client will be running a web application both on-premises and in AWS for a period of time. During the period of co-existence the client would like 80% of the traffic to hit the AWS-based web servers and 20% to be directed to the on-premises web servers.
What method can you use to distribute traffic as requested?
A Solutions Architect is designing the system monitoring and deployment layers of a serverless application. The system monitoring layer will manage system visibility through recording logs and metrics and the deployment layer will deploy the application stack and manage workload changes through a release management process.
You need to setup a distribution method for some static files. The requests will be mainly GET requests and you are expecting a high volume of GETs often exceeding 2000 per second. The files are currently stored in an S3 bucket. According to AWS best practices, what can you do to optimize performance?
Your company has started using the AWS CloudHSM for secure key storage. A recent administrative error resulted in the loss of credentials to access the CloudHSM. You need access to data that was encrypted using keys stored on the hardware security module. How can you recover the keys that are no longer accessible?
You have implemented the AWS Elastic File System (EFS) to store data that will be accessed by a large number of EC2 instances. The data is sensitive and you are working on a design for implementing security measures to protect the data. You need to ensure that network traffic is restricted correctly based on firewall rules and access from hosts is restricted by user or group.
You have recently enabled Access Logs on your Application Load Balancer (ALB). One of your colleagues would like to process the log files using a hosted Hadoop service. What configuration changes and services can be leveraged to deliver this requirement?
You are designing the disk configuration for an EC2 instance. The instance needs to support a MapReduce process that requires high throughput for a large dataset with large I/O sizes. You need to provision the most cost-effective storage solution option.
What EBS volume type will you select?
An EC2 instance you manage is generating very high packets-per-second and performance of the application stack is being impacted. You have been asked for a resolution to the issue that results in improved performance from the EC2 instance. What would you suggest?
A web application you manage receives order processing information from customers and places the messages on an SQS queue. A fleet of EC2 instances are configured to pick up the messages, process them, and store the results in a DynamoDB table. The current configuration has been resulting in a large number of empty responses to ReceiveMessage requests. You would like to update the configuration to eliminate empty responses to reduce operational overhead. How can this be done?
You are running an Auto Scaling Group (ASG) with an Elastic Load Balancer (ELB) and a fleet of EC2 instances. Health checks are configured on the ASG to use EC2 status checks The ELB has determined that an EC2 instance is unhealthy and has removed it from service. However, you noticed that the instance is still running and has not been terminated by the ASG. What would be an explanation for this?
Your company runs a web-based application that uses EC2 instances for the web front-end and RDS for the database back-end. The web application writes transaction log files to an S3 bucket and the quantity of files is becoming quite large. You have determined that it is acceptable to retain the most recent 60 days of log files and permanently delete the rest. What can you do to enable this to happen automatically?
A DynamoDB table you manage has a variable load, ranging from sustained heavy usage some days, to only having small spikes on others. The load is 80% read and 20% write. The provisioned throughput capacity has been configured to account for the heavy load to ensure throttling does not occur.
You have been asked to find a solution for saving cost. What would be the most efficient and cost-effective solution?
What would you recommend as the most efficient solution?
An organization in the agriculture sector is deploying sensors and smart devices around factory plants and fields. The devices will collect information and send it to cloud applications running on AWS.
Which AWS service will securely connect the devices to the cloud applications?
A development team needs to run up a few lab servers on a weekend for a new project. The servers will need to run uninterrupted for a few hours. Which EC2 pricing option would be most suitable?
You are putting together an architecture for a new VPC on AWS. Your on-premise data center will be connected to the VPC by a hardware VPN and has public and VPN-only subnets. The security team has requested that all traffic that hits the public subnets on AWS must be directed over the VPN to the corporate firewall. How can this be achieved?
One of your clients has requested advice on the correct choice of Elastic Load Balancer (ELB) for an application they are planning to deploy on AWS. The application requires extremely high throughput and extremely low latencies. The connections will be made using the TCP protocol and the ELB must support load balancing to multiple ports on an instance. Which ELB would you suggest the client uses?
In your VPC you have several EC2 instances that have been running for some time. You have logged into an instance and need to determine a few pieces of information including what IAM role is assigned, the instance ID and the names of the security groups that are assigned to the instance.
From the options below, what would be a source of this information?
The application development team in your company have developed a Java application and saved the source code in a .war file. They would like to run the application on AWS resources and are looking for a service that can handle the provisioning and management of the underlying resources it will run on.
What AWS service would allow the developers to upload the Java source code file and provide capacity provisioning and infrastructure management?
A development team are creating a Continuous Integration and Continuous Delivery (CI/CD) toolchain on the AWS cloud. The team currently use Jenkins X and Kubernetes on-premise and are looking to utilize the same services in the AWS cloud.
What AWS service can provide a managed container platform that is MOST similar to their current CI/CD toolchain?
You are a Solutions Architect at Digital Cloud Training. One of your clients has requested some advice on how to implement security measures in their VPC. The client has recently been the victim of some hacking attempts. Fortunately, no data has been exposed at this point but the client wants to implement measures to mitigate further threats. The client has explained that the attacks always come from the same small block of IP addresses.
What would be a quick and easy measure to help prevent further attacks?
A company is investigating ways to analyze and process large amounts of data in the cloud faster, without needing to load or transform the data in a data warehouse. The data resides in Amazon S3.
One of you clients has asked for assistance with a performance issue they are experiencing. The client has a fleet of EC2 instances behind an Elastic Load Balancer (ELB) that are a mixture of c4.2xlarge instance types and c5.large instances. The load on the CPUs on the c5.large instances has been very high, often hitting 100% utilization, whereas the c4.2xlarge instances have been performing well. The client has asked for advice on the most cost effective way to resolve the performance problems?
A company is deploying a new two-tier web application that uses EC2 web servers and a DynamoDB database backend. An Internet facing ELB distributes connections between the web servers.
You launched an EBS-backed EC2 instance into your VPC. A requirement has come up for some high-performance ephemeral storage and so you would like to add an instance-store backed volume. How can you add the new instance store volume?
You are planning to launch a fleet of EC2 instances running Linux. As part of the launch you would like to install some application development frameworks and custom software onto the instances. The installation will be initiated using some scripts you have written. What feature allows you to specify the scripts so you can install the software during the EC2 instance launch?
One of your clients has multiple VPCs that are peered with each other. The client would like to use a single Elastic Load Balancer (ELB) to route traffic to multiple EC2 instances in peered VPCs within the same region. Is this possible?
One of the applications you manage receives a high traffic loads between 7:30am and 9:30am daily. The application uses an Auto Scaling Group (ASG) to maintain 3 EC2 instances most of the time but during the peak period requires 6 EC2 instances. How can you configure ASG to perform a regular scale-out event at 7:30am and a scale-in event at 9:30am daily to account for the peak load?
An application is generating a large amount of clickstream events data that is being stored on S3. The business needs to understand customer behaviour and want to run complex analytics queries against the data.
Which AWS service can be used for this requirement?
One of your EC2 instances that is behind an Elastic Load Balancer (ELB) is in the process of being de-registered. Which ELB feature can be used to allow existing connections to close cleanly?
You are a Solutions Architect at Digital Cloud Training. A large multi-national client has requested a design for a multi-region database. The master database will be in the EU (Frankfurt) region and databases will be located in 4 other regions to service local read traffic. The database should be a fully managed service including the replication.
Which AWS service can deliver these requirements?
You work as an Enterprise Architect for a global organization which employs 20,000 people. The company is growing at around 5% per annum. The company strategy is to increasingly adopt AWS cloud services. There is an existing Microsoft Active Directory (AD) service that is used as the on-premise identity and access management system. You want to enable users to authenticate using their existing identities and access AWS resources (including the AWS Management Console) using single sign-on (SSO).
What is the simplest way to enable SSO to the AWS management console using the existing domain?
You are creating a CloudFormation Stack that will create EC2 instances that will record log files to an S3 bucket. When creating the template which optional section is used to return the name of the S3 bucket?
You need to upload a large (2GB) file to an S3 bucket. What is the recommended way to upload a single large file to an S3 bucket?
You need to run a production process that will use several EC2 instances and run constantly on an ongoing basis. The process cannot be interrupted or restarted without issue. Which EC2 pricing model would be best for this workload?
You are using a series of Spot instances that process messages from an SQS queue and store results in a DynamoDB table. Shortly after picking up a message from the queue AWS terminated the Spot instance. The Spot instance had not finished processing the message. What will happen to the message?
You are trying to SSH into an EC2 instance running Linux but cannot connect. The EC2 instance has been launched in a public subnet with an Internet Gateway. Upon investigation you have verified that the instance has a public IP address and that the route table does reference the Internet Gateway correctly. What else needs to be checked to enable connectivity?


British car magazine Autocar believes the perfect sports car exists, at least on paper and in pictures. Fortunately, the magazine has created this and according to Editor-at-Large Steve Sutcliffe, it can be described as the following: An open-top two-seater with a mid-engine layout, rear-wheel-drive, weighs less than 2,204 pounds, and has a base price of around $56,000 (£35,000).
We're also digging this concept and fully agree with Sutcliffe in that "as the world of cars gets ever more complex and produces machines that are increasingly sophisticated in their design and engineering, there's still a desire for something at the other end of the scale. A sports car that's simple to understand and interact with." Although they could have chosen a better name (British Sportscar 1, or BS1) Sutcliffe goes further by saying it should offer the performance and driver appeal of cars that normally cost double. Specifically, there needs to be lots of torque, a paddle shift gearbox, and no ESP.
It should also look "low, wide, mean, and beautiful." Ideally, it would have a space frame chassis made from aluminum and steel and body panels made from glass fiber-reinforced plastic and carbon fiber. The mid-mounted engine would be a VW 3.0-liter V6 turbodiesel that produces 250hp and 350 lb-ft of torque. 0 to 62 mph would take no longer than 4.5 seconds and top speed should be 147 mph. it would return roughly 50 mpg. Overall, we like what we're reading here, but we're not wild about a diesel being the choice engine.


text:
Q: Bem naming underscore, hyphen or camelcase in element names I have an element call "user nav"
Currently I have
.header__user-nav

With a modifier
.header__user-nav--active

Is it better to use single underscores for element names
  .header__user_nav--active

or hyphens
  .header__user-nav--active

or camelcase
  .header__userNav--active

A: Actually it is just a matter of taste. See https://en.bem.info/methodology/naming-convention/#alternative-naming-schemes


text:
COVID-19 Is a Serious Threat … But So Are Memes Claiming It's NOT
The story of a Texas woman who reportedly shared a Facebook post claiming the coronavirus outbreak was a hoax — and later reportedly died from the virus — reminds us of the dangerous potential of misinformation.
Image via John Nacion/NurPhoto via Getty Images
Snopes is still fighting an "infodemic" of rumors and misinformation surrounding the COVID-19 pandemic, and you can help. Find out what we've learned and how to inoculate yourself against COVID-19 misinformation. Read the latest fact checks about the vaccines. Submit any questionable rumors and "advice" you encounter. Become a Founding Member to help us hire more fact-checkers. And, please, follow the CDC or WHO for guidance on protecting your community from the disease.
As a new strain of coronavirus spread around the globe in 2020, a steady stream of misinformation spread on the internet. While we've encountered a number of far-fetched conspiracy theories, ranging from the idea that this virus was a "man-made bioweapon" (false) to the claim that this disease was being spread by 5G cellular towers (also false), the most dangerous piece of misinformation was far more simple: that COVID-19 was no more dangerous than the flu and this "pandemic" was being overhyped by the media.
No single source exists for this dangerous and untrue rumor. While one could point the finger at any number of parties for downplaying the seriousness of the COVID-19 pandemic, the fact remains that a large portion of Americans didn't see our current situation as much of a threat in the first few months of 2020. A Pew Research poll taken between March 19 and March 24 found that only 36% of Americans (41% of Democrats, 30% of Republicans) determined the pandemic to be a major threat to their personal health.
At the same time this poll was being taken, New York declared a statewide shelter-in-place order, the 2020 Olympics were officially delayed, non-medical companies started to manufacture ventilators and masks, and the United States confirmed its 50,000th reported case of COVID-19. Despite these society-changing events, the vast majority of Americans did not see this disease as a threat to their personal health.
Why? It may have to do with viral misinformation that repeatedly told them there was nothing to worry about. For instance, on March 13, a few days before this poll was taken and, coincidentally, the same day U.S. President Donald Trump declared a national emergency, a chain message started to circulate on Facebook that insisted the pandemic was nothing more than a media creation:
There's nothing particularly unique about the above-displayed Facebook message. Since the COVID-19 outbreak began, we've covered dozens of Facebook posts making similar claims. While these posts made a wide range of assertions (from bogus health cures to accusations of bio-terrorism), they all flirted with the idea that this disease was a hoax and that health officials and the media were not telling people the truth.
This particular piece of misinformation received extra attention, however, because it was shared on the Facebook page of a woman who reportedly died from complications related to COVID-19.
In April 2020, screenshots showing this post on Karen Kolb Sehlke's Facebook page, as well as screenshots showing a GoFundMe page set up for Sehlke and her family after she entered the hospital, went viral on social media:
March 14th: *posted COVID-19 hoax, anti-socialism rant on FB*
April 2nd: *died of COVID-19, family asking for GoFundMe donations*
I post this not to mock Karen Kolb Sehlke's death, but to underscore the tragic risk one takes when taking this pandemic for granted. #RIP #StaySafe pic.twitter.com/MAKYAYVyGx
— Sunn m'Cheaux (@sunnmcheaux) April 4, 2020
While Twitter user Sunn m'Cheaux wrote that he posted those screenshots "not to mock Karen Kolb Sehlke's death, but to underscore the tragic risk one takes when taking this pandemic for granted," other social media users weren't so reserved. Sehlke's Facebook page, as well as her husband's, were bombarded with less-than-sympathetic messages that more or less claimed Sehlke got what she deserved.
When family members removed these posts, a new conspiracy sprung up holding that this woman never existed, and that this story was just Russian disinformation. The GoFundMe page was also edited to remove mentions of the coronavirus, which cast even more doubt on this incident.
But Sehlke was a real person. We found messages from her friends and family mourning her loss shortly after she passed away. While we can't say for certain that her death was related to COVID-19, an early update to her GoFundMe page did claim she had tested positive for the disease. In addition to multiple screenshots of this comment, we captured a cached version of this update via Google.
We also know for certain that Sehlke did not write the viral piece of misinformation posted to her Facebook page and displayed at the beginning of this article. While we don't yet know who penned the missive, the post is the earliest version we could find and was shared more than 20,000 times. And the text was online at least a day before it appeared on Sehlke's Facebook page.
At the time of this writing, the U.S. had more than 375,000 cases of COVID-19, resulting in more than 11,000 deaths, and nearly 10 million people have filed for unemployment as a result of shelter-in-place orders aimed at slowing the spread of the disease. In other words, this disease is not a hoax and this disease does not care about your political affiliation.
As the United States and the rest of the world continue to battle the COVID-19 pandemic, it is more important than ever to turn to trusted sources for information about the disease. Readers can get more information about COVID-19 from the World Health Organization and the Centers for Disease Control and Prevention. If you have a question about the coronavirus (or if you've encountered a piece of misinformation that you'd like to see debunked), please let us know. You can also see all of the COVID-19 related rumors that we've addressed here.
Hogan, Bernadette; Marsh, Julia; Hicks, Nolan. "Coronavirus in NY: Cuomo Orders Lockdown, Shuts Down Non-Essential Businesses."
New York Post. 20 March 2020.
Robson, David. "Why Smart People Believe Coronavirus Myths,"
BBC News. 6 April 2020.
Van Green, Ted and Alec Tyson. "5 facts about partisan reactions to COVID-19 in the U.S."
Pew Research Center. 2 April 2020.
Feuer, William. "US Coronavirus Cases Surge Tenfold in a Week to 50,000, Global Infections Soar Past 400,000."
CNBC. 24 March 2020.
Schneider, Avie. "Staggering: Record 10 Million File For Unemployment In 2 Weeks."
NPR. 2 April 2020.