Permalink
Browse files

Added ability to pass host to JSONAMQPDispatcher

  • Loading branch information...
leithaus committed May 7, 2010
1 parent cac5947 commit 3a7e13899f75afb34bd2d9b89fe41b47369833b0
@@ -1,6 +1,6 @@
\relax
\@setckpt{bibliography/monadic}{
-\setcounter{page}{101}
+\setcounter{page}{103}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
@@ -1,22 +1,22 @@
\relax
-\@writefile{toc}{\contentsline {chapter}{\numberline {8}Domain model, storage and state}{85}{chapter.8}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {8}Domain model, storage and state}{87}{chapter.8}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
-\@writefile{toc}{\contentsline {section}{\numberline {8.1}Mapping our domain model to storage}{85}{section.8.1}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.1}Functional and relational models}{85}{subsection.8.1.1}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.2}Functional and XML models}{85}{subsection.8.1.2}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.3}ORM}{85}{subsection.8.1.3}}
-\@writefile{toc}{\contentsline {section}{\numberline {8.2}Storage and language-integrated query}{85}{section.8.2}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {8.2.1}LINQ and \lstinline [language=Scala]!for!-comprehensions}{85}{subsection.8.2.1}}
-\@writefile{toc}{\contentsline {subsubsection}{Open source implementations}{85}{section*.56}}
-\@writefile{toc}{\contentsline {paragraph}{ScalaQuery}{85}{section*.57}}
-\@writefile{toc}{\contentsline {paragraph}{Squeryl}{85}{section*.58}}
-\@writefile{lof}{\contentsline {figure}{\numberline {8.1}{\ignorespaces Chapter map }}{86}{figure.8.1}}
-\@writefile{toc}{\contentsline {section}{\numberline {8.3}Continuations revisited}{86}{section.8.3}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {8.3.1}Stored state}{86}{subsection.8.3.1}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {8.3.2}Transactions}{86}{subsection.8.3.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {8.1}Mapping our domain model to storage}{87}{section.8.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.1}Functional and relational models}{87}{subsection.8.1.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.2}Functional and XML models}{87}{subsection.8.1.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.1.3}ORM}{87}{subsection.8.1.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {8.2}Storage and language-integrated query}{87}{section.8.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.2.1}LINQ and \lstinline [language=Scala]!for!-comprehensions}{87}{subsection.8.2.1}}
+\@writefile{toc}{\contentsline {subsubsection}{Open source implementations}{87}{section*.56}}
+\@writefile{toc}{\contentsline {paragraph}{ScalaQuery}{87}{section*.57}}
+\@writefile{toc}{\contentsline {paragraph}{Squeryl}{87}{section*.58}}
+\@writefile{lof}{\contentsline {figure}{\numberline {8.1}{\ignorespaces Chapter map }}{88}{figure.8.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {8.3}Continuations revisited}{88}{section.8.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.3.1}Stored state}{88}{subsection.8.3.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {8.3.2}Transactions}{88}{subsection.8.3.2}}
\@setckpt{chapters/eight/ch}{
-\setcounter{page}{87}
+\setcounter{page}{89}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
@@ -1,14 +1,14 @@
\relax
-\@writefile{toc}{\contentsline {chapter}{\numberline {9}Putting it all together}{87}{chapter.9}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {9}Putting it all together}{89}{chapter.9}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
-\@writefile{toc}{\contentsline {section}{\numberline {9.1}Our web application end-to-end}{87}{section.9.1}}
-\@writefile{toc}{\contentsline {section}{\numberline {9.2}Deploying our application}{87}{section.9.2}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {9.2.1}Why we are not deploying on GAE}{87}{subsection.9.2.1}}
-\@writefile{toc}{\contentsline {section}{\numberline {9.3}From one web application to web framework}{87}{section.9.3}}
-\@writefile{lof}{\contentsline {figure}{\numberline {9.1}{\ignorespaces Chapter map }}{88}{figure.9.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {9.1}Our web application end-to-end}{89}{section.9.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {9.2}Deploying our application}{89}{section.9.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {9.2.1}Why we are not deploying on GAE}{89}{subsection.9.2.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {9.3}From one web application to web framework}{89}{section.9.3}}
+\@writefile{lof}{\contentsline {figure}{\numberline {9.1}{\ignorespaces Chapter map }}{90}{figure.9.1}}
\@setckpt{chapters/nine/ch}{
-\setcounter{page}{89}
+\setcounter{page}{91}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
@@ -1,34 +1,34 @@
\relax
-\@writefile{toc}{\contentsline {chapter}{\numberline {7}A review of collections as monads}{77}{chapter.7}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {7}A review of collections as monads}{79}{chapter.7}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
-\@writefile{toc}{\contentsline {section}{\numberline {7.1}Sets, Lists and Languages}{77}{section.7.1}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {7.1.1}Witnessing Sets and Lists monadicity}{77}{subsection.7.1.1}}
-\@writefile{lof}{\contentsline {figure}{\numberline {7.1}{\ignorespaces Chapter map }}{78}{figure.7.1}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {7.1.2}Languages and Sets of Words}{82}{subsection.7.1.2}}
-\@writefile{toc}{\contentsline {subsubsection}{Kleene star}{82}{section*.51}}
-\@writefile{toc}{\contentsline {subsubsection}{I am not a number, I am a free monoid}{82}{section*.52}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {7.1.3}Of lenses and bananas}{82}{subsection.7.1.3}}
-\@writefile{toc}{\contentsline {section}{\numberline {7.2}Containers and syntax}{82}{section.7.2}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {7.2.1}The algebra of Sets}{82}{subsection.7.2.1}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {7.2.2}The algebra of Lists}{82}{subsection.7.2.2}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {7.2.3}The algebra of Sets of Words}{83}{subsection.7.2.3}}
-\@writefile{toc}{\contentsline {section}{\numberline {7.3}Algebras}{83}{section.7.3}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.1}Kleisli}{83}{subsection.7.3.1}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.2}Eilenberg-Moore}{83}{subsection.7.3.2}}
-\@writefile{toc}{\contentsline {section}{\numberline {7.4}Monad as container}{83}{section.7.4}}
-\@writefile{toc}{\contentsline {section}{\numberline {7.5}Monads and take-out}{83}{section.7.5}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {7.5.1}Option as container}{84}{subsection.7.5.1}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {7.5.2}I/O monad for contrast}{84}{subsection.7.5.2}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {7.5.3}Matching gazintas and gazoutas}{84}{subsection.7.5.3}}
-\@writefile{toc}{\contentsline {subsubsection}{Intuitionistic discipline}{84}{section*.54}}
-\@writefile{toc}{\contentsline {subsubsection}{Linear discipline}{84}{section*.55}}
-\@writefile{toc}{\contentsline {section}{\numberline {7.6}Co-monad and take-out}{84}{section.7.6}}
-\@writefile{toc}{\contentsline {section}{\numberline {7.7}Hopf structure}{84}{section.7.7}}
-\@writefile{toc}{\contentsline {section}{\numberline {7.8}Container and control}{84}{section.7.8}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {7.8.1}Delimited continuations reconsidered}{84}{subsection.7.8.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {7.1}Sets, Lists and Languages}{79}{section.7.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.1.1}Witnessing Sets and Lists monadicity}{79}{subsection.7.1.1}}
+\@writefile{lof}{\contentsline {figure}{\numberline {7.1}{\ignorespaces Chapter map }}{80}{figure.7.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.1.2}Languages and Sets of Words}{84}{subsection.7.1.2}}
+\@writefile{toc}{\contentsline {subsubsection}{Kleene star}{84}{section*.51}}
+\@writefile{toc}{\contentsline {subsubsection}{I am not a number, I am a free monoid}{84}{section*.52}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.1.3}Of lenses and bananas}{84}{subsection.7.1.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {7.2}Containers and syntax}{84}{section.7.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.2.1}The algebra of Sets}{84}{subsection.7.2.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.2.2}The algebra of Lists}{84}{subsection.7.2.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.2.3}The algebra of Sets of Words}{85}{subsection.7.2.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {7.3}Algebras}{85}{section.7.3}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.1}Kleisli}{85}{subsection.7.3.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.3.2}Eilenberg-Moore}{85}{subsection.7.3.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {7.4}Monad as container}{85}{section.7.4}}
+\@writefile{toc}{\contentsline {section}{\numberline {7.5}Monads and take-out}{85}{section.7.5}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.5.1}Option as container}{86}{subsection.7.5.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.5.2}I/O monad for contrast}{86}{subsection.7.5.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.5.3}Matching gazintas and gazoutas}{86}{subsection.7.5.3}}
+\@writefile{toc}{\contentsline {subsubsection}{Intuitionistic discipline}{86}{section*.54}}
+\@writefile{toc}{\contentsline {subsubsection}{Linear discipline}{86}{section*.55}}
+\@writefile{toc}{\contentsline {section}{\numberline {7.6}Co-monad and take-out}{86}{section.7.6}}
+\@writefile{toc}{\contentsline {section}{\numberline {7.7}Hopf structure}{86}{section.7.7}}
+\@writefile{toc}{\contentsline {section}{\numberline {7.8}Container and control}{86}{section.7.8}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {7.8.1}Delimited continuations reconsidered}{86}{subsection.7.8.1}}
\@setckpt{chapters/seven/ch}{
-\setcounter{page}{85}
+\setcounter{page}{87}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
@@ -15,15 +15,19 @@
\@writefile{toc}{\contentsline {subsection}{\numberline {6.4.1}Delimited continuations}{70}{subsection.6.4.1}}
\@writefile{toc}{\contentsline {section}{\numberline {6.5}Species of Structure}{70}{section.6.5}}
\@writefile{toc}{\contentsline {section}{\numberline {6.6}Constructing contexts and zippers from data types}{70}{section.6.6}}
-\@writefile{toc}{\contentsline {section}{\numberline {6.7}Mapping URIs to zipper-based paths and back}{75}{section.6.7}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {6.7.1}Path and context}{75}{subsection.6.7.1}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {6.7.2}Homomorphisms and obfuscation}{75}{subsection.6.7.2}}
-\@writefile{toc}{\contentsline {section}{\numberline {6.8}Applying zippers to our project}{75}{section.6.8}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {6.8.1}Navigating and editing terms}{75}{subsection.6.8.1}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {6.8.2}Navigating and editing projects}{75}{subsection.6.8.2}}
-\@writefile{lof}{\contentsline {figure}{\numberline {6.2}{\ignorespaces Zippers and editors }}{76}{figure.6.2}}
+\@writefile{lof}{\contentsline {figure}{\numberline {6.2}{\ignorespaces Context and subterm }}{71}{figure.6.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.6.1}Contexts}{71}{subsection.6.6.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.6.2}Zippers}{71}{subsection.6.6.2}}
+\@writefile{lof}{\contentsline {figure}{\numberline {6.3}{\ignorespaces Context and subterm }}{72}{figure.6.3}}
+\@writefile{toc}{\contentsline {section}{\numberline {6.7}Mapping URIs to zipper-based paths and back}{77}{section.6.7}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.7.1}Path and context}{77}{subsection.6.7.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.7.2}Homomorphisms and obfuscation}{77}{subsection.6.7.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {6.8}Applying zippers to our project}{77}{section.6.8}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.8.1}Navigating and editing terms}{77}{subsection.6.8.1}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {6.8.2}Navigating and editing projects}{77}{subsection.6.8.2}}
+\@writefile{lof}{\contentsline {figure}{\numberline {6.4}{\ignorespaces Zippers and editors }}{78}{figure.6.4}}
\@setckpt{chapters/six/ch}{
-\setcounter{page}{77}
+\setcounter{page}{79}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
@@ -38,7 +42,7 @@
\setcounter{subsubsection}{0}
\setcounter{paragraph}{0}
\setcounter{subparagraph}{0}
-\setcounter{figure}{2}
+\setcounter{figure}{4}
\setcounter{table}{0}
\setcounter{parentequation}{0}
\setcounter{Item}{0}
@@ -1,5 +1,44 @@
\section{Constructing contexts and zippers from data types}
+The key intuition is that a zipper is a ``focus'' on a subterm of a
+term. The data needed to capture this idea is a pair,
+\lstinline[language=Scala,mathescape=true]!(T,$\partial$)!, the
+subterm itself, and the context in which it occurs. Using types to
+guide our intuition we see that the subterm must have the same type as
+a term while the type of a context is determined by a calculation that
+perfectly matches a version of the derivative one might have learned
+in high school calculus -- but applied to data structures.
+
+\subsection{Contexts}
+
+\begin{figure}[tbp]
+\begin{center}
+{ \includegraphics[scale=.65]{/Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/figures/ZipperContext1.pdf} }
+\caption{ Context and subterm }
+\end{center}
+\end{figure}
+
+\begin{mathpar}
+ \inferrule* {} {\partial Const_A = 0}
+ \\
+ \inferrule* {} {\partial Id = 0}
+ \\
+ \inferrule* {} {\partial F + G = \partial F + \partial G}
+ \\
+ \inferrule* {} {\partial F \times G = F \times \partial G + \partial F \times G}
+ \\
+ \inferrule* {} {\partial F \circ G = \partial F \circ G \times G}
+\end{mathpar}
+
+\begin{figure}[tbp]
+\begin{center}
+{ \includegraphics[scale=.75]{/Users/lgm/work/src/projex/biosimilarity/trace/src/main/book/content/figures/Derivative.pdf} }
+\caption{ Context and subterm }
+\end{center}
+\end{figure}
+
+\subsection{Zippers}
+
\begin{lstlisting}[language=Scala]
case class Context[Name, NSeq <: NmSeq[Name]](
override val self : RegularType[Name,NSeq]
@@ -1,33 +1,33 @@
\relax
-\@writefile{toc}{\contentsline {chapter}{\numberline {10}The semantic web}{89}{chapter.10}}
+\@writefile{toc}{\contentsline {chapter}{\numberline {10}The semantic web}{91}{chapter.10}}
\@writefile{lof}{\addvspace {10\p@ }}
\@writefile{lot}{\addvspace {10\p@ }}
-\@writefile{toc}{\contentsline {section}{\numberline {10.1}Referential transparency}{89}{section.10.1}}
-\@writefile{lof}{\contentsline {figure}{\numberline {10.1}{\ignorespaces Chapter map }}{90}{figure.10.1}}
-\@writefile{toc}{\contentsline {paragraph}{A little motivation}{90}{section*.59}}
-\@writefile{toc}{\contentsline {section}{\numberline {10.2}Composing monads}{91}{section.10.2}}
-\@writefile{toc}{\contentsline {subsubsection}{Preliminary}{92}{section*.60}}
-\@writefile{toc}{\contentsline {section}{\numberline {10.3}Semantic application queries}{93}{section.10.3}}
-\@writefile{toc}{\contentsline {subsubsection}{An alternative presentation}{93}{section*.61}}
-\@writefile{toc}{\contentsline {paragraph}{Logic: the set monad as an algebra}{94}{section*.62}}
-\@writefile{toc}{\contentsline {paragraph}{Primes: an application}{95}{section*.63}}
-\@writefile{toc}{\contentsline {paragraph}{Summary}{95}{section*.64}}
-\@writefile{toc}{\contentsline {subsubsection}{Patterns}{96}{section*.65}}
-\@writefile{toc}{\contentsline {subsubsection}{A first mini-query language}{96}{section*.66}}
-\@writefile{toc}{\contentsline {subsubsection}{Iterating the design pattern}{96}{section*.67}}
-\@writefile{toc}{\contentsline {paragraph}{A spatial-behavioral-style logic for $\lambda $-calculus}{97}{section*.68}}
-\@writefile{toc}{\contentsline {paragraph}{Examples}{97}{section*.69}}
-\@writefile{toc}{\contentsline {subsubsection}{Logical semantics}{98}{section*.70}}
-\@writefile{toc}{\contentsline {subsubsection}{Other collection monads, other logics}{98}{section*.71}}
-\@writefile{toc}{\contentsline {paragraph}{Stateful collections}{98}{section*.72}}
-\@writefile{lof}{\contentsline {figure}{\numberline {10.2}{\ignorespaces Comprehensions and distributive maps }}{99}{figure.10.2}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {10.3.1}Other logical operations}{100}{subsection.10.3.1}}
-\@writefile{toc}{\contentsline {section}{\numberline {10.4}Searching for programs}{100}{section.10.4}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {10.4.1}A new foundation for search}{100}{subsection.10.4.1}}
-\@writefile{toc}{\contentsline {subsubsection}{Monad composition via distributive laws}{100}{section*.73}}
-\@writefile{toc}{\contentsline {subsection}{\numberline {10.4.2}Examples}{100}{subsection.10.4.2}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.1}Referential transparency}{91}{section.10.1}}
+\@writefile{lof}{\contentsline {figure}{\numberline {10.1}{\ignorespaces Chapter map }}{92}{figure.10.1}}
+\@writefile{toc}{\contentsline {paragraph}{A little motivation}{92}{section*.59}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.2}Composing monads}{93}{section.10.2}}
+\@writefile{toc}{\contentsline {subsubsection}{Preliminary}{94}{section*.60}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.3}Semantic application queries}{95}{section.10.3}}
+\@writefile{toc}{\contentsline {subsubsection}{An alternative presentation}{95}{section*.61}}
+\@writefile{toc}{\contentsline {paragraph}{Logic: the set monad as an algebra}{96}{section*.62}}
+\@writefile{toc}{\contentsline {paragraph}{Primes: an application}{97}{section*.63}}
+\@writefile{toc}{\contentsline {paragraph}{Summary}{97}{section*.64}}
+\@writefile{toc}{\contentsline {subsubsection}{Patterns}{98}{section*.65}}
+\@writefile{toc}{\contentsline {subsubsection}{A first mini-query language}{98}{section*.66}}
+\@writefile{toc}{\contentsline {subsubsection}{Iterating the design pattern}{98}{section*.67}}
+\@writefile{toc}{\contentsline {paragraph}{A spatial-behavioral-style logic for $\lambda $-calculus}{99}{section*.68}}
+\@writefile{toc}{\contentsline {paragraph}{Examples}{99}{section*.69}}
+\@writefile{toc}{\contentsline {subsubsection}{Logical semantics}{100}{section*.70}}
+\@writefile{toc}{\contentsline {subsubsection}{Other collection monads, other logics}{100}{section*.71}}
+\@writefile{toc}{\contentsline {paragraph}{Stateful collections}{100}{section*.72}}
+\@writefile{lof}{\contentsline {figure}{\numberline {10.2}{\ignorespaces Comprehensions and distributive maps }}{101}{figure.10.2}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {10.3.1}Other logical operations}{102}{subsection.10.3.1}}
+\@writefile{toc}{\contentsline {section}{\numberline {10.4}Searching for programs}{102}{section.10.4}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {10.4.1}A new foundation for search}{102}{subsection.10.4.1}}
+\@writefile{toc}{\contentsline {subsubsection}{Monad composition via distributive laws}{102}{section*.73}}
+\@writefile{toc}{\contentsline {subsection}{\numberline {10.4.2}Examples}{102}{subsection.10.4.2}}
\@setckpt{chapters/ten/ch}{
-\setcounter{page}{101}
+\setcounter{page}{103}
\setcounter{equation}{0}
\setcounter{enumi}{0}
\setcounter{enumii}{0}
Oops, something went wrong.

0 comments on commit 3a7e138

Please sign in to comment.