\begin{tikzpicture}
	\input{src/tikz/alsk}

	%{{{ GRASP "
	% Nodes
	\matrix[row sep=3mm, column sep=-1mm] {
		& \node[alsk/scheme/split] (split) {}; \\
		\\
		\node[alsk/scheme/task] (ch0) {CH}; & \node[alsk/label] (chi) {\bf\scriptsize\dots}; &
		\node[alsk/scheme/task] (chn) {CH}; \\
		\node[alsk/scheme/task] (ls0) {LS}; & \node[alsk/label] (lsi) {\bf\scriptsize\dots}; &
		\node[alsk/scheme/task] (lsn) {LS}; \\
		\\
		& \node[alsk/scheme/join] (merge) {}; \\
		& \node[alsk/scheme/task] (select) {S}; \\
	};

	\node[above=3mm of split] (entry) {};
	\node[below=3mm of select] (return) {};

	% Frames
	\node[alsk/scheme/frame=colStruct,fit margins={top=1.5mm,bottom=1.5mm},
	fit=(ch0)(ls0),only on=<3>{ultra thick},only on=<3>{solid,common/drawfill=colMuscle},
	only on=<4>{ultra thick}] (serial0) {\only<3>{T}};
	\node[alsk/scheme/frame=colStruct,fit margins={top=1.5mm,bottom=1.5mm},
	fit=(chn)(lsn),only on=<3>{ultra thick},only on=<3>{solid,common/drawfill=colMuscle},
	only on=<4>{ultra thick}] (serialn) {\only<3>{T}};

	\node[alsk/scheme/frame=colStruct,fit margins={top=1.5mm,bottom=1.5mm},
	fit=(split)(select)(serial0)(serialn),only on=<1>{ultra thick}] (grasp) {};

	% Links
	\begin{scope}[alsk/scheme/link]
		\draw (entry) -- (split);

		\draw (split.210) -- (serial0.north);
		\draw (split.330) -- (serialn.north);

		\visible<-2,4->{
			\draw (serial0.north) -- (ch0);
			\draw (serialn.north) -- (chn);

			\draw (ch0) -- (ls0);
			\draw (chn) -- (lsn);

			\draw (ls0) -- (serial0.south);
			\draw (lsn) -- (serialn.south);
		}

		\draw (serial0.south) -- (merge.150);
		\draw (serialn.south) -- (merge.30);

		\draw (merge) -- (select);

		\draw (select) -- (return);
	\end{scope}
	%}}}

	%{{{ animations "
	\visible<2>{
		\node[alsk/scheme/split,ultra thick] at (split) {};
		\node[alsk/scheme/join,ultra thick] at (merge) {};
	}
	\visible<3>{
		\node[alsk/scheme/task,ultra thick] at (select) {S};
	}
	\visible<5>{
		\node[alsk/scheme/task,ultra thick] at (ch0) {CH};
		\node[alsk/scheme/task,ultra thick] at (chn) {CH};
		\node[alsk/scheme/task,ultra thick] at (ls0) {LS};
		\node[alsk/scheme/task,ultra thick] at (lsn) {LS};
	}
	%}}}
	%}}}
\end{tikzpicture}
