gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r3547 - GNUnet/src/util/boot GNUnet/src/util/config_impl GN


From: grothoff
Subject: [GNUnet-SVN] r3547 - GNUnet/src/util/boot GNUnet/src/util/config_impl GNUnet-docs/papers/ecrs gnunet-gtk/src/common gnunet-gtk/src/core gnunet-gtk/src/plugins/daemon gnunet-gtk/src/plugins/fs
Date: Mon, 23 Oct 2006 15:25:13 -0700 (PDT)

Author: grothoff
Date: 2006-10-23 15:24:56 -0700 (Mon, 23 Oct 2006)
New Revision: 3547

Added:
   GNUnet-docs/papers/ecrs/techreport.tex
Modified:
   GNUnet-docs/papers/ecrs/main.aux
   GNUnet-docs/papers/ecrs/main.bbl
   GNUnet-docs/papers/ecrs/main.blg
   GNUnet-docs/papers/ecrs/main.dvi
   GNUnet-docs/papers/ecrs/main.log
   GNUnet-docs/papers/ecrs/main.pdf
   GNUnet-docs/papers/ecrs/main.ps
   GNUnet-docs/papers/ecrs/main.tex
   GNUnet-docs/papers/ecrs/ref.bib
   GNUnet/src/util/boot/startup.c
   GNUnet/src/util/config_impl/impl.c
   gnunet-gtk/src/common/helper.c
   gnunet-gtk/src/core/main.c
   gnunet-gtk/src/plugins/daemon/Makefile.am
   gnunet-gtk/src/plugins/fs/Makefile.am
Log:
fixes

Modified: GNUnet/src/util/boot/startup.c
===================================================================
--- GNUnet/src/util/boot/startup.c      2006-10-23 00:32:41 UTC (rev 3546)
+++ GNUnet/src/util/boot/startup.c      2006-10-23 22:24:56 UTC (rev 3547)
@@ -77,7 +77,7 @@
                           argv);
   if (i == -1)
     return -1;
-  if (OK != GC_parse_configuration(*cfg,
+  if (0 != GC_parse_configuration(*cfg,
                                   *cfgFileName)) 
     return -1;
   if (configure_logging(ectx, *cfg) != 0)

Modified: GNUnet/src/util/config_impl/impl.c
===================================================================
--- GNUnet/src/util/config_impl/impl.c  2006-10-23 00:32:41 UTC (rev 3546)
+++ GNUnet/src/util/config_impl/impl.c  2006-10-23 22:24:56 UTC (rev 3547)
@@ -178,17 +178,22 @@
   int emptyline;
   int ret;
   char * section;
+  char * fn;
 
+  fn = string_expandFileName(NULL,
+                            filename);
   MUTEX_LOCK(cfg->data->lock);
   dirty = cfg->data->dirty; /* back up value! */
-  if (NULL == (fp = FOPEN(filename, "r"))) {
+  if (NULL == (fp = FOPEN(fn, "r"))) {
     GE_LOG_STRERROR_FILE(cfg->data->ectx,
                         GE_ERROR | GE_USER | GE_IMMEDIATE | GE_BULK | 
GE_REQUEST,
                         "fopen",
-                        filename);
+                        fn);
     MUTEX_UNLOCK(cfg->data->lock);
+    FREE(fn);
     return -1;
   }
+  FREE(fn);
   ret = 0;
   section = STRDUP("");
   memset(line,

Modified: GNUnet-docs/papers/ecrs/main.aux
===================================================================
--- GNUnet-docs/papers/ecrs/main.aux    2006-10-23 00:32:41 UTC (rev 3546)
+++ GNUnet-docs/papers/ecrs/main.aux    2006-10-23 22:24:56 UTC (rev 3547)
@@ -23,91 +23,66 @@
 \citation{ebe2003}
 \citation{clark99distributed}
 \citation{esed}
-\citation{esed}
-\citation{anderson96eternity,chen99prototype,clark99distributed,freehaven-berk,feamster-infranet,herlihy87how,waldman2001tangler,pub00}
+\citation{anderson96eternity,chen99prototype,clark99distributed,herlihy87how,waldman2001tangler,pub00}
 \citation{cohen02replication}
 address@hidden {section}{\numberline {2}Related Work}{3}{section.1.2}}
 \newlabel{related}{{2}{3}{Related Work\relax }{section.1.2}{}}
 \citation{clark99distributed}
+\citation{waldman2001tangler}
 address@hidden {subsection}{\numberline {2.1}Freenet}{4}{subsection.1.2.1}}
-\citation{freehaven-berk}
-\citation{rabin89efficient}
-\citation{mojotech}
-\citation{pub00}
 \citation{shamir}
address@hidden {subsection}{\numberline {2.2}Free Haven}{5}{subsection.1.2.2}}
address@hidden {subsection}{\numberline {2.3}Mnet and Mojo 
Nation}{5}{subsection.1.2.3}}
address@hidden {subsection}{\numberline {2.4}Publius}{5}{subsection.1.2.4}}
-\citation{waldman2001tangler}
-\citation{shamir}
-\citation{cfs:sosp01,mazires00sfs,mazieres02building,muthitacharoen02ivy,rowstron01storage}
+\citation{ecrstechreport}
+\citation{cfs:sosp01,mazieres02building,muthitacharoen02ivy,rowstron01storage}
 \citation{cfs:sosp01,rowstron01storage}
 \citation{maymounkov02kademlia,stoica01chord}
 \citation{mazires00sfs}
 \citation{mazieres02building}
address@hidden {subsection}{\numberline {2.5}Tangler}{6}{subsection.1.2.5}}
address@hidden {subsection}{\numberline {2.6}Gnutella and 
FastTrack}{6}{subsection.1.2.6}}
address@hidden {subsection}{\numberline {2.2}Tangler}{5}{subsection.1.2.2}}
address@hidden {subsection}{\numberline {2.3}Gnutella and 
FastTrack}{5}{subsection.1.2.3}}
address@hidden {subsection}{\numberline {2.4}Distributed File 
Systems}{5}{subsection.1.2.4}}
 \citation{stratton_oakmont}
 \citation{hartman99swarm}
 \citation{ebe2003}
address@hidden {subsection}{\numberline {2.7}Distributed File 
Systems}{7}{subsection.1.2.7}}
address@hidden {section}{\numberline {3}ECRS encoding}{7}{section.1.3}}
-\newlabel{content}{{3}{7}{ECRS encoding\relax }{section.1.3}{}}
address@hidden {section}{\numberline {3}ECRS encoding}{6}{section.1.3}}
+\newlabel{content}{{3}{6}{ECRS encoding\relax }{section.1.3}{}}
 \citation{clark99distributed}
 \citation{clark99distributed}
 \citation{esed}
 \citation{mckusick84fast}
 \citation{merkle89tree}
 \citation{clark99distributed}
address@hidden {figure}{\numberline {1}{\ignorespaces Simple encoding of a file 
using a tree of CHK blocks ($DBlock$s and $IBlock$s are CHK encoded) with one 
$KBlock$ to allow for a keyword-based search.}}{9}{figure.1.1}}
-\newlabel{encodingfile}{{1}{9}{ECRS encoding\relax }{figure.1.1}{}}
address@hidden {subsection}{\numberline {3.1}Overview}{9}{subsection.1.3.1}}
address@hidden {subsection}{\numberline {3.2}{\em  
DBlocks}}{9}{subsection.1.3.2}}
-\newlabel{dblocks}{{3.2}{9}{{\em DBlocks}\relax }{subsection.1.3.2}{}}
address@hidden {figure}{\numberline {1}{\ignorespaces Simple encoding of a file 
using a tree of CHK blocks ($DBlock$s and $IBlock$s are CHK encoded) with one 
$KBlock$ to allow for a keyword-based search.}}{8}{figure.1.1}}
+\newlabel{encodingfile}{{1}{8}{ECRS encoding\relax }{figure.1.1}{}}
address@hidden {subsection}{\numberline {3.1}Overview}{8}{subsection.1.3.1}}
address@hidden {subsection}{\numberline {3.2}{\em  
DBlocks}}{8}{subsection.1.3.2}}
+\newlabel{dblocks}{{3.2}{8}{{\em DBlocks}\relax }{subsection.1.3.2}{}}
 \citation{secure2004goh}
address@hidden {subsection}{\numberline {3.3}{\em  
IBlocks}}{10}{subsection.1.3.3}}
-\newlabel{iblocks}{{3.3}{10}{{\em IBlocks}\relax }{subsection.1.3.3}{}}
address@hidden {subsection}{\numberline {3.4}Finding 
files}{10}{subsection.1.3.4}}
-\newlabel{sec:search}{{3.4}{10}{Finding files\relax }{subsection.1.3.4}{}}
-\citation{clark99distributed}
address@hidden {subsection}{\numberline {3.5}Namespaces}{11}{subsection.1.3.5}}
-\newlabel{sblock}{{3.5}{11}{Namespaces\relax }{subsection.1.3.5}{}}
address@hidden {subsection}{\numberline {3.6}Keyword 
search}{12}{subsection.1.3.6}}
-\newlabel{kblocks}{{3.6}{12}{Keyword search\relax }{subsection.1.3.6}{}}
address@hidden {figure}{\numberline {2}{\ignorespaces The construction of a 
{\em  KBlock}. The hash $H(K)$ of the keyword $K$ is used to encrypt the data 
and to seed the key generator. The obtained private key $Prv_{H(K)}$ signs the 
encrypted data, but is not otherwise used. Finally, the public key $Pub_{H(K)}$ 
is appended to the signed data to form the {\em  KBlock}.}}{13}{figure.1.2}}
-\newlabel{kblockdiagram}{{2}{13}{Keyword search\relax }{figure.1.2}{}}
-\newlabel{split}{{2}{14}{Summary\relax }{Item.2}{}}
-\newlabel{encryptStep}{{3}{14}{Summary\relax }{Item.3}{}}
address@hidden {figure}{\numberline {3}{\ignorespaces The ECRS encoding 
algorithm.}}{14}{figure.1.3}}
-\newlabel{ECRS}{{3}{14}{Summary\relax }{figure.1.3}{}}
address@hidden {subsection}{\numberline {3.7}Summary}{14}{subsection.1.3.7}}
address@hidden {section}{\numberline {4}Extensions}{14}{section.1.4}}
-\newlabel{extensions}{{4}{14}{Extensions\relax }{section.1.4}{}}
-\citation{le2005}
address@hidden {figure}{\numberline {4}{\ignorespaces Example protocol for an 
ECRS download. $(Q_i,K_i)$ is a CHK pair to request and decrypt block 
$i$.}}{15}{figure.1.4}}
-\newlabel{protocol}{{4}{15}{Summary\relax }{figure.1.4}{}}
address@hidden {subsection}{\numberline {4.1}Keyword 
inference}{15}{subsection.1.4.1}}
-\newlabel{keywords}{{4.1}{15}{Keyword inference\relax }{subsection.1.4.1}{}}
address@hidden {subsection}{\numberline {4.2}Directories}{15}{subsection.1.4.2}}
-\citation{bloom}
address@hidden {figure}{\numberline {5}{\ignorespaces  ECRS allows the 
formation of complicated network structures. In this example, the {\em  SBlock} 
of pseudonym \relax $\@@underline {\hbox {\it  {Alice}}}\mathsurround \z@ 
$\relax  eventually allows to retrieve two of the documents encoded in the 
system, as does {\em  Kblock} for keyword ``food". Boxes denote simple blocks 
that serve as entry-points. The directory and the documents consist of trees of 
possibly many CHK-encoded blocks. Searching for keyword ``soda" would return 
two results pointing to different resources. Note that all the encoded 
resources, including the one document with no pointers to it, can be retrieved 
by knowing the CHK keys of their root {\em  IBlock}s. }}{16}{figure.1.5}}
-\newlabel{fig:network}{{5}{16}{Directories\relax }{figure.1.5}{}}
address@hidden {subsection}{\numberline {4.3}Efficient lookups with bloom 
filters}{16}{subsection.1.4.3}}
address@hidden {subsection}{\numberline {3.3}{\em  
IBlocks}}{9}{subsection.1.3.3}}
+\newlabel{iblocks}{{3.3}{9}{{\em IBlocks}\relax }{subsection.1.3.3}{}}
address@hidden {subsection}{\numberline {3.4}Finding 
files}{9}{subsection.1.3.4}}
+\newlabel{sec:search}{{3.4}{9}{Finding files\relax }{subsection.1.3.4}{}}
address@hidden {figure}{\numberline {2}{\ignorespaces The construction of a 
{\em  KBlock}. The hash $H(K)$ of the keyword $K$ is used to encrypt the data 
and to seed the key generator. The obtained private key $Prv_{H(K)}$ signs the 
encrypted data, but is not otherwise used. Finally, the public key $Pub_{H(K)}$ 
is appended to the signed data to form the {\em  KBlock}.}}{11}{figure.1.2}}
+\newlabel{kblockdiagram}{{2}{11}{Finding files\relax }{figure.1.2}{}}
+\newlabel{split}{{2}{11}{Summary\relax }{Item.2}{}}
+\newlabel{encryptStep}{{3}{11}{Summary\relax }{Item.3}{}}
address@hidden {figure}{\numberline {3}{\ignorespaces The ECRS encoding 
algorithm.}}{11}{figure.1.3}}
+\newlabel{ECRS}{{3}{11}{Summary\relax }{figure.1.3}{}}
address@hidden {subsection}{\numberline {3.5}Summary}{11}{subsection.1.3.5}}
 \citation{freehaven-berk,mojotech}
 \citation{rabin89efficient}
address@hidden {section}{\numberline {5}Discussion}{17}{section.1.5}}
-\newlabel{discussion}{{5}{17}{Discussion\relax }{section.1.5}{}}
address@hidden {subsection}{\numberline {5.1}Attacks}{17}{subsection.1.5.1}}
address@hidden {figure}{\numberline {4}{\ignorespaces Example protocol for an 
ECRS download. $(Q_i,K_i)$ is a CHK pair to request and decrypt block 
$i$.}}{12}{figure.1.4}}
+\newlabel{protocol}{{4}{12}{Summary\relax }{figure.1.4}{}}
address@hidden {section}{\numberline {4}Discussion}{12}{section.1.4}}
+\newlabel{discussion}{{4}{12}{Discussion\relax }{section.1.4}{}}
+\citation{ecrstechreport}
 \citation{levien03advogato}
-\citation{esed}
address@hidden {subsection}{\numberline {5.2}{\em  KBlocks} or 
triple-hash}{18}{subsection.1.5.2}}
address@hidden {section}{\numberline {6}Conclusion}{19}{section.1.6}}
-\newlabel{conclusion}{{6}{19}{Conclusion\relax }{section.1.6}{}}
address@hidden {section}{\numberline {5}Conclusion}{13}{section.1.5}}
+\newlabel{conclusion}{{5}{13}{Conclusion\relax }{section.1.5}{}}
 \bibstyle{plain}
 \bibdata{ref}
 \bibcite{anderson96eternity}{1}
-\bibcite{esed}{2}
-\bibcite{bloom}{3}
+\bibcite{ecrstechreport}{2}
+\bibcite{esed}{3}
 \bibcite{chen99prototype}{4}
 \bibcite{clark99distributed}{5}
 \bibcite{cohen02replication}{6}
@@ -115,26 +90,24 @@
 \bibcite{dingledine02mixminion}{8}
 \bibcite{freehaven-berk}{9}
 \bibcite{farsite}{10}
-\bibcite{feamster-infranet}{11}
-\bibcite{secure2004goh}{12}
-\bibcite{ebe2003}{13}
-\bibcite{le2005}{14}
-\bibcite{hartman99swarm}{15}
-\bibcite{herlihy87how}{16}
-\bibcite{levien03advogato}{17}
-\bibcite{maymounkov02kademlia}{18}
-\bibcite{mazires00sfs}{19}
-\bibcite{mazieres02building}{20}
-\bibcite{mckusick84fast}{21}
-\bibcite{merkle89tree}{22}
-\bibcite{muthitacharoen02ivy}{23}
-\bibcite{perng2005csr}{24}
-\bibcite{rabin89efficient}{25}
-\bibcite{rowstron01storage}{26}
-\bibcite{shamir}{27}
-\bibcite{stoica01chord}{28}
-\bibcite{stratton_oakmont}{29}
-\bibcite{syverson97anonymous}{30}
-\bibcite{waldman2001tangler}{31}
-\bibcite{pub00}{32}
-\bibcite{mojotech}{33}
+\bibcite{secure2004goh}{11}
+\bibcite{ebe2003}{12}
+\bibcite{hartman99swarm}{13}
+\bibcite{herlihy87how}{14}
+\bibcite{levien03advogato}{15}
+\bibcite{maymounkov02kademlia}{16}
+\bibcite{mazires00sfs}{17}
+\bibcite{mazieres02building}{18}
+\bibcite{mckusick84fast}{19}
+\bibcite{merkle89tree}{20}
+\bibcite{muthitacharoen02ivy}{21}
+\bibcite{perng2005csr}{22}
+\bibcite{rabin89efficient}{23}
+\bibcite{rowstron01storage}{24}
+\bibcite{shamir}{25}
+\bibcite{stoica01chord}{26}
+\bibcite{stratton_oakmont}{27}
+\bibcite{syverson97anonymous}{28}
+\bibcite{waldman2001tangler}{29}
+\bibcite{pub00}{30}
+\bibcite{mojotech}{31}

Modified: GNUnet-docs/papers/ecrs/main.bbl
===================================================================
--- GNUnet-docs/papers/ecrs/main.bbl    2006-10-23 00:32:41 UTC (rev 3546)
+++ GNUnet-docs/papers/ecrs/main.bbl    2006-10-23 22:24:56 UTC (rev 3547)
@@ -5,17 +5,18 @@
 \newblock {The Eternity Service}.
 \newblock In {\em Proceedings of Pragocrypt 1996}, 1996.
 
+\bibitem{ecrstechreport}
+Krista Bennett, Christian Grothoff, Tzvetan Horozov, and J.~T. Lindgren.
+\newblock {An Encoding for Censorship-Resistant Sharing}.
+\newblock Technical report, 2003.
+\newblock available at http://gnunet.org/download/ecrs.ps.
+
 \bibitem{esed}
 Krista Bennett, Christian Grothoff, Tzvetan Horozov, and Ioana Patrascu.
 \newblock {Efficient Sharing of Encrypted Data}.
 \newblock In {\em {ASCIP}}, volume 2384 of {\em Lecture Notes in Computer
   Science}, pages 107--120. Springer-Verlag Inc., 2002.
 
-\bibitem{bloom}
-Burton Bloom.
-\newblock Space/time trade-offs in hash coding with allowable errors.
-\newblock {\em Communications of the ACM}, 13(7):422--426, 1970.
-
 \bibitem{chen99prototype}
 Yuan Chen, Jan Edler, Andrew Goldberg, Allan Gottlieb, Sumeet Sobti, and Peter
   Yianilos.
@@ -63,12 +64,6 @@
   file system.
 \newblock Technical report, Microsoft Research, 2002.
 
-\bibitem{feamster-infranet}
-Nick Feamster, Magdalena Balazinska, Greg Harfst, Hari Balakrishnan, and David
-  Karger.
-\newblock Infranet: Circumventing web censorship and surveillance.
-\newblock In {\em {11th USENIX Security Symposium}}, 2002.
-
 \bibitem{secure2004goh}
 Eu-Jin Goh.
 \newblock Secure indexes.
@@ -80,11 +75,6 @@
   Peer-to-Peer Networks}.
 \newblock {\em Wirtschaftsinformatik}, 3-2003, June 2003.
 
-\bibitem{le2005}
-Christian Grothoff.
-\newblock {Reading File Metadata with extract and libextractor}.
-\newblock {\em LinuxJournal}, 6-2005, June 2005.
-
 \bibitem{hartman99swarm}
 John~H. Hartman, Ian Murdock, and Tammo Spalink.
 \newblock The swarm scalable storage system.

Modified: GNUnet-docs/papers/ecrs/main.blg
===================================================================
--- GNUnet-docs/papers/ecrs/main.blg    2006-10-23 00:32:41 UTC (rev 3546)
+++ GNUnet-docs/papers/ecrs/main.blg    2006-10-23 22:24:56 UTC (rev 3547)
@@ -2,44 +2,46 @@
 The top-level auxiliary file: main.aux
 The style file: plain.bst
 Database file #1: ref.bib
-You've used 33 entries,
+Warning--empty institution in ecrstechreport
+You've used 31 entries,
             2118 wiz_defined-function locations,
-            682 strings with 9615 characters,
-and the built_in function-call counts, 11647 in all, are:
-= -- 1111
-> -- 519
+            669 strings with 9418 characters,
+and the built_in function-call counts, 11079 in all, are:
+= -- 1058
+> -- 500
 < -- 15
-+ -- 209
-- -- 171
-* -- 722
-:= -- 1852
-add.period$ -- 105
-call.type$ -- 33
-change.case$ -- 182
++ -- 201
+- -- 165
+* -- 685
+:= -- 1759
+add.period$ -- 100
+call.type$ -- 31
+change.case$ -- 174
 chr.to.int$ -- 0
-cite$ -- 33
-duplicate$ -- 523
-empty$ -- 998
-format.name$ -- 171
-if$ -- 2553
+cite$ -- 32
+duplicate$ -- 496
+empty$ -- 941
+format.name$ -- 165
+if$ -- 2433
 int.to.chr$ -- 0
-int.to.str$ -- 33
-missing$ -- 29
-newline$ -- 167
-num.names$ -- 72
-pop$ -- 247
+int.to.str$ -- 31
+missing$ -- 26
+newline$ -- 158
+num.names$ -- 68
+pop$ -- 237
 preamble$ -- 1
-purify$ -- 150
+purify$ -- 143
 quote$ -- 0
-skip$ -- 372
+skip$ -- 355
 stack$ -- 0
-substring$ -- 573
-swap$ -- 160
+substring$ -- 538
+swap$ -- 156
 text.length$ -- 15
 text.prefix$ -- 0
 top$ -- 0
-type$ -- 132
-warning$ -- 0
-while$ -- 103
-width$ -- 35
-write$ -- 361
+type$ -- 124
+warning$ -- 1
+while$ -- 97
+width$ -- 33
+write$ -- 341
+(There was 1 warning)

Modified: GNUnet-docs/papers/ecrs/main.dvi
===================================================================
(Binary files differ)

Modified: GNUnet-docs/papers/ecrs/main.log
===================================================================
--- GNUnet-docs/papers/ecrs/main.log    2006-10-23 00:32:41 UTC (rev 3546)
+++ GNUnet-docs/papers/ecrs/main.log    2006-10-23 22:24:56 UTC (rev 3547)
@@ -1,4 +1,4 @@
-This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) (format=pdflatex 
2006.9.14)  26 SEP 2006 15:20
+This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) (format=pdflatex 
2006.10.11)  23 OCT 2006 15:35
 entering extended mode
 **main.tex
 (./main.tex
@@ -11,9 +11,9 @@
 (./llncs.cls
 Document Class: llncs 2001/08/14 v2.10 
 experimental LaTeX document class for Lecture Notes in Computer Science
-(/usr/share/texmf-tetex/tex/latex/base/article.cls
+(/usr/share/texmf/tex/latex/base/article.cls
 Document Class: article 2004/02/16 v1.4f Standard LaTeX document class
-(/usr/share/texmf-tetex/tex/latex/base/size10.clo
+(/usr/share/texmf/tex/latex/base/size10.clo
 File: size10.clo 2004/02/16 v1.4f Standard LaTeX file (size option)
 )
 address@hidden
@@ -28,7 +28,7 @@
 \belowcaptionskip=\skip42
 \bibindent=\dimen102
 )
-(/usr/share/texmf-tetex/tex/latex/tools/multicol.sty
+(/usr/share/texmf/tex/latex/tools/multicol.sty
 Package: multicol 2004/02/14 v1.6e multicolumn formatting (FMi)
 address@hidden
 address@hidden
@@ -126,30 +126,30 @@
 address@hidden
 \headlineindent=\dimen123
 )
-(/usr/share/texmf-tetex/tex/latex/base/inputenc.sty
+(/usr/share/texmf/tex/latex/base/inputenc.sty
 Package: inputenc 2004/02/05 v1.0d Input encoding file
 
-(/usr/share/texmf-tetex/tex/latex/base/ansinew.def
+(/usr/share/texmf/tex/latex/base/ansinew.def
 File: ansinew.def 2004/02/05 v1.0d Input encoding file
 ))
-(/usr/share/texmf-tetex/tex/latex/amsmath/amsmath.sty
+(/usr/share/texmf/tex/latex/amsmath/amsmath.sty
 Package: amsmath 2000/07/18 v2.13 AMS math features
 address@hidden
 
 For additional information on amsmath, use the `?' option.
-(/usr/share/texmf-tetex/tex/latex/amsmath/amstext.sty
+(/usr/share/texmf/tex/latex/amsmath/amstext.sty
 Package: amstext 2000/06/29 v2.01
 
-(/usr/share/texmf-tetex/tex/latex/amsmath/amsgen.sty
+(/usr/share/texmf/tex/latex/amsmath/amsgen.sty
 File: amsgen.sty 1999/11/30 v2.0
 address@hidden
 address@hidden
 ))
-(/usr/share/texmf-tetex/tex/latex/amsmath/amsbsy.sty
+(/usr/share/texmf/tex/latex/amsmath/amsbsy.sty
 Package: amsbsy 1999/11/29 v1.2d
 address@hidden
 )
-(/usr/share/texmf-tetex/tex/latex/amsmath/amsopn.sty
+(/usr/share/texmf/tex/latex/amsmath/amsopn.sty
 Package: amsopn 1999/12/14 v2.01 operator names
 )
 address@hidden
@@ -193,17 +193,17 @@
 address@hidden
 LaTeX Info: Redefining \[ on input line 2666.
 LaTeX Info: Redefining \] on input line 2667.
-) (/usr/share/texmf-tetex/tex/latex/amsfonts/amssymb.sty
+) (/usr/share/texmf/tex/latex/amsfonts/amssymb.sty
 Package: amssymb 2002/01/22 v2.2d
 
-(/usr/share/texmf-tetex/tex/latex/amsfonts/amsfonts.sty
+(/usr/share/texmf/tex/latex/amsfonts/amsfonts.sty
 Package: amsfonts 2001/10/25 v2.2f
 \symAMSa=\mathgroup4
 \symAMSb=\mathgroup5
 LaTeX Font Info:    Overwriting math alphabet `\mathfrak' in version `bold'
 (Font)                  U/euf/m/n --> U/euf/b/n on input line 132.
 ))
-(/usr/share/texmf-tetex/tex/latex/base/exscale.sty
+(/usr/share/texmf/tex/latex/base/exscale.sty
 Package: exscale 1997/06/16 v2.1g Standard LaTeX package exscale
 LaTeX Font Info:    Redeclaring symbol font `largesymbols' on input line 52.
 LaTeX Font Info:    Overwriting symbol font `largesymbols' in version `normal'
@@ -212,28 +212,28 @@
 (Font)                  OMX/cmex/m/n --> OMX/cmex/m/n on input line 52.
 address@hidden
 )
-(/usr/share/texmf-tetex/tex/latex/graphics/epsfig.sty
+(/usr/share/texmf/tex/latex/graphics/epsfig.sty
 Package: epsfig 1999/02/16 v1.7a (e)psfig emulation (SPQR)
 
-(/usr/share/texmf-tetex/tex/latex/graphics/graphicx.sty
+(/usr/share/texmf/tex/latex/graphics/graphicx.sty
 Package: graphicx 1999/02/16 v1.0f Enhanced LaTeX Graphics (DPC,SPQR)
 
-(/usr/share/texmf-tetex/tex/latex/graphics/keyval.sty
+(/usr/share/texmf/tex/latex/graphics/keyval.sty
 Package: keyval 1999/03/16 v1.13 key=value parser (DPC)
 address@hidden@=\toks23
 )
-(/usr/share/texmf-tetex/tex/latex/graphics/graphics.sty
+(/usr/share/texmf/tex/latex/graphics/graphics.sty
 Package: graphics 2001/07/07 v1.0n Standard LaTeX Graphics (DPC,SPQR)
 
-(/usr/share/texmf-tetex/tex/latex/graphics/trig.sty
+(/usr/share/texmf/tex/latex/graphics/trig.sty
 Package: trig 1999/03/16 v1.09 sin cos tan (DPC)
 )
-(/usr/share/texmf-tetex/tex/latex/graphics/graphics.cfg
+(/usr/share/texmf/tex/latex/graphics/graphics.cfg
 File: graphics.cfg 2005/02/03 v1.3 graphics configuration of teTeX/TeXLive
 )
 Package graphics Info: Driver file: pdftex.def on input line 80.
 
-(/usr/share/texmf-tetex/tex/latex/graphics/pdftex.def
+(/usr/share/texmf/tex/latex/graphics/pdftex.def
 File: pdftex.def 2002/06/19 v0.03k graphics/color for pdftex
 address@hidden
 ))
@@ -243,13 +243,13 @@
 \epsfxsize=\dimen136
 \epsfysize=\dimen137
 )
-(/usr/share/texmf-tetex/tex/latex/tools/verbatim.sty
+(/usr/share/texmf/tex/latex/tools/verbatim.sty
 Package: verbatim 2003/08/22 v1.5q LaTeX2e package for verbatim enhancements
 address@hidden
 address@hidden
 address@hidden@stream=\read1
 )
-(/usr/share/texmf-tetex/tex/latex/float/float.sty
+(/usr/share/texmf/tex/latex/float/float.sty
 Package: float 2001/11/08 v1.3d Float enhancements (AL)
 address@hidden@type=\count128
 address@hidden
@@ -257,10 +257,10 @@
 address@hidden@everytoks=\toks27
 address@hidden
 )
-(/usr/share/texmf-tetex/tex/generic/xypic/xy.sty
-(/usr/share/texmf-tetex/tex/generic/xypic/xy.tex Bootstrap'ing: catcodes,
-docmode, (/usr/share/texmf-tetex/tex/generic/xypic/xyrecat.tex)
-(/usr/share/texmf-tetex/tex/generic/xypic/xyidioms.tex)
+(/usr/share/texmf/tex/generic/xypic/xy.sty
+(/usr/share/texmf/tex/generic/xypic/xy.tex Bootstrap'ing: catcodes, docmode,
+(/usr/share/texmf/tex/generic/xypic/xyrecat.tex)
+(/usr/share/texmf/tex/generic/xypic/xyidioms.tex)
 
  Xy-pic version 3.7 <1999/02/16>
  Copyright (c) 1991-1998 by Kristoffer H. Rose <address@hidden>
@@ -317,9 +317,9 @@
 edges, connections;  Xy-pic loaded)
 Package: xy 1999/02/16 Xy-pic version 3.7
 
-(/usr/share/texmf-tetex/tex/generic/xypic/xyall.tex
+(/usr/share/texmf/tex/generic/xypic/xyall.tex
  Xy-pic option: All features v.3.3
-(/usr/share/texmf-tetex/tex/generic/xypic/xycurve.tex
+(/usr/share/texmf/tex/generic/xypic/xycurve.tex
  Xy-pic option: Curve and Spline extension v.3.7 curve,
 address@hidden@=\count133
 address@hidden
@@ -331,21 +331,21 @@
  circles,
 address@hidden
  loaded)
-(/usr/share/texmf-tetex/tex/generic/xypic/xyframe.tex
+(/usr/share/texmf/tex/generic/xypic/xyframe.tex
  Xy-pic option: Frame and Bracket extension v.3.7 loaded)
-(/usr/share/texmf-tetex/tex/generic/xypic/xycmtip.tex
+(/usr/share/texmf/tex/generic/xypic/xycmtip.tex
  Xy-pic option: Computer Modern tip extension v.3.3
-(/usr/share/texmf-tetex/tex/generic/xypic/xytips.tex
+(/usr/share/texmf/tex/generic/xypic/xytips.tex
  Xy-pic option: More Tips extension v.3.3 loaded) loaded)
-(/usr/share/texmf-tetex/tex/generic/xypic/xyline.tex
+(/usr/share/texmf/tex/generic/xypic/xyline.tex
  Xy-pic option: Line styles extension v.3.6
 address@hidden
  loaded)
-(/usr/share/texmf-tetex/tex/generic/xypic/xyrotate.tex
+(/usr/share/texmf/tex/generic/xypic/xyrotate.tex
  Xy-pic option: Rotate and Scale extension v.3.3 loaded)
-(/usr/share/texmf-tetex/tex/generic/xypic/xycolor.tex
+(/usr/share/texmf/tex/generic/xypic/xycolor.tex
  Xy-pic option: Colour extension v.3.3 loaded)
-(/usr/share/texmf-tetex/tex/generic/xypic/xymatrix.tex
+(/usr/share/texmf/tex/generic/xypic/xymatrix.tex
  Xy-pic option: Matrix feature v.3.4
 \Row=\count134
 \Col=\count135
@@ -355,26 +355,26 @@
 \qcount@@=\count137
 address@hidden
  loaded)
-(/usr/share/texmf-tetex/tex/generic/xypic/xyarrow.tex
+(/usr/share/texmf/tex/generic/xypic/xyarrow.tex
  Xy-pic option: Arrow and Path feature v.3.5 path, \ar, loaded)
-(/usr/share/texmf-tetex/tex/generic/xypic/xygraph.tex
+(/usr/share/texmf/tex/generic/xypic/xygraph.tex
  Xy-pic option: Graph feature v.3.7 loaded) loaded)
-(/usr/share/texmf-tetex/tex/generic/xypic/xyknot.tex
+(/usr/share/texmf/tex/generic/xypic/xyknot.tex
  Xy-pic option: Knots and Links feature v.3.4 knots and links, loaded)
-(/usr/share/texmf-tetex/tex/generic/xypic/xypoly.tex
+(/usr/share/texmf/tex/generic/xypic/xypoly.tex
  Xy-pic option: Polygon feature v.3.7 polygons,
 address@hidden
  loaded))
-(/usr/share/texmf-tetex/tex/latex/hyperref/hyperref.sty
+(/usr/share/texmf/tex/latex/hyperref/hyperref.sty
 Package: hyperref 2003/11/30 v6.74m Hypertext links for LaTeX
 address@hidden
 address@hidden
 address@hidden
 
-(/usr/share/texmf-tetex/tex/latex/hyperref/pd1enc.def
+(/usr/share/texmf/tex/latex/hyperref/pd1enc.def
 File: pd1enc.def 2003/11/30 v6.74m Hyperref: PDFDocEncoding definition (HO)
 )
-(/usr/share/texmf-tetex/tex/latex/hyperref/hyperref.cfg
+(/usr/share/texmf/tex/latex/hyperref/hyperref.cfg
 File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive and teTeX
 )
 Package hyperref Info: Hyper figures OFF on input line 1880.
@@ -385,7 +385,7 @@
 
 Implicit mode ON; LaTeX internals redefined
 Package hyperref Info: Bookmarks ON on input line 2004.
-(/usr/share/texmf-tetex/tex/latex/url/url.sty
+(/usr/share/texmf/tex/latex/url/url.sty
 \Urlmuskip=\muskip11
 Package: url 2004/03/15  ver 3.1  Verb mode for urls, etc.
 )
@@ -404,19 +404,19 @@
 address@hidden
 )
 *hyperref using default driver hpdftex*
-(/usr/share/texmf-tetex/tex/latex/hyperref/hpdftex.def
+(/usr/share/texmf/tex/latex/hyperref/hpdftex.def
 File: hpdftex.def 2003/11/30 v6.74m Hyperref driver for pdfTeX
 
-(/usr/share/texmf-tetex/tex/latex/psnfss/pifont.sty
+(/usr/share/texmf/tex/latex/psnfss/pifont.sty
 Package: pifont 2004/09/15 PSNFSS-v9.2 Pi font support (SPQR) 
 LaTeX Font Info:    Try loading font information for U+pzd on input line 63.
 
-(/usr/share/texmf-tetex/tex/latex/psnfss/upzd.fd
+(/usr/share/texmf/tex/latex/psnfss/upzd.fd
 File: upzd.fd 2001/06/04 font definitions for U/pzd.
 )
 LaTeX Font Info:    Try loading font information for U+psy on input line 64.
 
-(/usr/share/texmf-tetex/tex/latex/psnfss/upsy.fd
+(/usr/share/texmf/tex/latex/psnfss/upsy.fd
 File: upsy.fd 2001/06/04 font definitions for U/psy.
 ))
 address@hidden
@@ -444,8 +444,8 @@
 LaTeX Font Info:    ... okay on input line 19.
 LaTeX Font Info:    Checking defaults for PD1/pdf/m/n on input line 19.
 LaTeX Font Info:    ... okay on input line 19.
- (/usr/share/texmf-tetex/tex/context/base/supp-pdf.tex
-(/usr/share/texmf-tetex/tex/context/base/supp-mis.tex
+ (/usr/share/texmf/tex/context/base/supp-pdf.tex
+(/usr/share/texmf/tex/context/base/supp-mis.tex
 loading : Context Support Macros / Miscellaneous (2004.10.26)
 \protectiondepth=\count146
 \scratchcounter=\count147
@@ -477,25 +477,24 @@
 \MPscratchDim=\dimen182
 \MPnumerator=\count155
 \everyMPtoPDFconversion=\toks40
-) (/usr/share/texmf-tetex/tex/latex/graphics/color.sty
+) (/usr/share/texmf/tex/latex/graphics/color.sty
 Package: color 1999/02/16 v1.0i Standard LaTeX Color (DPC)
 LaTeX Info: Redefining \color on input line 71.
 
-(/usr/share/texmf-tetex/tex/latex/graphics/color.cfg
+(/usr/share/texmf/tex/latex/graphics/color.cfg
 File: color.cfg 2005/02/03 v1.3 color configuration of teTeX/TeXLive
 )
 Package color Info: Driver file: pdftex.def on input line 125.
 )
 Package hyperref Info: Link coloring ON on input line 19.
 
-(/usr/share/texmf-tetex/tex/latex/hyperref/nameref.sty
+(/usr/share/texmf/tex/latex/hyperref/nameref.sty
 Package: nameref 2003/12/03 v2.21 Cross-referencing by name of section
 address@hidden@level=\count156
 )
 LaTeX Info: Redefining \ref on input line 19.
 LaTeX Info: Redefining \pageref on input line 19.
- (./main.out)
-(./main.out)
+ (./main.out) (./main.out)
 \openout4 = `main.out'.
 
 LaTeX Font Info:    External font `cmex7' loaded for size
@@ -503,12 +502,13 @@
 LaTeX Font Info:    External font `cmex7' loaded for size
 (Font)              <5> on input line 83.
 LaTeX Font Info:    Try loading font information for U+msa on input line 83.
- (/usr/share/texmf-tetex/tex/latex/amsfonts/umsa.fd
+
+(/usr/share/texmf/tex/latex/amsfonts/umsa.fd
 File: umsa.fd 2002/01/19 v2.2g AMS font definitions
 )
 LaTeX Font Info:    Try loading font information for U+msb on input line 83.
 
-(/usr/share/texmf-tetex/tex/latex/amsfonts/umsb.fd
+(/usr/share/texmf/tex/latex/amsfonts/umsb.fd
 File: umsb.fd 2002/01/19 v2.2g AMS font definitions
 )
 LaTeX Font Info:    External font `cmex7' loaded for size
@@ -544,56 +544,52 @@
 
 [1
 
-{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}]
+{/usr/share/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
 Underfull \vbox (badness 5105) has occurred while \output is active []
 
  [2]
-[3] [4] [5] [6] [7]
+[3] [4] [5] [6] <xymatrix 9x6 932>
 Underfull \vbox (badness 2158) has occurred while \output is active []
 
- [8]
-<xymatrix 9x6 932> [9] [10] [11] [12] <xymatrix 7x3 383>
+ [7]
+[8] [9] <xymatrix 7x3 383>
 Underfull \vbox (badness 10000) has occurred while \output is active []
 
- [13]
-[14] [15] <xymatrix 4x3 438> [16] [17] [18] [19] (./main.bbl [20]
-Underfull \hbox (badness 6658) in paragraph at lines 100--103
+ [10]
+[11] [12] [13] (./main.bbl [14]
+Underfull \hbox (badness 6658) in paragraph at lines 90--93
 []\OT1/cmr/m/n/9 Raph Levien.  At-tack re-sis-tant trust met-rics.  Draft avail
 -able at
  []
 
-[21]) [22] (./main.aux) ) 
+[15]) [16] (./main.aux) ) 
 Here is how much of TeX's memory you used:
- 6729 strings out of 94500
- 83280 string characters out of 1175771
- 240233 words of memory out of 1000000
- 9676 multiletter control sequences out of 10000+50000
- 13677 words of font info for 55 fonts, out of 500000 for 2000
- 580 hyphenation exceptions out of 8191
- 32i,14n,27p,807b,941s stack positions out of 1500i,500n,5000p,200000b,5000s
+ 6692 strings out of 94500
+ 82179 string characters out of 1176765
+ 219985 words of memory out of 1000000
+ 9660 multiletter control sequences out of 10000+50000
+ 13509 words of font info for 54 fonts, out of 500000 for 2000
+ 580 hyphenation exceptions out of 1000
+ 32i,14n,27p,438b,612s stack positions out of 1500i,500n,5000p,200000b,5000s
 PDF statistics:
- 339 PDF objects out of 300000
- 99 named destinations out of 131072
+ 276 PDF objects out of 300000
+ 79 named destinations out of 131072
  33 words of extra memory for PDF output out of 65536
-</usr/share/texmf-tetex/fonts/type1/bluesky/cm/cmcsc10
-.pfb></usr/share/texmf-tetex/fonts/type1/bluesky/cm/cmsy10.pfb></usr/share/texm
-f-tetex/fonts/type1/bluesky/cm/cmsy7.pfb></usr/share/texmf-tetex/fonts/type1/bl
-uesky/cm/cmtt10.pfb></usr/share/texmf-tetex/fonts/type1/bluesky/cm/cmsy9.pfb></
-usr/share/texmf-tetex/fonts/type1/bluesky/cm/cmr5.pfb></usr/share/texmf-tetex/f
-onts/type1/bluesky/cm/cmtt8.pfb></usr/share/texmf-tetex/fonts/type1/bluesky/cm/
-cmmi5.pfb></usr/share/texmf-tetex/fonts/type1/bluesky/cm/cmmi7.pfb></usr/share/
-texmf-tetex/fonts/type1/bluesky/cm/cmbxti10.pfb></usr/share/texmf-tetex/fonts/t
-ype1/bluesky/cm/cmmi6.pfb></usr/share/texmf-tetex/fonts/type1/public/xypic/xyda
-sh10.pfb></usr/share/texmf-tetex/fonts/type1/bluesky/cm/cmsy6.pfb></usr/share/t
-exmf-tetex/fonts/type1/public/xypic/xybtip10.pfb></usr/share/texmf-tetex/fonts/
-type1/public/xypic/xyatip10.pfb></usr/share/texmf-tetex/fonts/type1/bluesky/cm/
-cmmi9.pfb></usr/share/texmf-tetex/fonts/type1/bluesky/cm/cmti9.pfb></usr/share/
-texmf-tetex/fonts/type1/bluesky/cm/cmbx10.pfb></usr/share/texmf-tetex/fonts/typ
-e1/bluesky/cm/cmmi10.pfb></usr/share/texmf-tetex/fonts/type1/bluesky/cm/cmti10.
-pfb></usr/share/texmf-tetex/fonts/type1/bluesky/cm/cmbx9.pfb></usr/share/texmf-
-tetex/fonts/type1/bluesky/cm/cmtt9.pfb></usr/share/texmf-tetex/fonts/type1/blue
-sky/cm/cmr9.pfb></usr/share/texmf-tetex/fonts/type1/bluesky/cm/cmr6.pfb></usr/s
-hare/texmf-tetex/fonts/type1/bluesky/cm/cmr7.pfb></usr/share/texmf-tetex/fonts/
-type1/bluesky/cm/cmr10.pfb></usr/share/texmf-tetex/fonts/type1/bluesky/cm/cmbx1
-2.pfb>
-Output written on main.pdf (22 pages, 297294 bytes).
+</usr/share/texmf/fonts/type1/bluesky/cm/cmcsc10.pfb><
+/usr/share/texmf/fonts/type1/bluesky/cm/cmsy9.pfb></usr/share/texmf/fonts/type1
+/bluesky/cm/cmr5.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmtt8.pfb></usr/s
+hare/texmf/fonts/type1/bluesky/cm/cmmi5.pfb></usr/share/texmf/fonts/type1/blues
+ky/cm/cmmi7.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmbxti10.pfb></usr/sha
+re/texmf/fonts/type1/bluesky/cm/cmmi6.pfb></usr/share/texmf/fonts/type1/public/
+xypic/xydash10.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmsy6.pfb></usr/sha
+re/texmf/fonts/type1/public/xypic/xybtip10.pfb></usr/share/texmf/fonts/type1/pu
+blic/xypic/xyatip10.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmmi9.pfb></us
+r/share/texmf/fonts/type1/bluesky/cm/cmti9.pfb></usr/share/texmf/fonts/type1/bl
+uesky/cm/cmbx10.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmmi10.pfb></usr/s
+hare/texmf/fonts/type1/bluesky/cm/cmti10.pfb></usr/share/texmf/fonts/type1/blue
+sky/cm/cmbx9.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmtt9.pfb></usr/share
+/texmf/fonts/type1/bluesky/cm/cmr9.pfb></usr/share/texmf/fonts/type1/bluesky/cm
+/cmr6.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmr7.pfb></usr/share/texmf/f
+onts/type1/bluesky/cm/cmr10.pfb></usr/share/texmf/fonts/type1/bluesky/cm/cmbx12
+.pfb>
+Output written on main.pdf (16 pages, 247426 bytes).

Modified: GNUnet-docs/papers/ecrs/main.pdf
===================================================================
(Binary files differ)

Modified: GNUnet-docs/papers/ecrs/main.ps
===================================================================
--- GNUnet-docs/papers/ecrs/main.ps     2006-10-23 00:32:41 UTC (rev 3546)
+++ GNUnet-docs/papers/ecrs/main.ps     2006-10-23 22:24:56 UTC (rev 3547)
@@ -1,18 +1,18 @@
 %!PS-Adobe-2.0
 %%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software
 %%Title: main.dvi
-%%Pages: 22
+%%Pages: 16
 %%PageOrder: Ascend
 %%BoundingBox: 0 0 612 792
 %%DocumentFonts: CMBX12 CMR10 CMR7 CMR6 CMR9 CMTT9 CMBX9 CMTI10 CMMI10
 %%+ CMBX10 CMTI9 CMMI9 XYATIP10 XYBTIP10 CMSY6 XYDASH10 CMMI6 CMBXTI10
-%%+ CMMI7 CMMI5 CMTT8 CMR5 CMSY9 CMTT10 CMSY7 CMSY10 CMCSC10
+%%+ CMMI7 CMMI5 CMTT8 CMR5 CMSY9 CMCSC10
 %%DocumentPaperSizes: Letter
 %%EndComments
 %DVIPSWebPage: (www.radicaleye.com)
 %DVIPSCommandLine: dvips main.dvi -o main.ps
 %DVIPSParameters: dpi=600
-%DVIPSSource:  TeX output 2006.09.26:1520
+%DVIPSSource:  TeX output 2006.10.23:1535
 %%BeginProcSet: tex.pro 0 0
 %!
 /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -283,263 +283,6 @@
 0000000000000000000000000000000000000000000000000000000000000000
 cleartomark
 %%EndFont 
-%%BeginFont: CMSY10
-%!PS-AdobeFont-1.1: CMSY10 1.0
-%%CreationDate: 1991 Aug 15 07:20:57
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
-/FullName (CMSY10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 25 /approxequal put
-dup 102 /braceleft put
-dup 103 /braceright put
-readonly def
-/FontBBox{-29 -960 1116 775}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
-27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF
-5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09
-0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730
-DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A
-71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09
-4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C
-515DB70A8D4F6146FE068DC1E5DE8BC570317AAEA74A842CFD26F9591866F5A0
-9B4EAD7FD9DD9C3A714D0F09E304CD13AE3D2E8625B858A0B2A613382BDC72A6
-0BC933E43544B3E490F91ED7A5187782CE81048608EBCD6AA9F837F0A73B4CB8
-569EA492EE779CC5A843D2565CA9035B0D11028F7056E4273970CC1EB5C4EC5B
-514D732BB6F74AA1D8E81C3884DDF5C6BDB50908E0B77C8A202254084587F45F
-169E9B580C083AB7A3320A7CE9F82F79DF736E2B577A45DFE8944E55ED3B2311
-5543CB5630141440550DB37070158247A5D5B3754EF98D94B0CDF8E0F675C4FB
-93893E56E3C1EC51F40A8D6559DAE55764A71829639713C0D8806190CB6A5E6F
-A3922DE826D0D35432E79727A6F879AB753281FAFBFD297CCD82810525873C6A
-5F4398CCFF2CC73A7B2D9C3A50EB890E202575590D835EBE068855EF6BFFF76E
-C6D974670B95BF9FF230AA1E2A14698C5A264C69D7BCD71FE19257161600C958
-A2DCBD27156791D3C05E65EA8F71AF451F2D8725022F8FFD84ABE5BFFF70D46E
-C7195288AC1B31D57D2480F548D74332A9EF83E41913EFCBED6A42CE21673751
-F5E28CB40CDF9F7153AF94A1CA6218D720461A8FCA060E1D019E4BB887B9A753
-52D097E036FEC85186C6E83EE02EB7F92DC5B4C390346F76743E41830F258B4D
-1B75007AF453D8B3A792AB26B5DAEF5B2B083FC66D3D74060D263E200AC3BDD1
-066552921D3D6DC06458A458FAEF1F5F899644584615127D00C31AD5D9F3423C
-E64508514C6C14635AE5FCDA178868430B31B2AFBCE8BF8133DB86C3E9F5BD6B
-D2F0632CD72A79EC3821EB29271F9C64CF31B0A3665A9936F8D8FC82C2C3985F
-DD8A37FA4C8C55D4EF212BC964F322EF1D715269AEDC02EBE01FA1AAFE3E8132
-15F331A58BD1E4A1EBC8B2F0CE7B0A89DC8DEA12034EEC8713EB1F3F83C17879
-1E5C16AF7760B34EE396B7EA253739DEFDADC7614DF95C3A36BA1C8EDE04CDEC
-1A2870FCBA526803FA4883363B7C3CBA71BA2970E14AC228A404A13B2191CBA8
-A118C20E64C16CF10C7F9275803B4322BCBC0A
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMSY7
-%!PS-AdobeFont-1.1: CMSY7 1.0
-%%CreationDate: 1991 Aug 15 07:21:52
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
-/FullName (CMSY7) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY7 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /minus put
-readonly def
-/FontBBox{-15 -951 1252 782}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D251491EBF65A98C9FE2B1CF8D725A70281949
-8F4AFFE638BBA6B12386C7F32BA350D62EA218D5B24EE612C2C20F43CD3BFD0D
-F02B185B692D7B27BEC7290EEFDCF92F95DDEB507068DE0B0B0351E3ECB8E443
-E611BE0A41A1F8C89C3BC16B352C3443AB6F665EAC5E0CC4229DECFC58E15765
-424C919C273E7FA240BE7B2E951AB789D127625BBCB7033E005050EB2E12B1C8
-E5F3AD1F44A71957AD2CC53D917BFD09235601155886EE36D0C3DD6E7AA2EF9C
-C402C77FF1549E609A711FC3C211E64E8F263D60A57E9F2B47E3480B978AAF63
-868AEA25DA3D5413467B76D2F02F8097D2841EDA6677731A6ACFEC0BABF1016A
-089B2D24F47B9D66B677886B90AA787AD865B5F78EE434AA47B7B0F1244A4215
-251FDCC670FD01A92226E2C667C2344298D001575BDF782D969D836ECA11E229
-C7A17E28F70F9B17273FF243452DA885068A8BCB5165534F3996CBD8D97307DB
-593D606C197AFC259E691C242F6E1E651575B6852AAD54567905E6F542DCA109
-7F6DA24DC9112FBF7CE48B387953787B2BCB841873AED2DFA83339D39E14F4DD
-3A51584527AC3A93630D121E2AE0C89D9C3F2FFA767743B1276BE1E648041010
-0FD510F1A8
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTT10
-%!PS-AdobeFont-1.1: CMTT10 1.00B
-%%CreationDate: 1992 Apr 26 10:42:42
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights 
Reserved) readonly def
-/FullName (CMTT10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /CMTT10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 97 /a put
-dup 98 /b put
-dup 99 /c put
-dup 101 /e put
-dup 105 /i put
-dup 108 /l put
-dup 111 /o put
-dup 114 /r put
-dup 116 /t put
-dup 120 /x put
-readonly def
-/FontBBox{-4 -235 731 800}readonly def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19
-38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF
-D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204
-EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727
-A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593
-F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714
-4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA
-6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E
-A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B
-E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F
-1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438
-452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF
-8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369
-5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA
-DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9
-BA304FA879392EE0BCC1A77C8392948FE1B07931A19298FB60E443E198089A0A
-16D46095558E6DBAB7E03022F2A762470D545CE6B8D931FA66E63DDB04125D5E
-A2F86EC0944B0D160100C2DB33B92C400A8CCB715F68477177459BCD57C86D97
-449A25D63E9584EEF820A7AB919BC62D28434BFBA0EC53913CEB3BF4857057BB
-3FB43E95092D6DC0B7CE4E1D8C1FDD292F80E973E277C7FCC9878D2F97D0E3E9
-8DD466CCB4EEC3E16429C36FC9583A048A83F68049C707E5FC1473E7DF90125D
-BCC3489C04F227D170EA0C1E8E021294FBF894B19E966F94B1F3FF879474E9EA
-34D55A9EEB4459E5DBF801CDAB652D681BC673C26D3C73FE1AE6232638CB2582
-F75CA7F1BA6327B0A39B251E10606247224799C0B710586D3E3DDF28A5864D56
-6F5C532735511ECB7C52B7B6D47042B26B5C7B7D12DE631FE3BB27C41F4FB436
-5874CC0D1A182B42E4E0146BBECF156134C82BC2BE6F136D0439FF5B2585A53C
-7CB0DA52270915680C1610576D93988FC7CBCE8F8EEAD343E3ECE86CFC8D7D71
-D73F8FAB6D0BDCA8250D0E561E2A9F3A9ADCFCF2099128D1C3565C6F5FC2D898
-DF5FAA3E7F348F470074C814565E4159A859B8C0E0E7268FCD3893A97143C97D
-A6DEEEC5D09AA10EC8934E9DCC5E576FC9D07CA79B87E618EE99342CAD8F88D1
-AD71C35F81AE4B0670B9B7AB53756337C1B4140E17AA50A7E01776A21B427863
-7189D45A4CBFE2732A1C68594F1FC860D909E575E1ADCE69C01434BF4EA1D1F5
-E5754C857CEBD3BC5AE36CBB335677C3FB2AB5359C205A5A615C61E1FFA0ACDE
-9AA36F020869427242D783CF0D5CA4661A6578FA0C8FA8C86C0D95192C772C12
-9F71427E98CC2ECABE772F1E066CBCBA4B3FCF3BC8D6A3496230AAF1232518D3
-987752F69281A72D0FDD5334B63F8D214124A76F92D73E55AD0E1C9828A733F5
-2DF9FC916D18EF588D0B6E6B6DE5B2D9E2B982BA91481172FE7207DBCCA477C2
-C5D7668B90C5A53C0875343B13CB41E290D797B3D3B74F933044E6A0618DD343
-C4655B4BF50E196BFEEE9E90A5452E103E9908E5653DA518D9168AF6B92C0280
-EDFD492E80CFEA97F0D5A4C1297948781225EE4A1A221C84237E8CFDA97F3AE9
-817138D719AA3695092F577130DCE43536361B0B1913CE024BC6D7187DC5CBEC
-9944A379E06A30C3F7DF8AE14118F09914CFABA3663F487F40A6B7CE9CBF3603
-6FA586D172E208E1B64249C900750C97F9AC36DF9F01A21D4A7F66505C1A39F5
-6C3A979CA5C659138A19A0F921F41AB5DDF230CA7B25EC712C533BB5578654FE
-792A755E06C78C1C38591869BBCB4BA8E104C526874D7AB802ABF3AE11351246
-8FDBDF8442378B750791AA07B91C01601ED440A2A2AB297E9A391B63830554AC
-98D4F2BE58EA4971319809A9DD43105F862A32DCA1843E4ACAE674B0F7E564B6
-BD55CE71EFC0584CDF662838B2B5F07ACBCD89E310FD8A093E8A6F2D42896F00
-D1D790C36E8ED8ED14DC6A7016DA3958C8080197B9D7C6BECF132177B1952CAB
-BA8FD06723976A15C11EBFB8583D60A0419A1EC38AC27FF72E44C4FBC50E6678
-DE660F71EF05A62FF9B7E8DDAFBDFE0FA5AA5B5414B9B09C1D7FA5F341F667E6
-039761234611B4DF95C00F0F8E5E3B1E422BE64FB3CB9E9EB717013DCDA1B2FA
-C4EA1B50D44CCC52E2353E2093F6C6FFDA539EC1544AAE20BE69E2E1E9868CC6
-C75DEB5F11E76920A47EA036AD43A4A52E9FB63CD85460DDDD7DA245E473F963
-7828670F0500743777396F1D30F932E96264A698CD0F23159E27A09E713CB446
-5A4F3B4D0B673D49E46F78CC080C22E5AB98AF86AADFCF6552666ABDE794CAB7
-04CB0C8477D8B699E568FEB8327FC96B92AC0402EDE38862F87B11FCE423DD0B
-6C9CD068C7348B612C35808EB2CB1B2BD3400DD973EACE674CDA7C449AEBC103
-B043D17A0793255CC7A361795D577BC377283AC947AA0E59F81CDDE47701CE0D
-F5D3677B49077D0673639CF11B8DA93CA8A7A76F422CEE260EAB4DE19DAF9AC3
-C5741B32A9F97D0590F754F755C5A3402076BE172D351ECF628BEF003BC60B30
-C428A9D2122A20CD48FC9A0A2FE5A883A333A2FF118B277EE09983BFD1066D87
-CB0B3AD0D1F47DBE7C600C3F7DDC827D7B0FF261AF39C8DF0576FC59521F76BE
-B7AB7316FA464B7BA25BBE589B64802397308B8C8D3C561EF52B47BD8ABC08A9
-3DF05AF3B29EF3CCCC7DAB5BB8A3C79CCAC8F29C8203D0ADEA05B36BD6DD681D
-BB197AD6010DFE029D34E3296563F62BA490BED1C321AC530EE4BE67E4B56703
-7AADF7FBE1C8C4AC90B6B0A4A95ACE92682FE2F70B2B87DE23D78067330C0448
-DA9FC56D0CCC8726D4F653D85829FD173853C5F488F34E5FC00D8B94A11881C4
-E46EACA9F79A5DCB6324C0906426F1169EDF0F9B6AB05BAB4997BA3FDD694E94
-B21D5348CF1B9928A0027D9D9AACF90D4E7AC5400B232FC60116D10A373D5E1C
-4C4E1623DC16478591BD4F9AEB5686F5B310B3D73FEED927A123AEDE84CEFEE9
-FE91FD4B4F9FB6C346E08A9B67777FF1E22DE47CD95A2457BC7EC2A206250BD5
-AB2B9E95F106ABD8D282E7FD7A5FD7ACACF5EDACD560DE555E587BF09D5F7FCA
-980184C6C2A4C55B199929CBD0B5966ABBD4685AD2314082B4B5C33C7D94E3BE
-A570E0E264A8CCEAB0046EDAA36F2F6C798D23441CF9901F5D81B490149EFE0B
-C2481D197078E563BD9DB2DAE403AB11297F518948C140663BEE1778548E4B66
-218200CB791A933BC4D0AD8349EB071AD0FB9A6CFE2EF8CA7F7D5A1D340E967E
-4D8DA7B346F882893386BF345E53A767A18839E28CC3A2014DB90B1D59D06506
-FA3D1577BD57A29601180D42364844F0D05C8DEDCF8F458375C89A8B855325F2
-F0E8BF98FAA00E9BC69E1532124B7C30817C225D0F426A1105F3999FCCAF1F00
-1192897C5C8EB49578C71F99277B70EA0E34693C7F0E8624D9A5F80735F40130
-5CA8C072D7BB06EEEE2ED4C66C0DAFDC3C65336201AE29F9D01EEFA4693B38
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
 %%BeginFont: CMSY9
 %!PS-AdobeFont-1.1: CMSY9 1.0
 %%CreationDate: 1991 Aug 15 07:22:27
@@ -1005,7 +748,6 @@
 dup 72 /H put
 dup 75 /K put
 dup 105 /i put
-dup 107 /k put
 readonly def
 /FontBBox{0 -250 1171 750}readonly def
 currentdict end
@@ -1034,47 +776,39 @@
 24F362B85A58D65A8E6DFD583EF9A79A428F2390A0B5398EEB78F4B5A89D9AD2
 A517E0361749554ABD6547072398FFDD863E40501C316F28FDDF8B550FF8D663
 9843D0BEA42289F85BD844891DB42EC7C51229D33EE7E83B1290404C799B8E8C
-889787CDC69C6F2AE63E19FB4633FEE6B85717F3486041E446508E60940A1A1E
-F460F8891A95747F9800D2230EA3242D8A5C16FE9B598A63516BBF01EC34284D
-1B1D17B874563C1B18328A73E0E7A38F2325C5EE85E8F4E33633A0006C01BA40
-9F4E6AE301E0E21483F75C5587FD3D3E59D163B8B8DBF2585F0F4F66112C18DD
-29564F7884314A678EA73BB3132CF1BF92441F78D18301AB664F6D41277821CE
-D20886BE9FE329B43EC7EFE6B659DF84B32AB0383004CA6ADB93F5F20DBA387C
-4BFDEBB506EB8C70526D75BB14A124F270F36A3FABF14BD04C55861FC3A170A1
-5F3D40628B6A30FAA7822597199A948EC64C94A60BC3275FB8CD316915170252
-DFF55169C5AE291F35BED9283099D31D442AE69F667B17842A4A21F2141416EA
-1883B0145FE56DC106AE1587E3F29EF4D7C3BDF00D5FAC5032364A27DF7A4C95
-93B8787B92C071A2181F42BFFD15F8B54525C4D7E62AA9935209288978D9FCB6
-49320BADA52CC8E1C1C408CD09980245C1BF21DC3CF5E325518B48042D220A36
-56C0CF3F957C2D7C89A08B1A8A664AAE858E15FEBB47EC35660B90995AD5F1E6
-A286BFBFC90898DDA4AEC582ED09F093CAE14EADD2907C04DE092E1FD5C95DB6
-8068964595B32A8B5F78EE71A7382118BBC42B3BA552B33C08721C3754061E1B
-8F650DE8D5C82CE622498D8276CD5C73C264E8907295AE9FB56FE2C95F2FB476
-EDB76416137C3A9E0BCD1851B38552CCE4E16EAD86D21EFB6CBFC54E828B80B9
-DFCC3DC676ACDF3BDE92655F223C494A7C2EB4A49A87B8BA51AA2EA432D79A44
-124709DB9B14A8E7BF9BE18E7C42F2F2C3A209E9C0DFD050EF33964C983002E2
-C8299F39770871757A5D024A9064F82DEE3B8F1AEFDC37639311F840ADAE56D3
-6D399220C59B8237AE73B49387AAB6C3484A848316D3175EE98745B466DE762E
-1BF6B0B8CF6C8116E01603CD956B70182D1483BFED09B74C731E77B2EA0658C0
-084D062B01E8FCC617932CCFC22D86D1A6CEFB79E8F24D9665BF3422B7ECCFC1
-B428AC2B2F7C2B3F023A5CE86801B922B2DEC6107EAD84EA75A15F1A2D06553B
-FCE9E9E44BDD970616F0614ABFF4F50D444A895524CA8ABB29CC8EA3A1BE24EE
-3CB0CACA7F56904FE953047C980C07854B00FE2FEC7D163A1FD25C0181842965
-E107212C68F8351196C731A0C6402AD247833D4FDE9755A9DE628BB6BA901ADB
-C10A33103C738550A7785060E7AE838D475FA431EDC03BB1E56E07D3219F934C
-7C8B80620B5E2E084FDB8DD50867D2D74690513413B3F40578DE8F18AD0F0E29
-D2F872684C394B2B459335A10B4AD1205FCD2CCE978D7968707A56CC37213185
-40B53648B389DEBACDA20A74DCA5B2D3DCDEF692E8E9BFD58E6A9E183C450774
-40E72DC3E2C5CB50638220F53E1A9630955CA24EC830913349C57C816B87ECD7
-F5C5AD47FCB0735D76D6E6BA0ED8AFBA383BA2C01D3CCDE81A31D32180991EA5
-CC83B912EE6521656396FCA209E241BBC12E4EBE668A6D2BEFC11762A4E3C378
-5B05A7DDF1FBD6ED2EE8061733CC947ABD7B065560CA4DE951606ED771A76B0E
-74F89C8784BBAEDB844B118C719D73432C7AF71C5C9DAFAD60D390E79C17FDC1
-033AA6BD6847A92538655DC8C8E8952CA605A5A8F913B4727890B8536B65A021
-85C7E72B9FBEFBB758A6D5E6EC97A7A35D57201AC9665283F8A77691F10AED32
-6927909DF0161F49C4E77731C2D54077D45DD080D4FDCCC9C12EE84FBD682478
-891C4DF618C07DCFC0E197CD841D19205BC9D707CE78BCB6FCE1097F38BA445B
-23FA0E33C7E4DB82CD2FFA8B5FF498B974
+889787CDC7AA8BEF7021B3C18A0A61A68CCEA80153A2CB230B939007CD86D2CF
+D70A543B1B94F5D1EC7BB7868861EF151083F93D5AEC012A1F33CE2581A796B8
+D16E956F8A78B726D53167F7370093267A1B5C1F75C1C690FFC9B2C79966801A
+F4955B0D72227F2F3D5565EFE1B2561F02A7DEEECA0C2297BD35D77D2BCE517A
+9AE117E66F5798E7C4FC61F9D783D0EF484F9008B60375D47B7EE14CD88DDA1B
+A1F8AFDB27FD6747331DAC6AED72F2C13990E39F3E941922C43DAF6E87FB548D
+3B78D501AD86A17934E6D71BC05A4EF49F7D7EA8486BFF719EA81A675AC49563
+FF255EE62A52B9308A017B1353F20D1BDE68675EBFFFF0E2520C517F92B6A61F
+93E69954D5604A032E3964A51FCC34CD4CD73372CD0DCC03D9EE3209D08C13FB
+45EFD226C68CF284D7B2A6CC48734317BD0B907233361A6E1D33BD2F2347D67D
+8C41C879911416DB5553B63F893C71F75CD5661ED9BC738C023CE9F6B4AA8B4C
+533DDC65F38B1928EAB6B8C0ED2F9F1ACB7491D2FD1FB56C9E30FF319F461712
+5EFC8DDD17809A11A390B7AEACC10349CF790654803CE1C199BDF0BC697F2501
+8CBAA3C3D8CAB28881BEE2B7F8FE17CE6C57EFE2D6098CE56EDC98B7A97B6F66
+B42F8B92BA2CCFC36D485A93CBFFC26B812747C3BDCAE6A687180F2091F6A563
+3C171AF1AED9503363CA9E1D6DE7877CD3680B433D2B9F324F25B9176904D44C
+30611FAC61A8D169485A4B79A5096077A6B7CED643870D6E4E3B29C2B3D15DDD
+B17326D10EFF57D2F5AEF9C26746EAD869549A45CA087DD464F6B1AA54111703
+0261D692BEFE10B85536A69A5FC62584EC0BC1F76AA77C1EB725ED66E818FDC5
+7038BC4BAF27BF4ADB38FF98699C7BC0B39695590DF752D5047BDAF341F5D46C
+ECDA3A276599AA31A7BB9C1811A5561392260DD18697917B5703156EDD79BE47
+7FF6AA7EE9102D797D659B04483B85DB3B96EF40D78F3B1C6AF933F5AA8DD1ED
+BA7AC59047563AD41736482E016B5F8F54F4906EAEBFD801FF15B088A1A49BAF
+936578030E1B9660CBEAC955AB7DB4D56F3068D1716D12782661842464F13934
+DFEB992A85A58A2779452DCDC7DA203A1C07533CC89E08C86C366E969A1EDB48
+D58C64831C529797817EF6F129692DA2FE185A6028486D7A900938D5E6B6B8C1
+B66561DA8F2459473B5EEE7B6BC3303DB972FF2328600DBB81B29883A66353E3
+226CDE90C79E09DF029FB3E150F5D0633A3BC77A905741C6358895485EFDD910
+26FEA0E45E7F6CD7B2CE3F10779904CD4307DB531DFE85CBC97A1B21CEB953FA
+96FF810B352080BC8AF0AE2D761AAAA2EAD0035E86FF5F0577F2C0392311453B
+3EF22948CCA12416579A3AC14482B8A42E2AB1CFA4CF138BD3B77EB73AC61E67
+A87EE58797F162E6CBDEFD236920A7A56BD403B30870833B9A2FBF4E201470C7
+0A95098EB7
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -1108,7 +842,6 @@
 dup 66 /B put
 dup 68 /D put
 dup 73 /I put
-dup 75 /K put
 dup 99 /c put
 dup 107 /k put
 dup 108 /l put
@@ -1142,63 +875,55 @@
 165CE32F5349E857177D94AD6396570932E1657ADE4D3FF57A3419946CCD210E
 57E5A1D91CF708395942527D127606350924D71BC21C6F969288B1C8CA3404ED
 E6219985F7301A20621368F74747EAD38990A4C9F2B62913B8FDB93657409FF5
-178DAA7F1218B6F8EABB0BD9E0D61A82A79D6B4824BE756E96E643D04C4D419D
-EA5D7FD17218AE5BE43C7C7FCCA887291296CA23ACB6E4FDB42A8BCFAABF3A72
-47D903208E2A61AA58467F6393DF2406BA706F2DA58A99C3FBC64AFC3167A16A
-6E405C1CD0307EA12C6F59027DC38A9B51D72A0F0D4985EF8B4FF1B7734F34BF
-2225D04218C9E6D83FAFF4CAFE8053E548ABFA8A1B2F57E4497F122805BC7292
-8C07BD6ABEAAB7F3F29966B1F68341CABA319AF8D81E1687AE5A87BCD83B4ADD
-FC022D2493860742D73CC1484DC38D0A837915A2ACCB018A038765E43B731340
-843023B843BD5C3CEEC085763950DE7A2B5E1364B8C4284CE8A01B16C7EED548
-21F5D583779650EA0FAFE73D1214BDE7FF53BE6284FD793D1A5C9113E65EFF84
-C76436764F6672ADE2614F86BAAA6DADCF7623C791E45BFBF89B1D4E22F09BA2
-9BA14E76C6E246B7215815F402A89F0B0E0FC3256AD365D6CE74E11BDDEA8824
-A387B188B425BF5A00140CA9C057878D330B770FEF2C6DF873721BF826BFF862
-6047A2BCE7D6B096B553E180A9FCA15514B4FCB1CB2A2665A97C9FC01539D240
-EAA7178D33374781BFB1250C2194A486B4247812FA4996CE6CE4E501B93725C5
-2A37752C9FF5ABCD113C9047BD21BA088974D294445D19F751B5580D86ADC8E6
-93554394789A1E87236D69F191393AA59D8B9356DAC33926FB600AB62B7011B4
-F739507B8312C533C8357984FF5E0D9474D2B2B62FF736B4D3C8E8DAEC148831
-53606B8C245D4E93E9248D462EB3CAB53E89EADAE5ED1B739C803A65F061E242
-60FB9FDCA9AA84966E5BD0BA12D862F30DC38E6E26D37BB3D7F649B7A2606472
-C0D911FDD0C84E62952FB043AC0BAB1234079AF109156BAC11AA81E297B3E797
-13D16C553E0F2ABF37ADA7AAC4B54FEFD89E02B6F839B0D0EAE3200DF5EA5CA6
-ABF15982B2AEF9671BF5DA347BA1546514FECB4ECD915C04E94CEC5277F6B821
-819B183ACC312B5485862E91B3D6CCF5F6FFDDA261CFEF4167D5A09CF6E8C018
-A0CB32843AE14BC72459D65550AAF364384C9BE9278CFF75A34F6289466BFBEB
-0536C5179F8EB8EC0BA2DF992AEE5EC75CCEB4E7EBB88741DEE53813B7242D79
-59FCF06D4A7CB7A83D8725EC038DF2FE91481E51E48B7A54B908D8BBC04A95AF
-FB084F12476C44A28677D1FC9C18CB0CDB16C8F0CAA9D074CDB8E473BB7F2960
-9B0865CCBBC1179F799407D5F3058F34D99AC13F55957218FBE14231E14A4056
-82FCABE094118DB5248FB73B1F2184B3F38006FCD42FB9C1E0D6B4E9B65CECAB
-D72B57CE0DD32C8F2A35D804595086661018F91EECF98A50FB3D439F36F1BF30
-3944956E93B34900704256016F8D1D7674D1C2A4CC497536D28DB14C9446F2C2
-BD6A54AABCBC6F8902ABCD17CC078F9DABD1C9B8592591B395F87ED0383439F2
-5862B9B0C16E28C963424D8ACBE62C72BE08F3E265D0FA014827930F0831B129
-8E77B7FD86560C960BB238B68936467C748BD04E25F4A813E9B1EEA6E8862180
-F5E6F6E8DE3D35F41188F8392FBB329D0A509074AF88A74AB032ED2594DB44B0
-750A5FD5623202FC13FBA525BCEA5764F193B1C1874E37BF237CA5C762543C61
-33EE795E30A1BC6332D025339B29B55CF3141EA0C0CE7DBD9C10F4930ACA4C29
-623F634DCAE17DFBC9CDF7A49F34FE0FC43915CB29AE026D6B737DBFFEC75E99
-B86A8B2FE1898B1B8451995DCDC2226F2671F395EA7D2B15E57087867B4844DC
-22C350BB74BE1D90721109E5E2C622707EDA18637C9C997EE7153350F1C0AD19
-C52F31501847312C1DA437CE434CB6F763BCA482450AEDCE0DEA98551F6F7DF1
-596CA7C0A79A7CE9F9B8D427E8D3C5AA351D51E41E6E0E4F744EB9747B046633
-B9FD901F053CFEE8566C7A5E737839B777F4DC0545BD038E2B4E0B43D1331FCC
-D0CAB830E9B6C92572A24B8FE3567A87409981A028F120AA663AF63596A3EDEB
-5783A0A7E371D75D20949051B23676D12F9CD0AC8307403605A9777301D8AE13
-0817870BCAB1FCFC92BB6414E40F452C2C2F1174E47CEF667767D7D9957A5828
-18158D2878D334B92E3A5B14354D19014BFB68C21C2163B601AA43231559A908
-EC1E3A73B41B1F66AD1FBF2BB596F930CF96B9510D6C6BF2692F11AACDF9BADE
-176E4F8EF6A704BF4982D7B6A18C100F3204EAC427CDEE4DC8D4D552652BB423
-DE767FC85EA6D5240DEACA766F8B9478612B206DBFB67D96AEE2E06E0DA26976
-CDC085A28B0E0709A6BBE4D2DC539BCD0CD2FD8397E10D35F3C66DE53411B6B3
-19B67DFFC7FAD49355F1F0361193F1BB11461871473E2B009CAD0D60A243776D
-6FDE3D5086D772FDA88E282775ED357C59C2CE4F3330450BD2C75A0A2DEF5511
-47F01F0AA2FAB1B33EDD055AF3A722DF3632BB71B68348026A51C77AD046281A
-4A31934DAA12CBE4CB7482CABCE84FF893491E1F83E14DF4D61187F1FA3250BF
-A64BE9628247C2444FA69280EC177FBC0AD3FE7C56C4025FD390167ABA4B493B
-AF5DDF5AC37DF05FD9D53D1F5715C7E8352BF880
+178DAA778F54DA1673C1A812C50D58D6806FB895FDAD2A533C8414C80C79BF8B
+566AEF7CE58050977EB7BB021395B6FD4D6CFF82E374195D576C703B992375B8
+922EAA9FB83A18E88C285433CD8D88D0AFFEAE314662DE8113221E6AD501B28A
+201BA03D4A775C2A1E7DD76C1D3D17D0C7E2D1565B8F09D43301AB29E8CD3F7C
+0F5EE7CE456F65202DD3C4607E06C0804AFF73C3C48CDA8FCC099EE7B1D64BC2
+2E78CF03264CCD7DF953F7AEE296134D71FB739B54D698C5BD7DD51D132CADE7
+255DBC88CC10284575C9EA80C661E5BB77F523A9A9A9BA489273203BB7EDBE01
+0C80DD14060E9EDB8A3F738804C97E3B2F18C0102FFF9962338DF4731CFA7607
+24C06A1DAF643F4168FFCDA8248885DD6A1C852EC6D8FE53C43D367BE9964CC6
+24A1FCC9BDE400F01A786BC284F867D427AABDEA67F31AAF3E39FAD3AC3BCC00
+A827347F9C536923CC4EFF0E1719006193589F22951DD20CC3F03C7E77E0E81F
+EF7FADD6C19F7BB059E592FC2E7CE7AA4D8D2B6F562AAAFE79137508E9585C60
+57DC4B476E0CB2BD623ECC9E2816525BE58FD789A9807D1A72C96F6BFC3CB8B7
+751D7947A342C7D8FE81607C6CF072781833342108A2F55C87F19B63FB41269E
+2A4122F06C32B218E1D5420F8484C614C6D342EAFB376E7145C5DC72DBFCC106
+3D706138459F29FBB5D7E3C3A2D0AF7783F81AEF4FCE1279540C1B64DEE4A6F5
+5BECC187FFF241E428AA0F3EE73D15A1EC2E1196D2CD0A9C6B17954E98DABF4B
+BA0FE5833D4388D009823A3D76FC43E368D4A88290FCB6305F8CE0BE0B89C817
+ADE68BBEA4B0027DD3566698997C040A48024EDC952FD3EC2D3FC12ACDBB93D8
+7D630BABAC256F3A21E85B71DF64650278BFF24EA0FDEC28EEF2FD8F3C41BCA7
+368965EAB4560A281FDF4D8141217E258729C0258F985C61DEC3C0E152059206
+0DC16B49CE44450686A0FDC411FBC33BDE8BF633D66F0D5FD2B5A0B8D62A28DD
+DF3244BEF978DC1E7DDA36A47BDB49FEB773391463935E0010C12CA961DB7DBB
+5626C13314C6CA93628657B940D3D9708CA3BE1AF0CD52C13D8F567D12757B7D
+AE997C3EFA2E1B7CCD2CE0E7C79F832F4F553FC736D7ADC764F0DA55DB635EBE
+602796C9CC04C62AD97970DC967C734F6C334F3AB8C621B48F955216343F0852
+37696612253AF1D7A99235AD6355DA816FB61539596A1025ABDC39B20B8A70E2
+DFB16ADDE77E3D5D7D23474376FEDF8FFF26E8C609200ACA16934EA3FAEB1CDA
+0642F9B2022B0740D576BB94774543EBAC99D632C2A3D62DB7494F2CD615428C
+B0B1A15E5864329E89D78C1D7549618265D775D739729EBE63FA0D93C2A87F3E
+6B3DF29578D28688BDB36EAC63DB78E72F8DF9E7B37F7EE167781DD77D75C297
+611F6E1D8FFE666B122ECCBE36AC4FCD2353495DDC3FE80F2E3834F89E20C610
+BFD7C1797C2F6A294E87CE7ACE49C790BBF7BEDBF2FD17A9D0BE725BCA7725A6
+548D6FDC6A391E4C596862D47D487023ED42E64FD6D942DE9A4AF9113297D252
+69EF29A5EE64BA66FA501D73CDB22E1D287318A91B910952C8D13A5EE19BE9AC
+C711616B263DCEB50FAC76EE9519293179455CE6F618C3C8604E49596B5AF2AD
+A32460C8372C27BAADDF2F5906D0192C5A0568B5098E237E8A4677A9CB3CCF10
+9640EAA533948A6C90C818E2B1A6328633109504532F3D9408EA93858ACCD7AF
+3D7A2FC887A377ADB54ABE6308B8C1EA670FC46B2B65E0A4235BCDC991126BEE
+B46C9B17AAFE8571A01085F170AE61C899D482D59FD4F2FDC503D8D21F24B0B7
+CC1542AE2E9EFD18108B239B29AD0311C427F5D3D785B029572785CF92E9D31B
+A022B2C628425EEAA2B1C4207DFD3B33D1400798789CAA1100AFD4F84B52E4D4
+D447CC9B6FDE55A6BF623D0390A33379AABB367FF2C7D37B062E32C094B93E56
+46898A5020788BD480D10A9875633631FADD51368A9517102A65490C47531F68
+70A51274B94BECD109E5E6EDD533139B4B74CEA7791842E989C6C3A7610BB7F1
+35BC84BB6E3A426D5A534F19447066BF32CA89E122E6F2F95945FBE3442CDECA
+EFA44890BB7351F7266852203EE3BB428B09F5A9BDBD1E25A10DA75E6257896B
+89AE4EF1F8C874922819C760B36E1F583D6E7B1ED2CF0D74399997ED2D7B9B55
+
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -1492,10 +1217,8 @@
 dup 56 /d56 put
 dup 81 /d81 put
 dup 83 /d83 put
-dup 84 /d84 put
 dup 90 /d90 put
 dup 100 /d100 put
-dup 106 /d106 put
 dup 107 /d107 put
 dup 109 /d109 put
 readonly def
@@ -1523,39 +1246,33 @@
 0730D8E62D9C931C372B31D1A810B12386ECE812FED18F006FAD29D28EA30D94
 D5164361F11238EADD1CF8CC21BFCA167D9D03AC61818DCDDD6A2AD7306C420F
 53B8DEB01E309F3F6DD0451836FFA20A22DCAD65D0026672F7EAE8C1DEB4FC3B
-1023B53F919693D926C30EE0E764D5F0718E1E6FF21E3D07317477AD31CED688
-2E0DA3D2DB4B1A3910CACE5E832E30A60DBEA92E0879C5DC6F0BA3E32A9B14D5
-C1F77B4C19A7932E7396879B5642FE4BA5E3FDF0EF9A1A4797F5405BC9B26D35
-50F93A90C205D90F40461BA55BAB73D509A61DF89B0BF9F6C4C275AF75884F89
-AAF2194C62E398C695EEB7BBAF0E9E92CC45DB232F66E730C3D55F23CD93F2BB
-C8221F35765D30A2B1F65222C33E4BFD9F4A7F8CAA7E4D21CD286FFAFA550257
-DBFB3B9E3D92946AE600E3C29FD48421889264EA160C526A78CB13E7CD602265
-ED3982CAF9C487EF0DD39270A0AB93A38F30FD56E69E7ACF868B40D84AFA0328
-C87BBE2A65151184DB7F35575011E10DC422D1747B3C356C7FE39AC5F3698062
-08C12BF7E860A9E14181110493145D8F1FE1FDBFEF2854C090A545C121D065F6
-58F8C2160485B5C678AA4AF91A411CB12E7B58B71889F9C0B2342B3404A01AD4
-41C82F74246B6DEBF9B4A46CC744D9F1D202FEB27241DEBFD5A73F828340AB92
-AF43B11B899F36569DC66A1EF19B342CBD21ED2FFDF75D178E8587A2258CC0A1
-64EDA21570ABC89FEC77273A281F27D8CF3DF89A3E6DF8802C6450F6343894AB
-B03821EF1C7ED685AF7205400FC5825A4A0C40D761D1A360856BEE4904972FF6
-D6802FD27CDA5CE8E19D19889130869CB22DF15171866C0542268FF8672F8081
-DD76C201E1838C20964DB5A440C9E8A9F128F631534B3F3F1CF901F4E03AB247
-6654C40290BF096067F7FC25D796EFE5EB562AC7EF9279CB74EF2164B1208714
-191A80357268817E3CA91A4C5925D3477C0BFC5032C563A0B021EBCB65417EA2
-5782C593550C457621B3F00C41338DE756E76C73BFA1B00F9BDE1A37424B9933
-57FC7B8DF11922D32EC24509F0511765EF7114D375F9BFE2B04F09FB1D0ED623
-3636A0495F919D97D79168B219053BD5CF93728139161BF678658F920429E549
-015AEC1A7E746C15FCA1DAE74A0BD6E28B8F7424D984CDD50D1FBE03DBD09EC4
-7976ED8B8DA1E5083CEC0941EBA1E2992A8ABABD9F461F78D59DDEC5A30ADA8C
-6486B971C7A9898E3EBED14C1286EE4A55822BB5E67F03172FCAF504415993BC
-999840ED64B9365383075C05BA656F530016F6EF6AA9F7F20906295092EFB7E7
-A6939C317FA58D6D80716D9308FEE2D3C8499CD186F156D46BB52B819A66933C
-1B4102912ABBF1B1D8131E20A63B56BBB999D9E031021530E51725BC4487AE07
-8E62A24CA671FF98F50810993D7E75BD44DB18AED0EFE016B411C3F44F7D5C0D
-8DA329C63ABA3AC1B7BC5DD0D0379E15D77526C6F9126A86C325B3DBBCCB7B57
-2FBB8BC787A333DFE94CAADCDBE676A28A30036D3FB433E1C34BD05EB16A7845
-E0CB2B3B0436003A180785C7D09DE3F6D9715EA8AA37DBF4FE9C6A1852136F6B
-4E92FDC7FC7F439A51566FA6FB128C5BF71B94AFFCAB955C0C20DE
+1023B53F919693D926C30EE0E764D5F0718E1E6FF21E3D0731747E62B4D1BC67
+A9595FDBB0AADF72F2673854F31217622471A5B3EE0EE3D878016CA2862F2E44
+E9C80B2CE5F38713B52829B2AB7F755FBC1D957CD2975FC4D7282A95533C4F74
+B0D5308C41A7AAE598F168A6095B4F6677A6975BAFB0BB7987F04AC74A2B81CC
+9B3CC5E3C69083913CEA6AC9A16308D7445EF563D146D77777A20AC80FB29126
+B4AC575D1EC6DBD99B4E1FA758A00B07A1B498981A84C58EA698E1756814B572
+08F49E8BA03A70EAA58C4F1CA0F03029CE6EB53B35A6F29F8E909067A7B45E8B
+4DEC6D6ABCBA4E65BD082B9569C1DC4CDC76A51B52F0D57FF0DDE89F285695EE
+2CEE16E66C51D541F2958F68C52A542AEA3DF09C767637ECA8D674C373E3AD85
+2201CEFFADC1E54F2CD24596268F310298B0D893D036819FE6538A57C76D7243
+864B812495CC0FB1D0DDCE3E5C537BB88594066228870E9B01BF1B0E51C8B077
+1C84AEEFD61B7D3BA794C8583B1FBAFC3DD21D567BC5C0576773C353F0257469
+B40CF08FDF25E8B223E67ABDBEA8A9CD6025FD8D249D1DCAF73FA28835DEC370
+2D0554FAF046323EF0DD853F86AD3D33CF92CA75A8F6F84050AD6564A337570B
+202C5B86516A6B90B01EF4A104655817320B28DAA723CBFB9B7F85E28D760DBC
+2571D19DA64EF8ABA248625450F0247B7E84ADC3A6D62F752A43B9B533AB5E10
+BACC25CEF58AB95F25FB31EE74FD20DE73314A5AA9189816FA26A2CE2372E6CA
+FD7BB5A0175D007D2E07EB15C06E91BFF1288B05DFD1BD3BB37532B37E0F1DE6
+5AB1306BD3142C107E3D55736416A154D466D5D7BFDE27E523F14722D752FFFA
+49EC563F38519540A136771F1FE8C822CB0AE79806F29AFE4F0EA5CD36E6BEE8
+74BA09AFE8A1127029037ED58F9DD4CC9A579A8BEDDB1A29E7C5BBB3E9C21FE1
+5C32F3CFC27089B6C2C9547392D929AC85F0A6277B8FBE8156024FE324ABBDFD
+52D2865E0027285785393B1DA168669A187C48996EC5E9F6A34BEB065D309160
+6FB3F5FE56B7C2F15ABA5570E5E15653E7941C233A77198A0160D625A1304C7F
+E6E01A94404229910B67A027CD8FD9A328CDEDBABFB5681FBCAFA729D6CCA65C
+9A76B4658614FDCD7406D4DA324A4D17AE1A50DC7FAF492AB388B13AFC95B010
+0BFD59B5DC07188B5306B003A1
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -1672,14 +1389,9 @@
 dup 41 /d41 put
 dup 44 /d44 put
 dup 47 /d47 put
-dup 49 /d49 put
 dup 51 /d51 put
 dup 54 /d54 put
-dup 79 /d79 put
-dup 111 /d111 put
-dup 112 /d112 put
 dup 114 /d114 put
-dup 116 /d116 put
 dup 117 /d117 put
 dup 121 /d121 put
 readonly def
@@ -1708,66 +1420,51 @@
 967F12567DA35A9F58F59C298C9D8BB023B1AC9F705CA45B31A132C3BD2BF793
 71B1A4373E71606C132C05A88474875C3E3E963660814FC12497D7A39ABAD71E
 6F08A07F236B72277178119C9011DBE677E6F550F9392455C07518C027D23C5C
-1344CE300AAF4404A774D4A1F7768E8EEB045857C99020FB4524C1E566C2A39F
-5D8AA93A0C98424B7CC40B65E5B5170222BB3B89307EE957EC0874904B4A2030
-EA5A0676EC57BAA7150E1B2A18038498AAD8A710EE0FDACA7BF4476ECF516555
-33FFDC653E9DCB31328DA6FC0A513930376EC939DCF76D6BDA6D021DBCE76F46
-BCE5E4C1DC7DF3AF2FB7CA5255406FC735234376F805D158D02216CD29BBD07F
-5AD0CE1EF2C48995EDFE15DC56356F478364F70E0BFF173296B434A058D773F6
-F1B2E141F96875CD643E3068F86E7EFCCC2CA74999675E687989772763181F54
-90C6E7869D319E165B9591C9DD64D008568C7FD301D7332513DB239BF0BBBF50
-38F2138DC2A9403B18B52B85055EB1238416CEC393A943F23A8DE8DA4B182D37
-5342F93839739A9A4E1C2A50DE4EA82F0552DE8D8828112FC8AFEE99FCFD0362
-22E1BACC54F8D5E72E4B4FC6B6BDE928D7545E378BA99C7C4EAAD947485F9282
-61CCEBDB39E89D50EF9C8A1C3FB432D8FF43E42E7B52F4B4C2A63172AA6EE6B0
-11637C28554C58F70BD1F91E127762D55D656F9F3E3E8693745A4F1ED3E8B366
-72B443A974606C9CB91E61876DC149F8BBCE918684DC1310CEEF3153A177129D
-1A3E0213C9F13AD0C7DCE073680BDCADC22DE00DEAF4898022E59BCF4E5C137C
-A96F4984FB43064FFBAF341F585AA574F8CFE2EAAE4ECEADD79F1780EB7C0DA3
-4E10001213412CEC8EB62CCF14B21D5C3FAD4F8823A788CB2ADCDBEA1BB6010E
-302E08F0945CF58490219E3721AEE3ADCE087508D03CEF11E481AD7B3EC73148
-C4DD0274B0E8543DEAECC72A06718A847993698CB6A6741D4FBA4E5A8E41F4D1
-752747AB4A880040B0A33C08A78E02A18162F7635868A02D4AA923AB0F950C72
-6E8C11DABB0F7240951F473AADA237F3B230EF695F3FD5C31D9E4F37F9875957
-4F542B5605A006654E211463EF241FFBB9699F65499CB7B2CD974ACA4113961D
-9E652152D9B804CC06149CCCACE9BFA8950A3C031E5FEBF9A7CC9F1089547AAD
-F73945FBDB4FAE06A7D5500C3E14A10F81FD084C8D09EA7FDAFB56BF9B22E75C
-9639F38CB0630E1716AD349044C82F81B7DE7C8F736D49157FC2AAB2C01FE314
-A4AA8B39A7F1BB69D1A064AE69AB837E6555B73DF4C4CDAA370D0B21243D65B6
-7D2908A2EA9D0EEAF170B048831746FA1639CCBDE295057EC5AA5C58D3F9E8E2
-23A7E5F639B157D82FE384F4665B83D293E8A858FD6E01B6CC405AFF578F3435
-1E60FAC26683DA2ED8E31490DC0957C344DD3AF735FA68B51A349AA8D8878D55
-5E9CA2690C17930C64C825259F05114F5CD404A60274ADB5936C9600EEB6841C
-26474C6AEA654D92E3BD3B664C17ED07B78915073FAA82C446D71EFBDD4112AD
-18E5DBE4C13B97DC1EB9B368D6BBD7360C02F6C5225BDC41571D1D10E0616925
-B0B2BFC075D17AC4E277B58F19F99ACFC4DFF7E9507CCA6E1E9D66F6F1FC9DDF
-D9B3D7E057035C4282AE49E4A80B9CD9469842CFE0D695D6F380CED1FC300138
-BAF6B119D48CB46CB7169B694E69B37E3F451CC3DAAE8A95F3FF2314CC8F7C3F
-8404C650D6E26BEF8ED90A4A96AA7649BF3529B7B245F29512368297B63EC562
-DB8A5E7AF439C2D90A2DE286F90439DCE58188A253D71E2755E6165E4F72CFC9
-1486A0F7FE744FBAC167219B4725C11A9F55021E3706E195B51EB65D606C3D0D
-422EE154B7188D51080489F1301B242FCB629EC28F0563541D581E29268118D7
-8E4B3F04E34DC7FD54BD662223FB19F6BD83B2EB5F752E0B3C9B356DAB9597DB
-DAADE277257FE6E56DF0D0DED93167643A5450178445437CA4C85FB43DE609AB
-40D5A454D2E9429E67587138EF56F6A79667DC64313C29FC07EF4B66F7DE2151
-C1E025D111C411D34D47ABE9DA962366B7336344E630DA6DBE0C2C5328645E16
-0ED72C5ACA50ACC1186C936804EE07BAEDB6CDD803E6428E0F161BC7745BAB98
-3BCD0D07C7A012C21604C0CC1996055AAE68D27381840F4269045DB9421C94B8
-C21B8A947B06F52DD7EA56B64C008C1B12041D5345962D89E9335D3CC4545F26
-C40C8A00897465CCA23E5F1C84C696AE76D849AEB6FF46F77BDA4C489E42A07F
-01386290CBE542092D312EEE5680634426AB2BA7AD23A429B3E616FD150322C2
-CA1DAE5D1B002ED68E0B4F2BD265874A5B07527BC8C8FF3A467214A6A9530920
-144623CBAB5E8E17711ADDCEE1B4CB0B1042AB3E9100081515F460795D8D58C5
-058073D3C879280DACBB5CB86FA7603E0DCD56EC15AE02EF4BF070121D7FFBAA
-C2ADF1359BA9F9C1AF44E460461DBDB410AB04D220033720F12B9BC429BE98E8
-2984AAE1F5960DCABEA97426C07FE9994C0682C89ABA599F2A430A046645E877
-D87527FFBE9E86A6C83BE9DA8810E8D52EEC11E191172BBED812D52E0F518FF2
-C02F22CA14A4978ED50FDC4238A64257A4EE0DD0679D2AB59870660FE700BCC4
-1895A2B5ADFC1FD02EF65A6013FA28E35E3403766C36463F62AE90F12BBA9758
-193D0E35417670A923E010EFA4C610E277211E6C84E0ADA0973D99DD3AF00977
-4D94F6E09C74197DFEA9F2A33477DFBC4FE41410935C28E543D686C3660088B5
-78618A6BC0398427FB5A1CF463108178160E1C56E72495DB542A7B7C8B1AC889
-96BF3A1FEAC0CF92F74CF883C87429DF939B8AA578EC815C229DB15A3312
+1344CE300AAF4404A774D4A1F7768E8EEB045857C99020FB4524C1E566C2A394
+BEE7CD6764BCAAF73F066EBA5B9969F024E104DE0DC2962B3606869082972FEA
+A08D54FABB9043DCB41A505B3A4F3AE34593752B7A6383D370946C9A87F10036
+CC642EC95973B1162FB78BF4291EE253FF847CFDAAD2B855F4A37CCA0B798EAC
+453F61831CBB9A59DB7551AC3D922A2BE50DA4F592CECD7A3DADA0E0B4A07280
+FDCF52DC0C94833541023986BC97FDFCFBD439EF9CD5CB1DB9B7352FA30B6FDA
+0B4D649E5D122F5AD2305C7B71FFAB2D6966F8714B70CDE5A2B0EC31CCFBF032
+1A94309F5CB34720E01415CFBA2D716637E546D3080008EFBA134331A0442D48
+8D2AFA21E3AA0B958CA7C0A761EC702C4AF69735C7F7990F1CB8F692AFA289FC
+6580007E62B5489850D99153AFAB1E543004156B78819C672E9CDA06A750CA26
+65BEBD742203984620D7012AC14790825F647BE1A1D08DEA400901CC9DF678D6
+F90B12AAD36CC99A025C602EADA452F859ED3DCEAD549F70C00E39E9CAAC61ED
+7C8FADBFD8B6B9B762E0D38E09F83DD56E7FEEDA40ADA6A39E99762428498FDB
+A579ABEE9B96BDA8D80902C272776C9B567F17FF7C28C97CC2A2C2EFC0FB2810
+853D14344BBEEDAAF30D2305BEEC3ACFA2EB5BA0432D9A062C60356205210537
+8BACB50F1E31EB531B6B8DEFB668F9B44DC5AA4D60F5F276D3F8B3EFFE3B9F75
+01AAC03EBA44E55B9FC3376DB0CE97D89FC8E61E0BF5FDF1CD67BD2AF81C83F6
+BFA6E7A3F6A84A771E4C7224438F0F3530F492E7904B5E1AAE17D66AE2B676E1
+D42AFD07365C783C2CF8B22BD9170E29473329D4E01774EA03177E9B8D556EBB
+2F1A5916C8CC0083B6CD62ECFA702589AFE4EE6FD7567759D4601481BC128C69
+470B4888CE7AF334F5FC5A9D850EC8B1E0AD076C7165563A7DCB5699C360F35E
+2C1D78F9F1472D8C403AD336A3DC14913366AAD6026B0CCE6E4A7E7D3FC29A97
+511F246F8289E0D61A632B4C941F98FB30C29D033C824F433A0E195BBA5D552F
+42C5A0F04581F0AC4CE317CA83B78D55F7062643BA8F58456FFC1BA7CA7DDC28
+4DA562910284B858E8405C386C1772BC39E537FCE6D36D446644F995024CCD02
+D647412F39A20F2A618C1D663215C49D0BABE2E3AB00A862C6B88780B0F084F8
+F5B4CD3D3748421B71DADA1EBD6F897745C0A5090CEB3933852ECA883910B83C
+7F0DF266FD3D524D650DEE8EDED7CCB8C53EF1695E7E9ED417FD3D020ED187F3
+01FCAA8AFF233D52094AB69EBB895A14D5B53F7B5389188BEEC937E778200C91
+4FBD155C152C77204B5964F969D4FE8DBEFF0FD4D2C6B29E3A7DD0C724319E0C
+BBAFD05531A8420F0ABBBDBE4D4D6C32922351D90FBDD2587A8CFAE4D0D15B3A
+E0F5A1B0E13A780E92D5BF96828DBA77999054D7F0A8377576C82481484D45D3
+9B23AAC517802DAA8A744E90641576999F4A88323B199430C6C8CC3EAEBF9576
+4D10403768A7AA9AAE0DB85059FC32181727F4FFFEC9858336D52360E0B414BF
+7B06D1410E5EB6BD1155CC714AAEFA22E9BED7343A19448E1724C212E2EF13C2
+EDE1E0F49CA109EF88B00684405E54147E763D24A74F0920F91D4353BF6F58F8
+1A37E840D601F1DE3677FF004DA904BB51DCD32438935AAE7AE956CC6BB13CF2
+A3F01EE6020FA3FBBBCE93674C798BBEB75945A25C1C9A5FA301EC332025E5CA
+7816A7D8ABFC65ECF3D4EEAAFA7438B796696A62C7007DBE64D80526169F5D4B
+28311B38F21D13F8EF807811F9BA0D27BA5FC48FD5F3A9AA21F48C12D2DD8BCF
+6590ACCE55B0B06EDA661B0A0514C83FE75E8450D3EB5BCD6B836B7951CE86D4
+DB6F235CDAF5E071B47DE4032FB179862411B2D622291E0EDD057B7AA9580ACF
+6DC286ED271822CCE92CB8598E7C4F93E19578B3BB780DF89514C30F7272DD19
+A70829291D05F9A0044899E516160B78003A912419FCA5A15B7D648214DC8019
+4ADFD89FD5AF08D2DDF10241296F77
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -1831,13 +1528,8 @@
 dup 43 /d43 put
 dup 44 /d44 put
 dup 47 /d47 put
-dup 49 /d49 put
 dup 54 /d54 put
-dup 79 /d79 put
-dup 111 /d111 put
-dup 112 /d112 put
 dup 114 /d114 put
-dup 116 /d116 put
 dup 117 /d117 put
 dup 121 /d121 put
 readonly def
@@ -1866,65 +1558,51 @@
 861B250DC3AC668CCAA5ECD8E58D2AF9499A5B822304FA2BEBA54D325363ED21
 814D5132E07D93D23D68F7366459D13762BD680FF9F4CD0F8361837F4FF9CE08
 477704DF03F1C879247FA5A3FFBAFD383F35D1033E400FA06EB43DE3BE149728
-E98DC609E89DC430440ACA19DF6660529E603C1F436D50169264DD4C1D4E9BFC
-7F8C55A5274B677060418BDC7438F32425ACB3F96656A1BBD5E073292BA41435
-6FBDF07389F4BDE1DEF333C4A49888E5A8E0D97B00F10B38EFD39FB880C16C17
-2F19A1525065C516538A6F393AEF6F549E72287A64DE399A243C78501CA4B138
-DEEB18428DA1D221F448CE3FDB2F666FF529B943808D4B45CC40436150AB0068
-5AF61FD28EC62F8EF2DD31EEAA3FD889801445B38158377C095696C2A8854373
-64C45D83DF936396024D7DF67315BB55AA6946776EBFBFAB85C7AADF837D2C29
-2AB94574F27FDB2F866E2F9BD283521B1FEA979A3FF518778D4F0A21DC35D24E
-8026F6AAFB30E96ED9F3B03569DE1E8C423FC5154434E20D560C0E6C60EBBFD7
-56B0CDBF6EE1F2BC860AC8429F1E1369C2040582F212CBCB449CF340A1EA5339
-20E75EDABEFE49D37FDF3BACFE6AD57E07B2830605B5C3B026A0DD80CBD39E89
-279CCDEF0217A66EF32D9973B50E7BD7965177682333F41BEC93472A53540948
-F686BE64B58AD5A2F95D007C4F542169A705F8555FE050EAF46D0C5F2209A0BD
-FC307F04300FD7002465D1B9D17C2FD065BA4B2A0E4A818347D2FC8C32FB18DD
-AF7CCF5BB8DD292AECBA2BBF5B63DF86EC2090F71AF419EE1766E4090DECFD4F
-EBA21FC3553F2D2F9EB2ADE0621FA2CB59E717FA5307DFF1E7C8C842BE6FB792
-CEBC808783C6F6DAD621F1B2324DB93685E3CAE0638F9E295152A3EE90A61704
-6740FD27241F01D026C4689D9BE8A46E03463BC00BB193FB44DD9F59E50D5E75
-454B3E85E2901F175DD33D66585EA3E15B28AD0C95F8CA5A40D1153F84CE425F
-1A0C3C9AF626C60DC35346EA209EC6170BF27BCA6FF446357607772EAC2F9D6E
-17E5462FA42EF172C8611897703DD92CDD8638A9E24529E5F68DECC3EDB53285
-A525BFAE30DE7983D97E9C1AB180AAE43649020033BF7D977BE7928E3E7C08F2
-C82A711255AD661455283549AD70AA469E7FAAAD55CA6FA0E3933B355EF73D2B
-3E5B224917F22F242FC3B02F34426849F66C7B0096F7A02674D27E65961213B7
-831C900452A0B1025436F3B097EA8650D0492773293866B67438AC79695A1834
-4ED6E723F43E94C25CB9368D50EA259271268CB749085A44842E084C2FD7B527
-BAD374AE6FDA7003FFCDDF6FBAD8EA1D2AE06FBE2CC77FC8ABDA27BAE2C3FA4A
-FBCA2318891903DBE5A9AFC4F5C7E6C6350392570912293758D4F2AF5CF3172E
-4CDF77BE833164CE639710F24277BBACF75BF33EFE8FF3CAD27F88489B938C02
-828888DB46B693FCA0DDDC0E3C984B769475ADC20D5838C6406FD1754EDDDDDA
-CA6FFF6B0BB72E3185A464CC3C46725204336F71357448E653023975ECEBDFE1
-9830D91D7F302B091D0C60A8D746CF9C077F6E0D6C7CF30BEAE1D2E91A19AC97
-8F3061D9032D1FBC0187E5CEABF76C9EC5281A1637A25B2F9C04859EE13DAC94
-91F1CBD7141BA69B360D8DE80CBACD42F9469D54FBF658B3CAA60FC19C76984D
-993678B297A3454E474B5D143480163469BDD5525636416CF32298EE50B77495
-48F81D1B15D249D148B3533F8F1B3646E1DA60FE4D310CB24271F2DDA32F2CA6
-C4403A257FB575FA0482830C5EAC479478F6E4E5E75C761E89D2066CBC63F251
-337007961767F5A911AA79A586E6C799AC54943F50E0B968B85437655DE4158A
-FD81F57E100B5D0BDC56FAE2BF6E007E858AF2DF540550C246AC0A1AFF3562B6
-B21EACCDB5A4394427A7895698E67052E382B5E0530B16AA6EDBDDBAB1766E08
-3D1F3CD1C48689FA80E2FAF71C5CD8065BD79B0D78A5231B07FB4BE093DCF458
-94D4D9259668ED14DA6D39FBB0856E199161A934E739E9BDC563C9140C70EC3E
-A5C883E86816B03AC018958A264107CE4D8A8C994C10E0FA73032E91349F3EEF
-64DAC055B703D1E7004366FB9776E72DDCC1C9E64C0B9981AA97279A82AEF40E
-5B5C41181F6D1D1A7F122C7580CBD34355C11236A6D991A9269BAC0121A67C34
-B8DAFB29E405F8B16EF6F3261E5517F32EC590EA830CD06AEA5C10F42A7BC77B
-3FDB9134B1089B0FEE64B84D9867F16060E2712D11C2F19543D79BA704544584
-F8724E0B2F2D0DAA40E1CDFBB1BB7B2C900281572B23A43D4D9B6A3051EB427C
-F6943C466D339D8DCED065AA08DA8233D47661FEF36CA56560BC5AC428BED016
-9B68A9DD1AFADECD17C3A253D7C7441A279417BFCAE95EF2FB5343D284AD8C10
-E70A8B11EB5846EC6FE53B7A731987AD3E6208583457E2830008CE705A0E3590
-7610F9C1B315CBFE9127C1D07AFD5D0E6C0898ACBEDABC7C33D92458976ADC68
-C09FD340AD5FEEAD779EDB923AE29FF66C5FA7B6A2231BAA3DF1EF5ADCF04F49
-3B9493D2156C5888ADF4687774BE058C2817A10AF2F62B27A252ECA6061F6548
-2942D756815AF559F89F2FA2F0A0414C3135417670A923E010EFA4C610E27721
-1E6C84E0ADA0973D99DD3AF009774D94F6E09C74197DFEA9F2A33477DFBC4FE4
-1410935C28E543D686C3660088B578618A6BC0398427FB5A1CF463108178160E
-1C56E72495DB542A7B7C8B1AC88996BF3A1FEAC0CF92F74CF883C87429DF939B
-8AA578EC815C229DB15A3312
+E98DC609E89DC430440ACA19DF6660529E603C1F436D50169264DD4C1D4E9BF7
+77141F1A2146B93D36F6683C8669896AD45E4B5D247AC18674717EF5F5F24168
+7163BF7732F8E2C1A45BAFACCF089E814C642F84C048D6BDA736E6D615F4C982
+2D9E6E70CACF0D4C73B73ECD6A2EDE42E576D55311BA346B8360087BFD7D6D5E
+164060E88992A9C211B561DD6E82A834776B485BC2E9A5ABF4655597F6468774
+614DC12FCDB2C29B71DBA7DC9E236D71620B995C2C413E53F9E0638EED8BDB69
+05E9BFB9D23CEB6052A6E1F525AB413AD275A4EB3663A6E606828B56A11098AF
+4C2BF3FE2B3FA84A2E377E34EAA3E911B84811DF1B58D6DACAC8676FAAD42B17
+1C5DBCF1649B4887413D90AEEF7074CF33A35A9E44BFEE54A679643883711B48
+298C43BE63D1FC69C6C7BFDCA40BA83E941D5153D2197E5201AF50EDD7452C83
+A7FEB5BC0236DB36923206C61DB460A6C2A96D95279682D6EA5A79640010161E
+68FC08C8BABDAC403D2FDB41D95C4F0E10EFF4F9D7EC1151A3FBC5CEC8A505C4
+496A95722FC2E098098333F9D112BF9649D19DED07FBF5D7FFF75AF399876D13
+22DC43CF6A2DF2A5FB0515BDFEBA02CDE83A2C15F16A6DC7E4CDDC023E1BA6D0
+86BD1140BDC6FDD506896530C4DA8C56A660AB0B5097C47A151EF5DC6F9278D8
+49C4A55FF934FB951DB782CCC801AC4E6694F3C9C9E5BF82D266C711D2BC785B
+2624E5C2A96ADC8996316310BF8472DFFBC453FCAEBE25C42F29667AA24C2830
+AA7F0A130B03CDF51902DED8A4DAEEFA7DDFE5744A70B7FDD0C164C1CDB631C7
+2178A4C9952BDF5B410F50F28F0F190627D96B1E1AB76BADD67DC2DE998B28ED
+D40AD5F093C608A70DB8181AD3680ECA5A73175EF0BBC983A6EB2AE461C09994
+F6289A234085C69C28B6B487CE2E2FBAB89FED40DCFAB1717FB0B7E6872176B0
+927739C0C0F0E64FEFCDAA6F5DB70F403C3E157C905D8407F0353A6119901135
+03590CE59CFDB8C970F5E5638CAF98EC4E62D8E48D32D4A883CE08EBA942FCB1
+FDA969BD1F75903EC05E3F271FC00E1751F16734BA21318BDC40F91627177B94
+4F262CC11A8B3606B2089BB8E3BE68EB594EE563710FBC0995475F36FDE1D16D
+1D04574965231090FF403FD262BEF943B0DB3956C4331CDD61A2AD468451DA85
+C2257F0E8B233CDBC90ED43601A4F1F54597F25BCEA325216CE484C79D7D0226
+2956B1D4B8D396A2101B671DEBF8EAAA36A30264B94EC95757FB202655782330
+1FAD65074169DCDC9F3D23EA9E4F1FB602F9C51951651F21B4EB6C9ECA154A63
+7BB81F3FE0695BE922B1DD6BC2D818DBD6396646B7EAE5E1AF6C7FEA60BBD0DC
+A78D739DD37FFB686481EA08884997FAC5FF30FE6600A9C1BD4C40A559BE847F
+1E6E4D4C34E7402536BA44532205B1C124264899C0E15E2D6CDE06FEDF1461F5
+0EB15A02A3F6C9B350C441287F609CD82FAAAC98306DBD30E5982CFE188DE4B4
+80B285ED20A047D0678F438FC84865687C5BC65027AAAF940D7BB98FE73A0732
+8B1B4F9475B558C3E7858888A37651707C65935386417DD2C9094A36D4388716
+0C8BC421BF1E4148C458F96C3579F4871792F6074E969318CBE450C6F41718C3
+07FDD8DD07594FB6808DC43C1236EB9C95C08428B9CF48E8F130AE8F95B8001D
+39BFABF29F94E69CB9629206D73E2491B6C6CE4D02235B4B31925435A51CB4F2
+EB6328405FABC179D7E33C8D2EA3D9D6751F164EEF39182C8DC09089A806D316
+E75BBFFAA811BC6EBE8E35FDE3972DF7BE23163FDABDFDFB53DD6CC2A957C1E1
+B2BC8F8594B4B6D29887108E15115CF8FDDD906987109BB782D9CE51A3E9A964
+94B5975EC235A23864B210BABC7E1163D3E8B039FD0FC023DE8E7BB098EBEC52
+DBBE70DB9751B220CF0966BBBF83585BFD090BDA1FF9B971258A22E85F969449
+9DA57C1383BDBC21A43F8E08A294A426E71E42983DB674B6079CB91D0ADB2E1E
+F82EF6
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -1974,12 +1652,10 @@
 dup 99 /c put
 dup 100 /d put
 dup 101 /e put
-dup 102 /f put
 dup 103 /g put
 dup 105 /i put
 dup 107 /k put
 dup 108 /l put
-dup 109 /m put
 dup 110 /n put
 dup 111 /o put
 dup 112 /p put
@@ -2017,235 +1693,218 @@
 759A6E7DC32B1D1632368D09A97039DF255B6492B1B2B7E2C1434E8306ECA7D3
 5A79B6D614B4979F10988BC76ED53A5F45315CD7DA216221F842FD0F3E050DD2
 BAC23C984D506D8F7D614BCB6B244F5F41321549BB0BD041FBF3053307168680
-3435E9C9457D31821224DBEA90BF144C1B129FF6D13D16AA827A26BB580687E3
-75116CA9F153D7F77B84289FB92A102EA55233FF5269EC626B4E5B0ACCBBE7A7
-613F82BEB87341A36F680816D2D67245602DFD47706C38FFFF78F667A3CBBBD6
-DBB711D0DB9F37A97439F474461FEABD47DD88A5112A27BF966055BC0AEBE10F
-B6C8936B75BB2D2F5ED63A524B9DB3B80EBC8D49C7E3C1578F3AD96C433B914E
-489C292CE27B2BC01E18E7EBBD4C3DDD11BBBBC5048C2880BF949E4779627D1A
-137D6F74858D5600B79A36277DC48C7125B5F36C03BF1E801CA9348D6FEF16E6
-EA0A2D431BC691188862193D044BF86C5065B7459E4027C2936903CBDC26861C
-D16443DE5936EEB02617B0E739720C19E4901B659D1E64F1EA1C14512C04EABC
-F46C70189C8A4E8DA81E22FC664C2DEA3A795DD6D8CED6797C7892DCE6E53F32
-36A5677DCE8CA51B2D8528963399B7D6584CB29EAA749ED22EDF0E0F41695569
-B7F5860921F9BBE867E7C4784CCEC7095D0A5169B5487C5A8C501B599C8533DC
-9B3762FB79C633FD87CD78E12C1B95BF354ADF357DABAF8F3EE3313C64E239ED
-E5DAFA8A4823E7CC3A08E25450B23EE4E135A781B9D991A63AF1DD99A0893BC4
-697A661B8B8FCA8C8A664AAC11C0A24354E4E6A1876D787118671FD9BA914B0C
-7115B9C619429E5117D087FBCF0B30C8E9BFDBA2CCC1E1B89D41BBE5D2A87718
-8846A1378D945507A60FDD43F52A4B89200F2930F216CCF9A00A76B25910E71A
-356CCF4033D359D2B68AE8C120626E99246E042A93D152E123FF8B21B68C00FD
-611F481C39EB2486F07FA2E7C0D51804507F9AF0294F2C2F769AB73B1E82B6C8
-BD29113B705C6B26741DC893BED435E7823B6AEE04B35182A7660ECD838C1CF2
-E28F231D2FC3816130A7770E387D6C565E359027D67D883D9FAD1A47685081DC
-F49AD27F9214E458E013768E661BA316E88FF8EF95CC28955164020C3251BDA3
-5E4D135F3D7B58DDA444B567C3A2EB456819E657E488A92BBF5670950FF30E6D
-600A9A1CDD6C7BA1C142BB69BA6898A3EAE6EBC7F5B24B5BF9C4D12B4637BC40
-0C2505E0E9CAEC51CB4BC1876F1E9FCFBBD8943E2FAD4C4CF06549546224BE73
-92481F4DE711E1250D8BF5B67C2083E2C0DE67853B39244E257167E5174A6E2C
-032B71C5E0345F337D2B0AEFBF0B75DE67C3B9700CB26BE73066702F690EA44F
-E86011CA9957A1964A0C96AC8231E622AE1E04E5A8023465834A6E38E85C8477
-375F193526FD11D5F3E18382A5EDB71D0A8F0C1C2AEAEFEEE51776679A5547AA
-5FE743D02402BB450B52564A5E065AAD4384369E900E95A62D938B56E685388E
-AC6C195A57F0BDFDD6561ABBCB53A08BF8248CB9C374B5FEA7A0518AD10A81E4
-595DCFA16CE5D37126DE9AAD35B2193830B9D4DB98B33ADDC285E9E258039055
-99A0DB04C63ED109D45FD139CAF5A96ACC6A3A68EB6899BB756F48B4058CC1FA
-111EFD9D07535768A3CC9BA2AB53C56633B8C9B912829294AF33A05EE3E16132
-6608674E4F3A81270E258569A919F5933461F8F141057012714D710E2E81C231
-EA8A921FA7A1AAED1EEE4F3A6AA5EAB198DDAD84730BEBDB2E26E1B3FA38EF2F
-F6E568403FBC81CA14382A2D0ED4670B2CF547021E5D3BA380F821F84A9050C0
-B1F6736515A194C63B6BC49B2FE0260ED002186B05DE4475360030FD548326AD
-D20DEE917A78B3C0E468FC516AFD6AB5908314D04AB2DD590EEB9B62B3AD6655
-5EAEF0112FC7A1D62948BC175A94D25F80060457610CFE517669B720A2806FE3
-5133AA6F0C094B749C6A9CD54D3B46E8B1ABC24A9E32EC4EB40F3E5A655978E2
-B0330898FB9EF31CBBE17BE0B6CB7DE3EE4930D13661A74B4A3BC19E94FC61AF
-F898667098397D0E2D1FF2630890DC712BE5E7AC2622D83568AD085815E2B234
-C6C2E03EB1E9A100A951CB40CC9CBE473B9521DBCD5981331F16956D3983F931
-CFC8F1C8538F4E6E7FFC4A94BD3BE7883B9D0577BA02611FA811D704B398381E
-B09F9D60EDC318BF8BFF5D95D21FD80FFD9D16C8E569C233E73548B3F25C7BDB
-972202FCA9D83D7B550D0BC49D4FBF4CEFBE07B07906E3F12566305CD1F929B7
-41748A78703E044B94C7503A85CEB9C21471F5897D75911A607574A91070D750
-41301682A2B047A45B20D41A806AD7484F43AEBDC927017E30AE5445DDA55D65
-161D9E29B9EF63516B61101070FBF37B7030E322765AB6F719F8979A306B17CB
-90ECDFC74117FD297333A4C8DE6AEC01E7B2D5C81870CC2D5A739929BEF850EA
-22FE70C28DA33A65FE6269DAC568B07B5847E0753C46F237B416B5C8283AD508
-898134798F69BEBA6C0DE6EDB0BE662B245FD6AE4CF8D3B86803081297D3FA74
-27549F33D8AE8135C237F17AF2F5A7AB66737B7D8B2D8EBAA20CE7E5069A436E
-8CF0063887C0702172E587CA5ACF3F3BD0BBBB8318F61E8B516F5FC2F2EA1B15
-240EFBDECFAA0BE6970E68D48058C641F956FF33D4F02717209728F45980B62B
-D3BBE4F30B7C3207C59153155D22BAA11358F835329B108F9E52C8F173A64585
-FC843F01099ED5254692BDA43A98CDAAC907481AD9843D9457A1D323B897F8FD
-28FFB5BFF3C4B605F625AC39F81D8143B43E03AAB55A094B1DE79FCD1AE47DA9
-442B8EF000567620557481D0E09375D0BEA69FE271910F3EB7AAB6062168CF5A
-6EED7D746A311493990E193939AE99B0C3578414BE7C4398346289B44A5808DE
-73242381A94602BCC283FA2F4E9975BBE90F0DDE7615BD6F3F7E0F93155A654E
-AC9A5497C40980579C60738475D7B202751C86D6AD05E7018306DE39FE83FBA2
-C3695033C261F2B57510198ED24DED27F0A786CA95691EFBFEED21B14D82A8BF
-58494B93194DA23E51C7D96C0F53BF8E0441305CD6C19ED39A5820DA23AC1BF2
-A4B94ABD45C3CDAD94E4CE32F1E36D34A8ECAF8FEE0AA508ED74560A4A2DE4D1
-CC71AF994E123273E8754C7F8569865C6D8C7B792AFB7CA5A6C4163628B37E52
-B91790DE9689A53776D4C0F6F628B1B38FB1C5F9E842102CA7B58B04F1981A51
-ED2520C02919D67658BC4E423823ACD48DBDF6DBFED8C5AB223058938F48BC95
-B1003880DAC0B26E1527602DEC41249E306EC8FE422239996B1A0743DDF1BF95
-4E3DAC0586E51C224D7666BC10765ADA4C8C6FE9F0159D1061CC1C82359392EF
-20F63B738608B6AB67BF32FD3F9F236A0DA91B037FFB7F5D56C75B6B6BAEA733
-95DC54214B0E6F30C3FDBF9D1BDCBE7A361EB6E1286B0FFFD248955A728608B3
-B70F91621701E27D5FD4A2F3566B7F7DC1D33051AD9BA442FF9BFD886A5A8635
-828D6AB4D3B965A14E5D6F3AF6E89838D2A06C057828CFAA22A7014310CC3A15
-0740FB9CDF7E99D27C58D20999AA6F929D8CD67FFCE5586231D8C71F923863A3
-C93E720144EF830DAE07F23380052E074940FD21F76539B3607D3FB4DD4AA8B6
-35A585DAA6F20783F4B6A46B0CF226158F9656A10BA0BB8E7D7CE501763A7903
-7EA0851595F4308398553FBB35DD4E97E6C75F510F81E5F6BC89D097790D5F99
-E3E1221F3CBB0F61BF9B8EED7D1279D7F92FBC1CC7AEAEA783F39475749756EF
-0843FAB373EC9DE6C018858E70546E1B9765CD73674D3CD273B86FF0291F23E4
-748261E1F257C73B4C9CFA6561FA5FBDCB7157AE6D2A16B18A21C310295B6505
-ECBABCC4940F4A14227CC71857436E0AAEBB4B3A119F5F4B724DDDE1CC916F8F
-8E492CF79047A5BD01C6187A8C4F07CE38DB44125F9931D71812EEEED3C75F05
-7F4FF0841D9F8491627ABF3668265E0136160C9084A3F9F1FFEBA7AA8F835EDC
-767536E7AE554C90AF6955F90E15F4C82DC233901E24F2D476FFDABD2B254E28
-7DEDB21E20E0792EAAE95AFCB1542046CBDEC2DBC5CCEA84C47604927339137F
-F324E1A6A7EF4AD9F27DB34952E972AEA2884720AF3D72DE2F3D83320C4F8C35
-0C33FD1E9C65997FD2E5743767786AF1EBF3BC91F6EC2E7B42346FB0F6BD4D70
-157601FBBFD512ACD70B60C671D7FFA52DFE90F74F1167688F3E84CD865D8F72
-C98E7B1240DB1445B039693A86A9A95AFE89356B19776BE3CF767B2FA3E116B1
-92C4A63660DDB280F5CD69B9683A0A45B8CF3D28F168AAB160F96933AFEB621C
-64D7C59F41CEE82038DAB324B484B45F7535DBAF49BA72E6DF762E5DADF0EBAF
-58BC50C550283978A01413C44C118865A671067B6B53D48E5628BEBE9E98C1AE
-2752DBA13B9B79D6166A267635079EB787183C6924F2CA042A5485EC562F8FBE
-7CDEE97105E46EE9137C68F694B064D2C75150D4C67B1A75DC721405C195336E
-A907AD469F982D05A9C7E54107665D79EE67BFF834DC77CB1BCE6EE35950B413
-7184AFA5FF6074D255B31BFA00595FCECD282FB58916FBC0EFA92BDF104D492E
-8B38CB7BA5E4B3B95AF2F3085E06ADA63FB66984ED009A40C8A39C10A8018D82
-315DEC2671C5DDC1E4D3CD6AF9FD0DB4D457EBB43C7DEDB3A5CCD9718EE36DA5
-4EB140017A757585486DB11F732CD0FC7E86795713D4AF1D6B9BB6C3486EEDE0
-EA91555E4F2F119CB06F50D56B6F0AF24E175582BC11B84A4965F893458DB5A5
-E7008B268E0278F6C1864015ECCA8A00B6763EC98D0083378FDEB0F8EB89E42E
-187152CB14802968659F8893A0A47FA8F5189B245C166E22C7B87AF53BFB06AE
-8D21649D4A82387C285DC2EBA449BB17776A6277808698E3F5B21661A4F96630
-669B8386C70633CB886A45164771BB3685B93F4FCEB5AD6FFB6EFED5BBF824AA
-73D1EB340EB96F5C70999154E093BE7325AF1C6AFA99A7B051A0AC0CA5ACFF7A
-4A116B02150EE4DE6D35B789815572B2025C4EBAF2EDBFCA3650E8BC8AAAE68D
-A47531831F6E62296E1CB1DD673BF5E5589A15A31CA77B4B2CF4A0B1BCEF901C
-54EF9346E04D20B64354C48F2C0E08BFA2920B56C48720A2B4F8EB1F9A38010F
-579523ED53631BF41F0CB5F05E8CB4624EAB2EE085F4FBBF1C540C7A48B65A0A
-C79CD426CD8971A409525276FA42C68280B591468D864E035589425E25EAD583
-4CF61D27694AD83E08B27FBFB6977747B4810BD35FE991EC647532601C3D22D1
-95A7C2F87F72372A39F5C77C070C259E5A19E9FBE85B9FEEED9B121C023A5CB4
-9D98E780E1A6B344409EBFFDB3BB7B476F18362663E5CC1BF304AFA8DA3B4B54
-36B46A127B378D4CB8DB9BD3F5D170BED4FE07B8A8690D6E817C3CBAFD28DC5A
-8DD2B5A2918F0EE7A28736951E13E2FAC21ACB83B8BAEA7796AE5CEAB4DE4EAC
-AD22FA38AEC1E7183821E42B254649B2CE421ACD06F51C957107E16C2E2806C0
-7C7803D904FA4282564BB2D9251FCD472B94472D0BD7F5D19174102544A1CA99
-4216CF83519C66F71404C5A16903FED76E331A93AFA1FD2E11BFE89A8F78B44E
-F1B0C04EFB3CFF2BA67B2A19E67DB9825541849CCE9E2DC8F19312D13B0A4369
-EF793AE4B1A870480D74D37E4873D085FFD68B77726A3FA567DD033A7BF1F8BF
-CC5D6F80C47B2C49C042BA17BBF8E3F6BB5B6E98EBF83ABF48443B2016026EEC
-EDA81B1FFD6F8557206AD4D7590AA0FC97C35EE29B3CA8DDF60A5B46550630FF
-00C833035A518CC0F5944AA9EA5DA2704F5C441AA23BE788FA315EE2B1E0751D
-84B92ACCC4EE9F5D1BB640161EE4F2BDA9111228BA1832BCD403E98B1A66A781
-C5F48141720611C1ABFDEBC9E27E05666872A354870B35D6C37F2955F77862A4
-C5FA193E0554D4F7C1778481648E7A450D46185824141A4C86C7984B4DB7694B
-49FB74F78C0D1EE913271AAA83C577B2664E15F24C2C3FA18E0AC2706B8089C6
-02AD2BA5A6FCDAA8E70D948B22C5AAC7E228A286FE9F38B63BF5083C680FC7F8
-92688CE226502C37E66D17C28DB56472924C9D4C2855CCA9B787ED6C332BAFBD
-9EDB20C1EEDAD4730F2022506F40797E0F0C2FE6877A4A96A2832302D8B84855
-A2A4C68B6B202E8FD8B47F3C8F68207DA52CDCFD255290F5143FB4463E389780
-3E61C9259C7A2440C10308C2166478C92185BD0F890203DBB652BDB526D46E7B
-18A8D6551B0FEF458EFF7524739914F85D799FD4AC45523F9359C4D3F4037424
-2A545F5693BC38F60D8558291561AAC412A7F61EFF17A0CC38732C65EE40D079
-221BBB500E97F85A7400EEF2EF0CD20B61CC62B9D75D5206E8C7D4A8DA8E981A
-A21EDF7D2117044E0F0EBFE9E9B69FE32FA741D797F418E426640D25CE3B84F1
-D93DA54D74E8A5BDFF0421F74F45D8C27456918A8C8B91A4B63EA1551CBB9E39
-D35456641F1319C5F6C7122F87B8C3DAA78192EF4518BF6992973B5F75794040
-205F37473E333A2B9448B08F5E154080DA0A6CB0DEF7E900FC207AF150993736
-46C60DC6E3515C88F07467393AE8DA3D016630F6E09BA0A3513876D52DB3218C
-4A55AE86BE04202D2DF973EF388CA15246C867D50229108874DD46C256388ABD
-DA6A346213457C07145226164EA8CF28B653F206831EE9C7BBDB75111C97ECB3
-F28153E888AF158EB8DEAC3AA6DDD294A67E8B599F3BC26926B9FD87467522DF
-897CEE5FACB6968FCDA07D3CCF02112B2966B633EC491EF11F340F8EE5E42E5B
-AA52AA92EA190E491C636C8813D6CE701E17FA565EDA35460EA840272255AA5C
-05F2E2B00B093121DEC628AE3E837C637A65E1BBA59360877EC32DDC25FE5951
-4CE891F8F5EDD81CB69195DD251504BE60CCEDFE5322491FCBB60BFEC1275123
-4B2C7802B717821DD4EA9CB2D20B2619CACBE8908AA1402B2229B0D4EB4A35EE
-F821876CF7FEC30B9023779AA99B89632A1B170264E888D5B5D71BB7515EC9F3
-A3B47F8E70548EFFD00464DEA14694DE8FA7A92151D373877025923E834E4026
-F5DDBB390B25C5CE2171C4D6CDB8A840BED26B0FAE6C475F99ED8A48F1E6FEE8
-C9F6ABC8AFEBB534F4E8C9D70E256BF146D6F27DF15F9C2673621A24591770CF
-F17C8754A37CA8B2F09E9482034C8C86D9F5016A71761B1DE0D194E2966B549A
-5CC20F5D1CED116BF9191D19137542232666BE6B47F974822D272118BECACEB9
-543FC4F87965B229A3786E0796BBB2096A50F3CF2219BA8B6EE1F6DE8434801B
-FFE114B6414624ECF85D0D964EFD07A70A1E04B275BE105FC4876F9DA75A0988
-6C985DAA50356A7686A02820883E5A191F2406F87357D9F5453D21ED3F7D2516
-264C55442481C102D20F0DCA1861040A7765E3913DC6BDD0E6DA66C9BE2B68D4
-E0229C141C3305B4F4C12A99CD44F4456C54B9243EC2805D91726395D1816852
-7845CAF629428E667E40A3B6C6022B688E036FF9B182C8DC6B0E6E6C51466110
-0744A32DB97705D28F41FDEDBADA325E249E206614F715DB92A1F37B4E22533B
-47B1CC7001AF90A29A11D2931DF76B7E273EAF6806807DEBB3D7E90EDE8F6492
-6B2ADAC45DDC8B4BF6247D0D46D80436CE3CF3552E93F5AC6FEF3D2CA8D7B95F
-3DAED7E23090515A37FA63C011B414F550D2527C9D4097077BDE613C4A59F7BB
-78EDA1AF2F8872C458CE2A6F5170CF8D166B974B2FE4A0ACB10ED632BBC3BF7F
-D32E5D3A3F486896735BBD6720E1438F2DE70B98ABED52C7731540AE38775176
-C8AA2128FFCAC88AB88E262A7549F11D12C47F9EBB3FDE3C6F0EF92C5374D7AC
-883B2F122E6C188076A5031C779E1A881C8384A486F5C1E82830AEB8B3228F41
-BF566D630A237B65715ACF26598B56AB96E02F95EDF5C0D91016A5359BA8A6EF
-1E18D5F2D2BE1CA30EA5C628E7B743E66719C0A7F8EC9EB7A6C542C26480FC32
-6EF025FC53BBF2BEBE1C7CAE9212AE95F577BFBEDA51F9E508C8B1650DC60BC3
-512CFD3E6BCA31D3E606B25DD7202DF31892333DCD15897E0D8A753D3E30D74D
-A24854670A46196C98A6F7132F3D17B5A34B16ABD4B14AFB74F119C6EA312907
-3B7746123AD4FE4A57CD9CCB2813AA9E59B10A145985F4D37D2F95DE73FAC036
-5339B6AD53279B7266BD45B5788D5A6F5FB0E3F5E1B158C0702E516879022FCD
-F5B5E0323FABE8C27361FC8FFD738869F9231B0EC47B622B5B3202510BA6A346
-AE584C7484510FBCFEBF8ABF567195CE18217C15B9A47DCEDD911ECB69BA1894
-6A48E7D0F86354F2E60B98B12011B9314C729F149D5C1CD3D414BD6A0EE2559A
-4EDB310E8C3E5B6CF1B5872BD52E0EC28393A79BB4A68BDFAD696D3ACC872299
-E4D1007BDDF5ED370E3D4E0F67662B5AF06477BA50C4C094B8516ECEC616E125
-59D7D6872C2353E6FEB456E6ECAB3BB22D6586FEE1ED5EC8D703FE6A9218EE5A
-2F5CEFCD3EBA790388F486F51082AB188B91CA44DE486A3FCD108351AA9CCF3A
-AF02B13C681E5A237061469646B3E2C57342C305D032575475DD5A9041A6ACA6
-9FE9FB185E914D733D67CDA75D8481ECA4BD3ED93BB0E3971C5B686DA60B6837
-130901D15A6106C18150A80DBEE8932E8B008DEBEDAC1A47A1483867AD0B4BBF
-DF452AFC4B226C5CF1D07019DA334C596FBDC29D2EAA4B57101F4EA636149806
-FE70DDDA8A9CFA605924C6B96F02A6CB6CDDFC4CF7484121ED48D888BC4A0D99
-AE9A3792084C87192F1DCDFBFEB71086A72566303174542D99AA526B8B2C05BE
-54F2663F274F2C9467AC57F1B135F08D0205C2E2F7C85FE4FD7EE25ED5685AD3
-D5F7AA5AC147733C48D2AA0253EDF1A047B5512103D9C4DD17BD85441F466020
-747044E43AEEA0DB078BEF688E336B9B43AB75BCF78D898BBECA2E5FE6FF2560
-479D0A3A51B2BEFB4D41FB5576589D2FF1EFD4EEE7F555666570AD7ABFC7E973
-882775CF75AC7F4C51F8C5E740D172493233B01D30FFC8778DE80438E3A020BA
-AD33E367FD4A7CAC5083BFCDAE2333F4A4A718A640628E9F3F88A33E31F23168
-209383CAE1AF0FF41CE32D33B6733782E4FC4E612821FF940F47675AA1124FE2
-59AC8C4CBA879073D964BAC21969C62287842F9FFA6776381A0F76D190C3F9B9
-81E29BBB7F977B273EA7743403178CD959DADE0462CA4ABE93B4AF232324D717
-8F084CADE6A3901771C2041D55E2F4BA893B86BD48D0325844EFAC347D5C466F
-CCC756BB1B9A4C530A61504C647CCD1B5E684450B0CCDA3DB2D6E8349B1F0039
-0530275C058DE1EB2A9218B795E0DD6336C086A829F78B22A6410C9717B2ABA6
-38228D4ED25FACF98653903307FE2276843C26546BF7F78A3E979664621A986A
-BE04E5E1DF8DE1000707EBCDCF4254254E95F261C62C05CDC928A4F1D0A4865B
-47C6CFAB7E2D3CF4360E193207C3AF2172F86A9F3455D476A0BB26956C4994A7
-56FFD46CA83DA5BB27BA53967B6030E32CF68343211CDBFA909F98E1F0B3651D
-68519F148D1A496E950A460E6B5CB84CFFABE4ED68163D125601A86EE289524D
-A946D10A67027A9E3666DC651E2D416BFB086BE7A6A4364EBB43959A45A9B5E3
-353B5F6384300E7103518B7019D211F39C92E69EB9E0B49C15B14C2140682FD4
-F85C1ED1926EBD08BB14D382A13DE2DD8873508596992DD4F487EF5644DC6B85
-F41D2F9AB315EECCAA1D2E76D16527133D05C02E4152AC78477DA7AEE5443833
-8FB1A5E3EF421B1BD5D6CE034E4B3DEA7D78C8C1B71BCB941009BC385307582E
-024637D4FC84C62577D8213119F59A792DE957D3C4BA9EF50DE9F9A5D6D42AAF
-BAFE0ABC8E698FA7CEF3B7332F5FE5C58B221E7D496543C85F6E16CD6FA1F09B
-01F4326F7A10267CA26B93D48A0E6C9F64C3B966A75D0990A6BB330CBC9A7A20
-FBF6FA0A5141F33914DF5AEC7587DA67D60DD73CCF78BEA73D13B113253BCFBC
-8F6FD171342F72B254BC015FB2AD888C817683D73B19FFE440B95DD81C84AAAE
-4B02B94ACF5B005D6522A08F9D153DF9162EDE30634324DB318F3572136344FE
-FF47E498C9DE68A530E57C8A58F8692A4A6C9AD3675AFCC5C04719A896ACB55D
-04E99F8B504E0061451E833E77092AD42535BED7F9289AF93C9E600708687EE8
-4C0C6231E0CCE910B9CF1AE75970176649EEC484057C0D89BA0C75D94EB64D30
-20E31505B65A24D3B6D3C553CDDDDA5A1E4EB9EF92EE012CC08C6817A8B5B9E8
-0437D11551E4D6A5F793982CDDD20814AD5DC59C99FB01C65DFDEC1E4FCA8679
-07503C6CF3FC6B028EDD67A9811AF158C8E5D789C8CA67FDD78D1B9DAC25C5E5
-EFA2574D7F12BEA5EA9BBC2DA372551A0C41C4E0C3BD267F7E8F2DC5C91B25DF
-3B2BDC29C67E614694393463666490116F301DC50B8E97F9A19E5E43F31CDB9F
-4BE0B525B456B1EFAE6F6ED059A9A94773BC15CC1A457A981E765037AA3A8516
-596FC0056099BDF3DBA6536FBB4FD785369516BE511CC4DDBD1509A7B86D754E
-2FD5AA51F33DD222EA0899BA3519BC
+3435E9C9457B548EA293C748B7CBA5C6F1B2FE09945BE1B3FED0B49321A20B08
+CD31AC277063442187140DBA3D11511E9B01D2D1AF6BD8B6A8D113BD0DA9BD6F
+D820356772D4C6570B976EE3CF9411CA0FCC29B2EDF55923695CAB2D3E0E7542
+6935AB339AD99AB28D22968A272D8EE7BEA2EF944FAF88CBEF9B02C3546B55C0
+9520B8D6984CCDC823622C6B0F04168C11A106E51636F1BEBFDA2785D81159AA
+ACC0B718E21A21B8CA475EEB054B761B572CFDB403E74CBA60B2BE2048A62293
+861996D22D3F3D2B914B1FF3BA70722D0D18165F6F65527602593C5BCAD2CC21
+5AD541D4EC92C8917EFCA15EC438D9DF5B69D3B9E54E9B72C42924EC39B42C62
+E03DA6E23AFF8D0856B774880B1951A1EF52DDDB0C0A0AE66D25CBBB85E7BB8B
+70BA7E3220C97D2E01D63F857C28678DE46FF3B17D202F9CBF61AEC2BD1D98EE
+1BB0F188E705DBCF31CC5C78ECF00B648AA01D59C6281262628872DEA102D6B2
+2B50D038BA1B8951AF07BA0DAA8BE1441978319DDFE8378506575D0AD638844D
+1F695DB636DA1A68D054846C380E8767E5BF3BBA63136245E50DBE5DC67B8921
+5C5A61A5373EC823FDCB53C49B0F40D5CC07690079968C9D72D6B8CEDD7EBD41
+A65616B031E7F449D8FC300772C48D2F615236B058577E534565F7E12E1F9D43
+1FC0CE28CD93D8C8DFB762D5780C49846669196E1BE345CB6799FE920329F8C2
+0777A9D2086BE4D1E0E12B98919FB4D7F7A766663DE79CD9B0C312B94063C766
+D2B98CCC5AC920CE0AAADF094FC2809401E899F9B91FC48E6EA206E5D448EED5
+C1CDBB38A298295B674B45099C3E3773D0608371E7046C436965582ECCD0F42C
+E7363C4ACDB902B576992EB80ABF11987E2B2809E24606BB5A1F19D8B9FA9C4C
+9D0A84CF40387D480B2B602D6FF2D594EB02EBD040C3CA557B052513F6F13CA6
+1DE768C64B8D16385B7B9478B2D42523AF8B0ECB0EC73F06092B969C873493BB
+3C936533C0076E1B6D158A52698AD6262BDB2A0ED74B24160174B7EE70D2D6D2
+C08C1E1B1B3EF322DF580DA8543B9003773A02369746D19BBE623940D50B3F83
+A45FCD4D039CF3A793F451D7F8C5E1D984D1AC033B82C43897AB4FBD17EF51B8
+D85A91FC6C00C5A8913FF116E165A1060EE1254361560CD536CCC1737D34FBB3
+8BA0EE81FAF9323F630D61FD368FAE97E72DB48190F1FF844CA03D0887D0F4A1
+FF36BE11EBCFF1537DD1784BE92BB783986E0E7BDEA554B84EE2A3E62B69839D
+DA6B251C2FA91A83237D3C0F95946FFD540730DE36D23B0492239AC45748CB90
+3DC4C7FD1ABE7D3B8D4FD7BFA533540CDDCA6862546096315F49B38DC2A84A46
+F3EBD2F598CF6582A59D350DC642F4790321B6372D5D4D255FA29371AF3C822F
+563169F132A01B4B100C8155EAB364549557C9697C9E8DBA07645370AD498414
+F8EF8CA6BC5999FDDA8F9025F6FFCBE09758E1B54189E0F77DA84F624A2597F9
+9F5CD680FECF26E44A66DD126E30DC1E88FFCCCF1B6B0D18AFEB56A0B26BEDDD
+5D72F76AEA8867D54BB3929E29FB92A9DFBF19039E836A1834647F008EBD4FB8
+2D5B275D84B1BFFD6F54CF4B6E381472664F858DD75C38417A719D4D83226AAB
+F717A4EF6D0ACAE35F3AF9606C19E1787159493F186ECF8E7D4E647E91DC752C
+16470F3CDF33E1F65396F40F410373A1654203E37771CCE49F742DEC2C909822
+E4B016DA783DF03CC03EC5FA49E99884BBD4C77CF37DC5255318365ED6F4B7AB
+F7DCE53B8A1A15B73469DD0CB185F08C3161F70C77BB73A8C410C12AF709F11E
+22420F6615588EF32094BF4C2AB73C2CBE8114BDDF0EF360D154C63CAC30BEA7
+9FD06034801476E4CBFE1F01513C639FB89CB24A6FA6475647828E54A72A70C1
+D2DA0FF4B12A33A16EDEE205FB4DCEBCA61D207CCFED715B775842C78D266033
+5FCBA86BBF186AD0ECB00C27AE7596FD0DE335A2917F1C215F2FA60836FE2458
+417CCAD7134A18D96A2F01DB13D5AE522C0B383AEEA1D6E100456C2D95ADA7F1
+A859C750606A02A534C6C1B6A8FB5AD3ACEBA34891EDFFE7CF4ED2DEE1CB8A8D
+C51F99712CFB9B0E08E637C214B98FDA959693F7885DF1387F18B5CAAA5132BD
+799152FC54B9117A9DFA9AD00AEB00D517EAF573228FEC21913565803D11415A
+6D9328E6376D959C7D804230480B2111F550AC04C84D73AE9FA2F630506D3E3D
+79BBD332404BB00323814944A4BCE80077CA5E0206FDBE4A57D6BFACF57305AD
+2AE56C6BD2BD9F3471CB384E72E41E39DC36347D48E873CF4601A7D4F86446B0
+10E3DE77158BFB3A09FB340EEE85C4E1EE9DF01B773970BB91F51FD6257D24DA
+DB2532F2692028F2E192F1EA0A19D5DF47E3C07464216AF23EAFC05DA81DD30C
+5BCE6A11146F901F5219A609E6A641059DE2932C77713972851B3C19AAD2A73D
+1D7014BF0D144EB17E3C0FAF9417539E9DDDE199E52813822BC739B55AA43F4C
+3AC4A8F156C91406AFAEAF0E9094AE1FFDEC76D6F7B9BB8D0A8DD8BAFDE213DB
+3B007ED04434B6D225F095BEC534292E27678662EC9B577176CC7CF491D05057
+7BBAE1AD29A82ECCE5BBCAB307855AF62D28E0EFBEC2A89CF04811729AD03401
+24AF0FAA109F317157B2866363975C4034DCC870C759B09E04592F99282FD03B
+8A759333FEB43FFEB7FB266B6DF4D70AD28BF267560832ABBD39084E6BEFCC20
+E0ECD7CED93B1E9095CE423EF8E71A608916F3C33E20E5B199B8A87DF1FD9995
+EF9DDFED5968ABDDD980EEC5037B5470FE53C31D3120BD787766870E310C2C8C
+51B1F2402257F06C905FAF942CF7936763D146D77758BB8253F9616FC434A2D8
+9B5C2C5F8C62B16009E5F5803F5CE71409CF9A61EC86665E76370C37FB4098A6
+ED13FE4342B5D0FC7BAE0FB9C3A18FECA4ACE33E051D9F5C485F39729E7771A3
+D0F59CE0C2EE01975FF28BA77FD2976D2BC9B8CBE808A300072542A420A7F5EE
+A55053CB62DFDD71B76DF91C5309139C168E051056B70817C5499BC025BE88B7
+6C3935A4187B3856CFEEAAA01E16BE87BBF19FBFCA6BE99ED86619DD36C6342C
+C4ECE9AE1A06C77BD4DF94B180F5FB1FBB0B6C90C90E122F353AA6A5A477DA14
+8C4000F5E4B505115061834290CC24BBE1D6A1A3D390AE555626F91EF03936AD
+1F5C09BDCDDE5CA801F786F417827858E33EF532B47A838DF6D8E63E0394AFC5
+83DE975BEDF5C779899F86C464E8F8F0AD8903B411109D322729C079303C3024
+B890DD38F7AA65A9D43C4338F1E813ADC05E79B9EA2B28B3E0A6A4542C7F4FF7
+A4306E9015AC3F73A59E753CBB2287EB1E354360655D2AD34FBB9AC6A57A8246
+0118754FFE2FCFA30ECD347E31A53A9A4B423D9D1637D2B6EC5ECF4F8F67D344
+C01FB9B2E53D0CE21C65B4D082CB231914CBB2B6EBEB51C4D7840D18B967142B
+21AE2680B2BAA6D3B27B8E5E33CD80B915633E05BDD78FADEB82E514B430F71E
+F6F097E451E38AFEE2F75C7AEB52B6FAC8E26586566F990CB427F6104DDF2566
+3205287EB96F3FF4CBE170168CB43F883A15F798C6D0AB5C87B30CA9F981918D
+A865E6570BC16C75C80B72A3626D58417337B125FF482AEF33297B6633B733DE
+D243E72CFBBA03654956A78FB9BF6141DC9A3A5D6E660D01450A6148902646A4
+56096EFEDFCD9C6DF345793040DC9F8CC3F9257E42AD5E888BE985FA050DEE13
+C69E20377EF314EB70D58732617F2800A015924DC4374621ADD703E0C1E3D520
+5FAAD9DAAE69D898945C593A8EB94176A43E11CE25C755EF8AE0F36EF3AD1ED0
+E41D51E57914E25CE323EC4FF37813EF79A1E341E98FC0E4D30D6E35BD4EBA85
+AD5591ADD0623147309FD7E1844324A5AC7F6E54D7BDEA7D16B51366A489EA9B
+41581D59FE0F96E273440F33A92A85E9AE5684B3AA5A08B6BD87A79A744D6926
+524943EC41416DD1CEDCCAE4C3F91510A1B510A0156B687C95D4F67EBA059505
+03C829B1348F36C5BAEBE1ED4B9EC4C63DDA02F9E8793B5269E2435520B3BB53
+23EDD7EB001AFE5EFB90DA6876E4D7B39CF8943D627363A61091BD3F0F36BA7B
+2694225D1B040F156B3B04B165F826A1D7BC183978ACA115F0F81BF657A46380
+D034082AFE552EDF8E28775BB59B81F1B36B7E16CE57ACC7FFA13A23D038FADE
+7F9D26833EE2C86D8C937E60C44C5AD6D7C02FDCC6DA96039179A4E4283BA0F5
+0FA28A668A65270BB6C62A946B7399639BCC0E1AB4013C28ED1067A570925078
+82A99E7F9367FB74F25AB74D3142745480887900E30D4B2F427E1651313A5FE9
+A1E7124C54093993326DF6E48569A42A67C9525B695827BD8A70B4EF7901C668
+1D41DB4B2ED4CBEC347A6E90E75F2D7FD84804987B5B459D2925D1BF1E738A9A
+B121A36FE2C931A4DDF01138D116BAE58F4B201B36E198270D06E59B6E08C9E3
+18466D790E84262B4F7626996EF71021CD80CAAF1624C1CC72557B1B3F96C616
+0894105E095724B5C3297088BA4A14D46CD2B7900841FB8F9866903C495C38C8
+4A8B305DCCACFCA06C58EA962DE0AB00F11A0AF7C5BDE26F49927D0D638D36CF
+3367CE6EBBCD6243E378E783B61F968F1E7F58C97A1F03A9E7CDB88FDED075CA
+472520D5BF4A35244C3DFF8D2813E34E03412F3C308F277A0B28DAE4C4772821
+A434FDAA0206A235FD83C540EE06C31949D3F7F48BF654026DCE949E518512F8
+BCE17280BE104E8B66489EA49C7B3CDC8A2057B1F3DB6BF3F0C651FF464625AC
+EBE976E904992640AF13CDBAB97A6B2E7780AB4F8778FB5FCFCABC4E19F91605
+123A901B1E700B4A83FF67595918D334595EBE92999B4ECBA83523D478597F68
+945E02C38B2F2E840E64C34895A45BFD9B85007E8A230F996C955DBB9680EF5B
+9EE947E6A490732D1D0D4AD33FA98864DFD4707B32FD5D70BEF74A34F5402998
+06D751866DAB7CA213EA6C84C27BECDEB52736C28ADCDB0816A3F65725A17DAC
+9FE4B9D4B2BE6C3F944430E29CB850E321B1F073BFE5395B4B80B281D75CB058
+AD9E1569F4EA0C46C462E6C27C039CB1C1453B59B76D73B943168566176D9C33
+74059EB3575654058ACEA3BC9E0CF2C054F4194E309F2AC348252F1DB642A65B
+57E123054E8EC24E26EFDC2AAF65987205A2FE63A9DA8E30A3AC292CED39DEAE
+B011658D8EDE17ADB556BBF08422B5CBCDE3E480556FB42B95D837C2C44E3883
+6D50FEBC12C3FB7030652DF5C6F8AFFAED878A0A075FF7E024009E85BCC0A9A6
+DA7A8DDF16E2AB2799C27A05536B73996447FF8DC2701726682B52DEC9507AB4
+8337BA4D2C4281596CDF9BEDA2ACB02A242476F8C5EC47762BE1E54C0E69D86A
+2F0C0228253C1A66949290F695D46F4F2A46AEB30C5233B009E67EA531DF071F
+CD6F5C222BD18BB86C0605A299D00A5436D42D65A247682346BF033CA610BE35
+E141ACEE370BBD48B1FA8250FBD996959E5407711BE194A870CB334A0376FCFC
+67FEC3451FE636366BDD9860972C9E4DD3DB73FC8285FA5DB7317F4BEF834C93
+D6179BA99D61FAB2B37070448429BCD332B05E49B8FA3D852D630CD39E17012E
+ACF06CFFB9CA99937950D7BC6D448B978274B59A14E82D2705705A8F805E934C
+23EA34E3D212CE080493C4D05A25A814F63279F270CFEA483EDA0E50AF5C72A4
+5A89D2C08CF41C5D41E9ED29F879893B26B9C6F13BE91A12652B28566ECDA988
+B40C2C403B5DDF983669734F5C9CA04867AE41725B599C8974A69F0F0CA7CA3F
+0BED4C299F57026079A3EAB9FDA8A6468FD77E89E4E1CBB5E3388450D4E68943
+7BA91778FA6F614D92DCE7984DEEE890B721E91D6382595C6C004EFF098468C1
+D797AFBB27D53DF06C11B4643B9FF3D59A2CB7C4585C6678238AC1835EE24701
+298A98D99F05A64A7B4F4FE1D85F7058FEE44C1493682D5DAA4F8CDA6C089C7F
+96FC35F21B505FA0D05FA6AC283C7885A15EFB9A0C31F5802F4F7ED0A06CD12D
+21B1AC442EE1A40D964150E6A0AD9F9A2314483A8EC826E4DDE5FBC2BB496227
+70FF852AB8F0FD0DAB0863553AAEC4D6FE2D38A2D5804740CE839D2CB9B03DBD
+EBEF5F8ABB550D7574DD5495F64EBEF1192162F9C6D48FE4977E6F8FF1E533B5
+E5E26138D3A07BACF9D89875DCCA167B5949202AAC5299C3162EA2C83D05843B
+30611FE06F1AEDF677B1CDCB30ECADA2B80C551A188DCA9C57C1EBCDEE76DDFE
+08AAC4103BF045BB811BF5243C711AF0742FB2FA0BE4239C22F70CD76429AAFD
+5C92718CB7987D62E6A3CE3DE15F239CFC313373236082FA97196B77A5E5AB39
+22092749FA76CD01CA57379F0AB0E9F64426A82AEA5C8835CEABD6C3B1DD81D0
+25E070DF1FA9D41FB1F8CF1B5E99A74657C370F22EAAE33469FFA4470A60FC94
+F79B71E9CBCDEC846E9B59845D9ECEA6FD6A998F5AA01A884CB3AF98B135B027
+A3155F177C3669758F56D47AA7BC3F344B3BAC14D0C2283DD33B8F87FA3F52B7
+1414D424747672C58D87AFEA5E1D613F87280E4FED38E0236BBC14563726499C
+974B1E9A5419763165B378CC96DF48A715C72AF6271D01266F7F1507015620D8
+05123637E87313E672608C9668CD52D4B8DC228E500089F82E2EA8D370D5383F
+8A9DF62669A85E2C2D5B8B415F550131BC3C48262FCD6956094D83B94C239473
+585A3926DEC516E38AD39D22482DC9B5C8FF8873213F453BB56F3B3076046067
+E4A2CF85E54F0F15C1599A7B58360CF1A45DAA8F43A139B8A4E5D41DFACE5FAF
+C4F6F99A214B162CC36FD6D13A795C9626F008A2346C79519291A47BA797B1D8
+199D7B95E0EA86E8EFE76F9AEC48F06D565061B2CCF59DEC7435650D183ACA4A
+DEEB0E4F2E1EC092DE103FE4F5F5746255472E465F1A7578C1B04CB61BAB2A1C
+40560893723689AFDDE3FE9F4A55908E26140AF801E1B9CC925BD3E6280B823E
+C25D9D5AD760A624A84C1785A0DDE8997F81F84743C290985F535239DE0111F2
+99F9EC268912310C6A9202CF5D905EF42842AD29E4C3A7DA12DF2E7B63B19C28
+B42D8F6E105F3AEDE58C19FB9128F877622F7624D2B79B2DA091141DBC40BA79
+BEFDA4BD015F797570FC93489906B5B0A62372E71421EDDA8AD8B1D503465E86
+E26A6DE9D8C4D353AE32A3BAF3369570A48FE3CF941CF84C5DD5FC85A6D8F4D7
+F48042EC40104D9BB6FA0BEC4E43B91CA7CF71E156BF265ACE86EBB3EF52D281
+FE835223ECCE693E94FBD964C53A9E07FBF26252C13450545451C1D4EAD5655D
+ED1206A0174A251738AA7ADBF85CB37BE454461C7151D9D310E17CB20F7BB0E1
+268C4631E1A156CE5CCBE974CE237300E19CEE9700250B2572D184EC43D653FC
+3FA358F9962C2633A0B96E912C9CEB406D5D16DC2329A8D736BE07FF48BB8A03
+19C53500E4DE79BC16EC7AC06DABFAD77CE1787677B3911D73EA4379C3A5E102
+39660863094DBDAD52747CC712C0D4D257C05718742DB59F05C9D80E46066C0F
+92543DBC93DA09172BAC57BF982A861D208754ABB92C85F18DC6E2AF4416D426
+421163D92A1DE96D63A17CB9BC57C9773EAB3C57E2D001AD2C90C4D943D52441
+859D4CEFEF24345C55685E82A57B41975470D3DCFE7426D2EF64F3C073D16E80
+B44127E808C26E7FED75CD24AF1D84913879B71BF2253D7467A8859AD5ED2788
+B030EFDA426509C965ED3A9AC9D95E5DAC1C6157F8D32F6543FD33AC3A068A4A
+29A9BD993335807835D27A67A373297130FEA95C2807A19718B7F0718836AB71
+5226CB826BB09CC39ABF6E7ED097E8D66E00927A2965970FD1CF333CD617DEFA
+F4AF7DB7612559E63A7A6010D584E272818C5C8B745559CB509CBA0F1A8FA225
+2C322DBED338C08B19CCE3FF13834F68E9BF552D61E4BDDC862E898257674E16
+B4FECFA24F1B184B481397C69D46954F224E2406EE75D348BB9B32121B6C8EE3
+61D9D619F1C1B4929BEB2D737DC2E603030A4364F6C9D5218847D23F346E5431
+F8EBB73E317332B658C9B041FBDC8EC69814A26E03EEF802F86904323AA2A836
+1B5B15ABC081E6C6D6B3D8C005D7F601330ECA34EAA7D7BE3F5D971ECDA35418
+DC29A0605A591AFE68E62E2A64D1224A2319ECC98B9BA67C3D1979D70998F768
+BA011E21040C828EAB1BFEE70B92E2F24C30C523DCFAFBC2BD5E6E6272E8F494
+BEDFCB05B79C19491FB8637F2C454C9813D704E3D03FBA8601F95BBCB99D95F8
+7E4B4EF1B1086FD47C0F1F76BD8B7AF66E3BBF4A1EB454C5AC86572156815541
+3D026B49430AC3B2929669537C5D63A39832083B0AFB89884F684DB31B5A817B
+C043D6D4B23028A09AFFBC0A967054DA5638CF9A9F5B41EF52A7B48D84DCF239
+9A466B90CBD9BDD6FEBA609A3E7664A611A7047F6B68B07FAD7956F3B9F1A59F
+A6C2EE5BF51A02FF5B578B9E914723CDF1E5AE7773897126085E34E586E05AEC
+6D07CC10EC5B7A4728A1316F607EFD0FAE8F7B31C89FDCFFD22797BE968B11EF
+B56CF7E89A80B023DAD5DBC7B15D0A08D9B5625A62FCEF86F713E7FFDB479887
+A1215D9DA2C064C5332C4A7462635FD09CC026F47F901480E10E5AC6CCE1C8EF
+894902EBA0ED9FC55632C8167D073F64AA6C2C0B8F40D38B8669D64E6F58C460
+1E8CA741C92988CD29CDB5B2C85E737AFE4FCCD9D900886A3560E972C9E237CA
+9BC756688B48CA42D5CB3307EA4A832285E3EAE7E6D4A4545C753F3DBBEC0697
+3264328753B8AACCEEF355E38B7CC84CC4811CEB834BC9533D12B3A8AE18B0B6
+85CF06D4300C7FC18B9528745A65FADE21967596125CEDC3BCA795647717BCA2
+BCD8F30E0F425F35CE8EB9CBC4E0B8F23B27174137EC7A66BF058E925238969B
+E364DCAA8DD633966492F4826A4A30E0AD6FA27C4918459C8CBF4BF30C0EF046
+7476227C3D5A8149B92536EEF75B049744D9619D5CCD7BD473565E010BD89ECB
+4F5434AD4B81877B4A242ED3842B4FBB3C5145D589FC44446FB6960DA81B3B9E
+04EC5BAE4ACB1890ADA715870ED843407D9283E379A6EBBD62B7518A136A9011
+5F0D2C23973CD7797A40CC5991C888011BE932410AA6550923414ADBB1050791
+2079B733D5B53AB060CF867D91236B3A1E00BF09CA07C30E1A1F7537FA196DD1
+E9AC4CAD995F5314DC4BFAC2EDDE81FCA325BEFA587986986E21AFFFBCCD52FC
+DB16CAE8031E74C5E7892A6B49D8D09D10D23534AD6402C1D1BD97A3FFDE2DC6
+419916A3C41D5039F39FE5599C5E25A779D073C75B814E97510C7B3BEC6A19C5
+8766FFF7BBAF976393C985EA6BF0D02BCF5DAD545FB74D29B728A697454F0888
+CB7ED67356C7CACCF2D37F622DB52115895BE68BDD254D77C12CC8BC929816A2
+55877F8425C5B282064F98010B75F5EFAACFFCEB25D4362313FCDC1BDFFF5BD3
+9855FCB6F5364DB3627961D98D65E3F3A4ACA15BEAEA029F883AE46E9A1C9206
+277AB80C4463B4CBE3E30A0EF04152911064E5E03524DD2764A5D6CBFB03C209
+904DC7B724ED51873D8FFF08F2C18792A02BA4610A5B24A9B5373E9A96BBA0A8
+74659212BB9E9AAF246A6193CA3B20B21FBFB800C1E6B743278BE6D9CCDEF9BA
+CDF460D85185982443CE5152EFC9D9D01D31C4086982BF6C08B372D3983A
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -2336,7 +1995,6 @@
 dup 117 /u put
 dup 118 /v put
 dup 119 /w put
-dup 120 /x put
 dup 121 /y put
 dup 123 /endash put
 dup 124 /emdash put
@@ -2369,400 +2027,393 @@
 7D96CFB3C342DD38DB5730ED913639C2BF3CEBFA6F3D493DCE5F8218F8BD8035
 9E6CDFB95628F7198CFA2EBDE1905F051BFC4F835C5A787E3B43EAD947EC893D
 9D1B04A9A7EE7CF3E02A58BB0867AA7C77F30CFEBCB4B3E6EC68F6B234FB6B26
-7A9D88A3CBF7A29ADC0255F05EF984B70F4589575AAAAA34AAC95B51EF60F798
-266EE3AEE3C7D9C29FCCBB1DED25CB416FEDD546C0B2F17B8277F8EBDFB759EB
-C98ADDE9CF32EB93755AABA5B5B8849A0BD23CF09A77F510B78A5AF9AE24EE00
-1C04E66B333158917B89ABACAB10189092A229B5B88F742FF334D0F149DD1FA3
-E56403C4FA9D5DFC369AD33CBBDC33CFD08EE3A1F9923B93882A17C6F1CA57CD
-5F9A4675E561C99E51754A47580185D96DDC40FE6FCD6D887BF275CEF0C95840
-B67077687AFDEFCDA136BF7A36667BB3C192D5B99BC4B6E6CAA10AD665A546AE
-8F852D4F7537EEDD9F40BFBBBCB8704E7FF93431B1D1567F43F3F76578BBA0CB
-405AAC0FA12A1822671615E54D131C732C17D874257513FC96C26DC3CC8ABE8D
-5435D01908B7357FA4C3C2723C7273E7276015BC127380088984B935400812CB
-F14A7C5215655DF2FDFF76B81FBEE3A69138ABF20821BE1E8D63899D0B726EFD
-2FD03B121142997D2D65486902030B8FDF6817DFD3E5779BC64FCDAD11D50D9D
-CEF9288E1C1A3D552E681D87BC445942391726E9A68B283F1E169BEC3C911326
-8693B2F25850E2572BF747D50C6C64E89A86E5BD8192A4091F629123B15456BD
-61BB3C785D74FCB8338354A4035B13AD5F8E6C89F9B44B476C83015FD0E3BFA5
-B68B9A94F977038FF1F7FC7E36C15C6A606B5EF5E0B3AD4717F1687195C4B3A4
-A29CB45AB2005C11F552E69057FA872B89397E32D9EC8E2979CC310304A6AEB4
-F8DF102B1AA025133C08D6EC6EAC827E544C1C7A54C7CCCFF286064670BF9C27
-BAF6BDA6E3F3AA032517F517B82F65C7B8E64D3995A693C22EA843D0CAC2A695
-D7D8236C1555E42E666B91399CE7B475D03277CAD7C72731737E4BB42C089B00
-728A276C6C0E19C7F71A076007C5397CD5448B7E95E6EB55AE89E9E68EC0FF65
-D3D3524CAD38DC3CD82F0E0DAA990079A01590045FA420201013D8528770B11B
-A0DACBF6E56E83FFE6F9DCB683ADAE65C1B9CF7340E1845A8233CCF958340F26
-1044170955D0CDF84550DB03821661E880F5F6BDE8E2E797072CD19AD01F07C9
-F6213F37C4301D85B57733E4052071D826DF846E9DCE6321A10FBDAE5DB6CD94
-A09F9429587CD56AA4FCEE785AD5DB80EB3ACDEFCDA074BF3554293876A83C6C
-150AD0F99DAB4D0CDF2BF8D1EC26B1EBDE157B6E9C21F95CE060F4BC15931CA2
-08687CF7B48B4D990031704415C9BC88023448597CF400A84BE2FEC2CC44B5CF
-D554C9A684778770DE160FCB9D3ED9183402B8D613AF99705E35A3D39F9D2A01
-36B328AA1047E89DD4C91DA4289BFACA07F07018C5652D8407D3BC853C58F288
-0B7830DC58CFFFB33C7B8AFED7435A1E54463A781256A51EA8B8644B7584C097
-DDB452A3A0F3D8B6F3CB02ECFDBEEA6A5498F49F00788EC83128EEA678D72680
-1132BB5C193E4E4F0BEFA9A49F9E3A7A6D62D58AE7B6762E11509EA6656F14AB
-A4C7C5E9B6C1830E802A2853ACD9C000993AF52BB477D166EBF0A0FEE617C6F5
-DEEE23D1C842EAFD3D1CB581EF41507FF155ED016FA483A3377EC9BE8A245BD5
-05D59CABE5713212C634CAF2A58AE773F03FD2C02692E24A525A3525F082A71E
-5CCB186381605FD97C98246CC09DAC1A5A3E5B9AEAEA913D10DD9D205DF3D1D3
-F7BCDAA555E66E8E11576724B09A620F8B33D4A85E3067DE251C6436F68B639B
-6C6F1EDF31D9791F1B2043EF5044F8F650EF3FB57E1E9D7DD0AE1C55B507C332
-5297347C64BB0DDFF423AA6282B6334C4ADEA8038DB4FC631826F9B1FBA50530
-88419C09D29BF5AED1FE9AF25D9AA264272F433A781F132045F1D783EFA52CF4
-5CCA7661887CB3C44AAB5AE6020A9A246A6D0CF9A1306AAC5A40FE899CD682CB
-8194DB4CFE55149574789CB97EEDE5E645990FD152ABB662BCDCBB9B4CFD3396
-9BDFE5EAD9FEF281F789207F18F1A04317A0941E69D60211C7B0B4A5C0C362A0
-693EEBD10595CDEE6D9417CC21706A495BD54CCE03D24FC6804F3320E806F842
-D4FAFFB332030688AA63D646D75B56DA1C98134059EE7095B2CD86F079E589E3
-97C0338AF7088484CA117F13F78875DCA175915A3A4DEE77E03C4451E434E6B8
-E499FD0DC9EDA625F10177957FF0398E3331FB2A1F9BBC67AE547C2773A25727
-CFD0DB446F99A6B40B377D6AF928383521D32C4DCF9B1F99ED2005555CABA9E9
-7249A057C2CBB3026982FF0C424286922DE75959AF09A8695206FD400C669501
-38BF8F179665200420884C03E1EED0E8A1FAECAB89C5FBED9B2B635D53BD52FE
-581FEF76195DE41E781A7233FFC201BC98BA2484CA045AD690AA057CCCE05CBD
-645676003EF72C30DEFFBBCC7E17381746D85144EACC20D05732A8DDD6F46351
-6FEB249E06FB25DA530764777F2DEE8479A5F2CCE546302432D87D9D40C3A7C2
-2D5D2333F246EC7BC30E94EC4C4F6BE152B17D4F5A409FAED0EE04AA27DE47D8
-6667C9B1A396B5781BD44E5E26C1241B060C64FEE30EFBE83497157A98B1AD84
-4CDD77E2B6333B43C2F9CC7F2D148EA5703FEA4807641151CC2874760224B961
-044DC9FEE7D76BE5A4C788B49ACEBD0A01D1F228AD363B9C0A93AAF04DC5DBA0
-64A05712958931A87DEE3E5395E5BC1BFB13789C920BA4AB7F813B3BFC53F6FC
-0A38CC11493C471C92443277F56D93809D30FA72BEFB78F2DF7AFB0965136BC0
-7FF33C28A67797E29FEAABBEEE4B6B14D81A3640C0FEDBC25386D948515CB5D0
-4F2DF6640314985518EE3A4290CA4D4B276F159A2DC8EAD4210C876B85032EEE
-4F81488778CCC76CAC911CD23036B6CC5012E06EF05ED96D507CD99B8ABE0E94
-668377EAB63518E5C5C9FF9DD6A6147F50DB07A3106FFC7A9485B5160605BFBD
-20E76FD306EFA357E09EAB8DB186A6A2172E4182B7FE0D668B43AED61EAB8133
-D0F62F4B729E977994B95035C8767C497318ACF885541D892C8871FAE43A893E
-3E09DD65A9C2241624F0762C24F143B25C5794EB58B6F26A0E70C5FEB60DBB24
-D3F2E326A98CB1878ADFE51DDDEE8AC8C18E3219C8B2DABB3A42AD6D6B39798D
-9777DA03556FA056F1619A0F826501F0FC3147D0E87309D67121D3486DF06394
-0AF7A369649D43D154E5277B97780BF8893EDCE3701C08C6109CA8480E0E0215
-E2E651DDA10353584F4F871788EBFDED92661BC909B0798559B938D8B083CD82
-EC33FDED0C449D50CC844E0F58D947611CA0F7C03AABF3B49E962F3AEA74DE78
-152E0F4CB0B908D4982C1707CBBBB3D1411351A66CC5C70D18A0EE8C7CA81A3B
-32A5DB830FEB66F3E37A1A25AE7D10BE36E474FA7BFA43976E04B28CBF2F42EF
-470846905B2B7A85BC656E1103CD4DEA742FAF747FC9DBFF18D6952A3A37EBA4
-F74C76FE738F8949B5E38B3BD982BBABD1C1F1350DBC1C5AEBAD5667380EC3D8
-3B0467859B64F1BF30A3B66E229D67F3E3EED939B363AD0E7B7184FB3E0994F1
-2CC7AFA7B5A83BBBD1D64332687F6CBB355EDAC9005CD28827A07EFFEE4E5C29
-E72100B20466662C9AB77B429586C543A838A77CF69CC54F522EC10484318544
-38F322D34E60496A61750EC97C84D9D9A00A0893976A308F665A5EEB1C3E4E04
-5AFF10FEDA609ADC6D716888435D70BCBADAC389201D207E7A6773B217B2E97C
-5FB223459AF80C0ABF8C6B9C4FBB294B10E3AB41CC8F75B0E701E7E40D283497
-508047E3469E77DE06144CD095ACE824CBFC3A1E9D2A7D6E2599F0B3E6DC88AC
-A262CD492073B7A78461E17DBF71AE7F5E400321CD15A4CA91CEDE8BC813018D
-6D8443AB2359FEF0711ACAD40CAA7C07754D2A3C99A74F463F9FCB685A6ED51D
-A715A38F961C663B175DCD2F5C66A3AC1089E833F0E018601DF3DC03AAF932FA
-D06A7497B0BFD94282DE23A99AB18DCFC648DD4A4CD0FF356E3DBCF18A2D1820
-C1B9E98D3F95FD16F2974EED5EAFD2C921F4194ED1CEB7C6B1FB9CA33F3BBAE0
-72823A345849C534D1F4324D999A8494D8DBAC0EA8A510739D5C7D7B78D11C10
-15CB951A8724EF07096F6362C24111B0E864CF97CC9E856D00D145C7199BE346
-A0B641FBD4E6B118819129979AC4F9AC9CA1822C06D3BE8E314CF7E07D86D90E
-C60077F9867C3BBC3C8575AD9FD2E1936AEAFDDDD45964C918A11EAE97FF3E9E
-CB53EF3B9140C79A45D735C074C03472C14935522EADC9928241584B0886E1A3
-95BC94B5E8B26FE3B5EC44B68E5B6CCA8122B7C8C29A8E86384CE43DD3F69790
-D164896242ECF9EC682C496A75D8007577EC29297D34FC729FF4F0EE70221C65
-FEBBFC3B2E793F6CAFE7C2CD89901265CEB98A83749B964840E70CBADD300150
-E00A3D02D0FC40504A5F5A01FB5F12A180BD6147C72F22DDB664FA19A755CBDD
-FD673161820E6A319FE63A27EC6BE317C3ED518D0BF0A12ACCAA630A896B0CBD
-E8D1876DC3FC880BB4B43D79C4244CBCA5C3175F25D95FF7462AB386E7257596
-EBD2BCE27935672C0129CFE752AC052F14ECECC486CC9FA557D4CFBB59F2D1EB
-4662A0C2089DB7DC3BCC119D01B5DCEDEDA6CD223AF22076F4E8B3BC0F7FE10B
-D825EA600682C75169E293EB7140943981BA0CC03E7787E2890915BAA72FE8B1
-DD0B73CD4444E51A2B40D3418D91A115FD9FEF52B9D0845034359AC988BE5D58
-9F988B06A57D1E17FAE738B8D3CA0C75121D470AA6DB6DB90FC29241544BEF68
-BC63C2E01A0B1358D7ABC862C29A5B7E43FE05E9735E4DA8D4DB70C1026FB84D
-9095AC2112AEFE4D8E33934577B5CE4AF2C9C6B5CB8223AC8DE444519456B96A
-449FFB02A3D184EA3B4FA98067CC81019E0A49307CF6DF45F32AF095C2CEB851
-8713ECF4953E24F74CE60A04BAF520435930DC5B84B467D3855562DC3182D702
-6ADC3B2BE875959C30CBB723A56799977847F093EDF25063045DA69877473A16
-9078057E8A9184DDA3B4B828F4D2E2C3A235C2125F465F7111624D7160E03A48
-92C8317306ED00D0BCF234416DDC10B92FFEBBCF876F428BE57C2876F7AA2772
-8B66F1B2233E4E6842737475DD47C7DDAD4F2126387F4411FB841BC86C4219AA
-79340EFCF93D82E5AC211F49341E598776943AFD1A6DC1385D997430DA4C6F69
-C58410F8DB9CBBB9D39CEEFDC03BEAB1CC9DF7CDFD34A246407F9A327B290A0B
-627488E6C23F13F93BE9584B1596ABCC57C96BFC5606119902220CBE7E363ABB
-FFFE71197C3BFD3BE299A6703D90BB2840EB6C2423CE10AA5F15E97ADD8E030C
-B158A140064AA2FC0016F1F4CC7FD674755DCB2EC76A60DC577D0AC5CBAD7106
-34DC283DA742992063F6B70ACE8DB7DB59DF2F67F4EAEAA58AA7BB617DF93305
-1AAAB4A71AC48B7C0B90F1B5BE1B6E7063924DABDD07D9ED4821B4E9F3B789F8
-12A26DFF28E0371C51D7DFE0E819EEDCB604AB1B9C4AC4194A842DA405D67C9F
-8F95CD2E47C16E39D581AC17D5CD4530DDB30B7E405318DBD195995316ED89A3
-A8D088774064A77C4527B310C53830791A5DBC7494EB4C25AD3E36C0543CB854
-4EBD6FA80DEA8BCCE84AD5988F8198F918EC447D0422745EB58EB31201E7EEB8
-4BE8B801DA33C8C8B8741467151FDF745BBDF140F9102E2ABAF4C58C5AE917C6
-1BBD951539886A9B5BFB93DCAB6BD8379AA68B1C1708FE186C4C92BF6E3D6C5D
-7EFF665EB34B4068D0E8F95770EEBD6EF735D2A3A2297F5D94A52EADB1937BB5
-3037EAEC543150BDA27BF451F7D127F054FEA3A062D58F2368FF6AC658A22A45
-9DF637908FFE02800BC6F4333800541544CFE09E48270EB034FEFA5AD494BD94
-8D48EE7E4082C64204FD57F946D43CD68B270D5D784257C2439B4CFF6D394183
-B9D734A09BBCE8ADBBC427894FD02BA27FE1EA728A97E2D468E2A6169220441D
-231E6FF4F112D453353607432738835E8C3A1265A6C71C802E076A594484543A
-6FA5E6BEAB49104C616812F8A897848969222920B1E3A39F42A3C25DC710D702
-873F82FF81C785ED49C70B2E5F57328F85EAF818588597A99C721CEDFBD80BAD
-92D0C48F0C0A1E95D195049F92307BB378D1E62E363F40410C824F745A84BC6C
-2D076550A4228BD807C7F5148148B30E000FFDC9A4023AB9BFE5D56B643F18AC
-CC69F9B1BF225AECD4DD731089D8AB26D25EB9CC943E4FBD2A651F88DF540814
-F4FB019A82C566C134492CAFBF4934F23CFA7D228EE4022F10C412AA7EF8F368
-B22A0E2D7DEEDA49ABEA5A0120DEEE09D05C073958CCCC351785618905723CB6
-CDF67C0C7F76A6442A3AEEFFD47F45D9C6FE819AB1D8DA16DF4259CFD401B008
-88135A01760A32BFFF064FF58433F07C9B4200F592DEE9FA3379280BD7223579
-A0B7A3BB31E866859BD09BAFEB760820B27625D3FAFD83D68FE80858531105DA
-D02BD6BE502DDB3F9A36963D907AC1F4A439E9901721E1011354486D1C0D864A
-1214C850885F1AF567FE84F69721649230F4118345350BA1C467EB7214A97D78
-DC7F02001E6EEB66C4B29121723533350CABFED75067831701AE0C3824CCB802
-7114831200DD4DE4E9987AB06D2DF07BEE3EA8E4DEEB064621DA3434A1C8239E
-398ECACD068ABA4FC203E68DBF6B3763D3D553F9A1B0C0F4B20C6ECB764A3AA5
-49ECC50816E83DE33EE21176261B17B7E9596405F30DC3B276723E078D38C49F
-41D9D0A71E34A31C0409982166C5BE95B67E4CD6D6FD70F4C70FC47895F25763
-655C54F34D7DA7C3CFCEAB8E46CFA4FCAEA8269B99747061E63589D64FA14351
-5DBC747252F1D265EEF8007097D61B7FD1D04E86ABC245F4A755A63C3845CF23
-A21B61CCA81FEBEDC93BBD228CFE305C077DA5BF7E748470D49CFBBBA9EFF69D
-F931E93CA1939023AD8C1F70A8018D1F1AB30D6FBB9C112FA3E0F600A9B52DF6
-64850F7EE371BC2603EBCC7071D37909D10EB378D742A911DAE383D353FEB606
-5BE5B213A1ED2641A1E529E655705CB925714A225267AF3C198CF07FE5C3A375
-4BAEB5B0D828920E5C30E956DC1EF23B07BDDD11DB232CF40B9B075697493688
-1DF4EC5FF2254F3FA8694B5FC837CE471518E9E575AE94B784ED9E1B7B446826
-FE86ED65AC46303B83FAD01A4DAD37F6F34F26157B39626B574BA38CD50E4194
-A44BD7B6EC8686317993D613A855CC9EEB57A72D3242DB07BF301D3CF80D87A6
-054DE08F43B97B6FEC3A1BF6BF5F47DE5F94C923FDE7B37C10C034C4AFEE5CE4
-3E55CC23A572EF3799693BFA7B939B1474784FDDC0FC7680431AC79F5AE725FB
-226D796F62EAD3B93149847DC9FB9AA305B2EC9A2D864E65A42611F776282ADA
-60530142CD7B549C7221BC673297152A686885FB0DCCAD13B6135ED742C793DC
-6575877DA9DF7515809C264D2D602248902081AEA512477B373D148120154073
-AAEAF3A89E9C861601C4982664734445D867F42A9112A9E047C1CCB9251E2AE9
-687634B61951F9976BCC33428D514B19F89195694BD77D1EC446BC2C7BF3AABB
-A10D55C8CB0793D1A6DF3E5A9C75F2A296B53B7E00C1E9F825D6332DAC1842FC
-33FA0F043F8EF2EEAD453A18D971E649B009C18D3539FCCEE17DCBE93DE720E7
-5A7F89F8898E00B979C1924F8F4A0FC93B5EE80161BD9C6719AB273EA856FCE8
-B4ABD8CEC864F3F9F5558EEE5E738D923C6D4316A33220E45E34273F5754C1D5
-268B62884204A607341153D5DD6AF7EDFF51DBDB0D36A031C657A6B81B1A7CF2
-09B72C5DBDA8529772155B276AEE1E99285676B1F53F1F79DDE47DAAD49EC5D9
-6A37667E3227EB0DAF8CBB20630C34277AC17C2F42869D9C11B8BC36E997B05D
-4B9EA7C642D723976E1D9A2DED515B133B5A8F4AAB3D0B4D071CC7A28B87B8C4
-E12ABBCBD42F1D90AB730DD93F5BA5ED4B467F327B8DE8ECF0533796B12EFC33
-A79908B40573403F7025E4816EEA83BCA7088BB0B7400BAA2165695551BCBB0F
-491AB2171D86A9B7094D7548D296108D0D36D7B61EC2D515CFBFDEE3CEB084CC
-B885A10C48C87EC74B7996EB81EBCA1D19BBA3DB2B52CB06C408621FC1F82379
-A99B6F6201CFA73EAB55490D9F39B40DD1399013D872B23DA14E1EBE4AB903B1
-6B16A3E08BB2BF34197B9AB741617333257A617310BF5499AB9263EDF7EC6A21
-C358C2D645F3B3737A625D211A23ACD5A907BC63E406A670B84D43FE67375A02
-3BFB87E71178BA31B867BAD8C2AD15205F2007644D63062FE9ECD5DD655E2F4D
-39F602666D5AAD6F2C4FF835784EA45326AE430E94FE27F0DF88B6E969E82EA8
-3D5089560640BE70827C5D4FBE7F303DD724910801D0E51CBC7D90EAC32CEA64
-C1D81CE238F5B395B3B56E4ABFA671263859718B623823D24CA10C1DBF3FFF24
-49FA8F2F32B323D06BB27288E755A519AB6D35149882A625084772C82291CB6C
-9AE34D30B73F8897B6EF45BBC3AC35E246FDAF40B215808131D6A5DCB67C5503
-57E51F381836ADA6B41FB62C31CFC4AB2DE8BA39A9E3B866E52298305B40BC31
-C97358AC99943E3174D60E49D21E34FB919B06DCC1F42947EA24930C471311A9
-680E2EF190F916AA00180BE239257405A05EDBE19AC282C0210FE7B5D81ACE13
-93982E13E00BA23336485FA4B2CCE13362D0C7F65CC2C99F9A82A945EB67A4D0
-0698BD2B260F7DD40D30D13A40FC475D2E3A6EDCE1EC1AF3CB2D08D1B91D5878
-67ABD580208E3EDD86F23F4EBBC21368D46DA03F8A21C8D19231279F89360AA3
-C3FF63D913C4AE9CFD9DA3922D122DEB5122F2F04C01C789A319203072F1A189
-8F33A82A58A6C0D42F106D2DEF8B69E59E7D41EE4272D6A4C221CC07BCBAD3FC
-6F889DF510A8958E1C2437155E5CAF4DB42BF86C74F3556D7E4898E3B21FFA99
-D017BFC301607ABBA62B99A1C942DEDE9DDBBBB6EB87E753548F99C4ADAFCCB6
-9FD8E8B0E77FA90883ECAE836ED2A1A9FBD8D0914F6D827F9599E6C26C315985
-4C12083DB8BF5252E36110807567989B7138DF620A102E96224775C2CC42A6BC
-18B3F8060903C47FD3BE4C0A9F188DD26977DD5CCFEE61C6733C17D033791EB3
-2DC97C64A58FF999DC9513FE8EE2C8C0216EBDE566A9AA7EF04FFC8D4F1FA975
-AFBC039F54369DF007CAA6ECD84055AAC5C534AB84E4DA34E804F3EC4D631198
-474354CACA2B3919A7E2536147549D6422B5C8FB29AE315FBD94D5A20F64FB39
-C562FEC02E0877A9CFD5D1A1EDFA73B790C035F1510C2EE179652EF35F78EEE9
-11388518E7D3D732EFBC05B029DBB996432987A2FB0696BA515CACF806AA5431
-802C9C4DE23AFE8351652C2785A557C33E62148327E0F236235C5743719657ED
-3B6B2D88361EFDCE0917D9B0AE13F77FC602FAB7CEB02FD42B2AA54F56DB0CCF
-867A1BF0788E02D3263E928CDFAD1EBEEE058657972CD0F35615B7C6747E30BB
-4A441306FD5212D52149D161AF468A9F8A530161770D7D8F26B4EBA7EC934B9E
-73652293659E8958AF34EE1AF0A8B9318EFDE5510FBC8EF4B6F368995C1B9FA1
-B133343C2877283BC02818F9F05DF97A895AD968E72EBFCCB891311C1AA4F4CE
-BA1D17C4B3D22E6C9F198952FA013F921B65853FBBABD1CA82AB0E063C040FF1
-DB4D7B590A682350E183C9A797537049A1C0171EF85A331A180E18C949AC8DA9
-715DE217488AC59D6C1F3243DD9C020C30D93400F8F1CE419F28B125C3DD912E
-50A6FB610E3411908DED6540943FBF23FA73929CD549B7DAAEF4B7C99E12F194
-2B7756531CAD917881F5F2A0846944188BBDBD17E9B793883419729847E32027
-360284F7BE71A08DD7FFF9F493A901D993E65F64DC49DD5E1F68F09DB9AA83AE
-2BF61D7EF4F207AA3EFB48AF3827FFAF4CE782128C3F38D5205ED3BD3F73563E
-45366240D027B147E85659B157FC352035D80740E8CB6AA91DE19C51C28CAB49
-E161811BE844E339EB5A0D639C550D246047D5503CF0C292B39D60342839A492
-C17A0DAA977155C77CE37A58A9E4CB23197AC74974CF09866AFD80F15A267DC2
-A9FA7B2756F051F8D1AF60BAEFDD25F4B48BA39404D9A622605D4CDC129990B2
-F35A87B007BD55D0291E6519E55C50E347932820396AEEB878C109B4D5285C67
-4F6F803550406F8E941D0AE84077DDF44E337E53FD4B7D61127465E079EC7FB6
-2E2E9E3BE964CF4DEFE4A8593BD36B033AB8A3403EFA0D242D1802CFAC4CD4D2
-19ACCC1225E688AD2384FD6770BE656942C99FBF60BFB8A8924E3828EA9ABFDC
-FE86FEE391B9E831712D774ED8BE9D04636C05BCD079FCEB576F77B0657AD548
-76375C3E41F09EF3B31273F3C0EF72323E53AAB591C496D7D0B3CE551C76CD1A
-4899F7FF90C04DB3CB7B125064EC44ED35B014CE8970F0A2DFFA3331BF11BF0B
-15A40AA1F23E3AA8B87552BAC1FF85F1D6452E8B95E191459E87D7E75999645D
-72114CDA06025257AA41FF64524EBC1C5E8CFB02839F18131E3594408770A77B
-28F1CA19E5BD54005EC680F3C482602BF57FC2C4C380B200EA39739A60EF8E33
-30581945694D0E3F79771DF0773D6E86B1F6F6F606D64A67D77707F9A46F54FC
-25DB38DBA700155DF8986B08124989E2588C5A2C14A31EB6FEDD3507F645D832
-316DDDCE4DADDF594BCA56FDDFC71B81CBCAFD73E8F0085E1A13E62B097A5F54
-B78C1CA3172D00CB0627AA94428C7EFA3D45AD1181B1F7F834004368067DC90D
-8872364A7283958DA64A65E85D207CFDBF73A9B02C0EDEBFE01EF374FADFE157
-38D65BA54D48079CECC033CAE2CB34D1080FF4D78754240F3B0014836BD7D55E
-97579A1C60FAAF2D53847343BD1F4C17FC094BC73B4BDF03336B72B453B88870
-1B24713BBB4046358EBDB731402F8B75EAFF2414F4CCFF4FD0E57D615C8F803A
-572B8CD7EDAB39439AB24F85823BD30D490C9F0874FD696B1C768D25FC5B43E3
-ADC4ADF5F96CDBCE70E7601E2BEFCBB39C377C68A09EC933F023887AF4417FFC
-C876075372E571A6924959BC2EF5ED4618B5DD3F7E270707E6AC1BA43CB2ECCC
-25D4CEBC39A2C5C9CF2E8157FE3E8CF2B7F11AFD558F84731170CB8881EE9F94
-EB4E9826FE2DAD80006D082D1D38C3337BB9F0DD49B05FB7B9CA35BC3C66952B
-73909170C4DD925C7F00C5B821B6F181EDC35F820AF8B3053CDFF7C7D3B597B3
-76562DACA7E114B34618A4232A2743E06E4978C9AC67A3C6B9F5BA295DBD6130
-6716F450768D0556EB563E36A43DB8FED069F5BF428C94DCBF92B9592842E28F
-06225172B8861F20AE450CEAEB24B1CE6CBA4B397A9C6E08BAB3B5F53C131E5A
-C71F2190233BCB0B2BB333B7E26744F539EE5D3303DF1513E93CBB3303099347
-0441F2272180B3BAAF7415C9BC2987CBF50ED7B19EDDE7380BABCC44526A8DFF
-E016B406435BBB0C70881BB845ECF44078EA168018959BBFFF43C142A7E82434
-F416A3A9161DA07C901C5B92945CDCA3E3462C192D2939267B31D0C454B8D9EC
-B425A4F111A737A5879871810D07DAF9AC1731CB9B3B7AAFF39B6E0998CA76CA
-3850987DAF090B9839B42C0D2671A0791D52A4D0503560E58B99577B0E1D3433
-FC3490215BB25A05EA682A7066CE1EC7618C03EF19124D5ACE90D77B7BC2B992
-57C5C371B78C1C146C78A20262C51E2B680F08E53A66A6E2AA1F740887954ADD
-7EA75168E84A985F8B997F16B2C3D09D4DD30874C9EE43B1AE72FDAC1071AC85
-F08489FBC23E31F4949B6DDD59388A87A915018792CA7E948937AF9B92A3CE54
-14811E5CAE60DE20E0CD61F6155CF9744783D30992C191AEB2ADE4D4AC36436C
-EDDD7AB665759E92D01897C634E93BBB9414EABA1463A4C2920DACCB2ED590CD
-CCC565BE2DF01C57332ABF01EDBF7E7924955C1F9C19EB71D5DBF17FEA991AE2
-851ECCEB3029AF636B257285AD1595C21A4B843DAE55AB453F829EF3F9B1C4EE
-871220CCBC1F19EC964A66A9F985E01A2D0C8B78C08E9EE74CC4FD7673577920
-B70D38BEEF700A93F6120D0EDBB2698B8C952855BE38588A3C064CD35B1A87DE
-653DF6170D02D32682B2D653FA2E8E95CB10173B8E47FC4C0760344A99D8CBDA
-D5E9BC5FE269EEBE1F54B9191DBC48756697C3B2E18E790A233E7264CC6167FE
-9A9F123D53EF9DBEFAFA25F1CC6A74F37BDDBF38D3534DB9ADA535A73FDC5936
-4F18117DF1C4571B144C8DD9F165B518F28CE9323FA9D3286DB0FD6C6AA10715
-8E054F1B9E053216A7C7163A29BA92069CBE5EC5F09D07E12DDE6EC3723115F6
-DF096CE2518BEEFE60DB6CB87C8BF687C61650378547DAAE31C396E53631C168
-6CDBFF0AD3FFB80881277567B68989B058696383AD3197C43D89E14A59B9ABE4
-8C4216257C31184DEA7FCF4B207B5383F2F43AECA9EFD1DD0523513D1EA99947
-12B81E617EB73F4D2FDFB4214AE62DE7FBBE05354680DFDD6A67EC73DE1735C8
-AF6506FF2DD0EBD448E69A68FDC8D4EBE719367BF028891E57D47A24E863B44C
-EC9B2E8B5B5FEABC7A6FF84DAFFAC918C34652EB46289491A16A9B1A1BAB478C
-39336D49468D2FF666C93184AE32C5A797936EBAAFD3D37DF555F809809249B8
-1E92E3808DDBB6F9AF2EF70FB7520F227E7ABE7CA2D6EE15AECEC49012D66044
-2756BF75108EFEEF6992DE86BAEBE7F25094745E12FF5C174A4A26467B426998
-D8EE46CD0189EEEDC4577D2F9153C25D5DFF6E7E448A74A5FB2BB079E4E64B2E
-9F68838344993498495AEE1B7FC72DEFA000D788F239BEFD7E5A7595F15D2D70
-B11E3DE4BD51ECC4B6AA5D7219B55404EA95B08555C22B030BCEEAA77FB7C73F
-C7943D8F16EC907560CC647410E08B00D3CAF198CEB4F488518586D3BCE6A369
-F74379CACFD6BC1862422CC7F3E2E7C4C58F83B5BD46153C9BE5CD07B0F0E56D
-A80D40EDFFCD5F0A222DC3D6BC217A82C79AA99C2EE56F756CBF80D8D5D6CD45
-4B38A78CDDC58F34E922E2F98B2B0C86E4250C0A00494648B37EA5A4D29A8AAA
-37D343050CF5DF9EC748D8809F83EA9C583118CB2181416192AF316800295FF2
-EFF0FD5FBFB746690E5505AAAB193938DC4A2C8FDB94B4284E2330415D93C1B6
-BCC32910AA6C3584115C5525F7BA9FD68E5E7D5C2052B1827DCADB22A48B0C57
-15E8FE08FDB7D9F01BAEBEAAA701D4ADE8FB3E02CFC1EEA4F76A0ABDBDD7B2EB
-EE92F45161AEAFC5027BD9CB38189C939C168AD80A2ED09E2965630208E8DF4F
-26F0313B5D6170F47E8CEB7AF079EBDD9608DCBA5BA27DACCDBCA12326FFA7CD
-F9885D56F79F1D5C6766EE3B5274AE2B43589A9AE209ADF02CD241DACDA89F71
-9E25E72A233B3B5FC0A11B0BCE99A28669B7B98CAE5E919969225D1837B62E4F
-C2E84AA38D4AEA5756E673CB64EDA19D1E5569FAD02D378C8A560F5814B910DF
-D495994892D27C2AA9CFD61AFAF121F4C8E61106FB7753A6B7E48833A1BAC3EF
-2F91BA77009B8660023024884BA7915AC57F8AE1D05590798EFE27130212F5B7
-68613E5063255A24693189225E492686C7DCE375F7A6F7EBFE4DBB2B143B2C99
-6AAD94705593D75C5D573C4C60AAE0089DD5EB76AF0DE883331F35ABED721BDD
-D64D57D74B89DB9EA7C040E380E56F78D6FCFFF474FAE59C560EDCDFBDB081CB
-CC728B8F8F6E3AC866935E5DEE1A2777D41DB749DA987F41ED8F21FF9F0C9EE3
-EE6E4B552109C5749B64E80DFA793AE8D5363109C92C215E81BD2F46D63592AE
-7DD7F966704C4F0ECCF1F33B1DDEECEE752FD7E85EDD3DA29B722C1940553AE1
-B6BFE834332E9A42146AEF51B00768F180A078940AD11CB7195E1D6129C986AA
-BC1C2E3887D0254FA5AF6732C01DC4120BC71DEE30182C0278B3497ED2BBEFD2
-10367918730245BF3E0CB9D3FF15A7EE7933F2AA310921DE928C21503B07B007
-154B87748230A7F022B897D6F65A9BBF4755D6544783BA58AB0368C94620FE14
-2A6BBC08A1D98C67F8A1939FD2F3C04B951B9DEBABB6CD56514700205C4E80BD
-2BC6676984BAB241525D10BDF1A66E8AF218DF0B3B22FDF724B16B9DA539D21E
-123D45B44E19DCFBA244566609D3C75DE067F8BA770D40EF79C2EC83398B22F9
-851049306EE57E57389ECD483D8E4F23C1A7D928038C208D4B73185C97CCF2C9
-13D057C7ECDE0DE6A00299282A633607D1047EAF5FC2FFE0FD743DE9314E588D
-22B113FB18C7ED80EEE50D3AAD81603DF034F224D42CB791CE10A8B742B32605
-F3CB2236BDFE1CE04C78ABC96A85A0C0A058E385A1F59DDEBF69EC3F026524F0
-F2E8EC19FCA69EF69D31881FE73E51AC41EB3A47D3B5E9FC6B971A22E0E61ED3
-BBE51FB8DE2518BDAC45A6C2758D6D0F20C0FF9A9AA5B36BA4C07E414CA08B60
-0EE5F3935D723C35E50303179AA5C848830AFC044F2D114196EE6B45CF3EF21A
-14345BE8341EA55A452B82E36337D5CA4D4A35ACFFF728F83B1BBB81C1EE1125
-914FD842D0C85D8B4D25510565877901BCE9A0D194645D2A4D218A552D55DA8C
-9A7946F1EF340E1F166F74E7F8E5E7B6E2D361A6CB4D5CD3966AD88B2BA666B5
-D5E832F486F1305958B8F842B5EA644A2E2CB071C33C6C8339024495F1C38F84
-463E56A3BA3E1EB606F56C677699B80F0BA57D0F1EFF3EDA87F9D7FDE83C91D4
-A33CE5CDC43364430CA330CB48C2DBD666C60B0385D200F20CF75E34F02B2CC6
-B41B89A587C1D4391E2B2BE7B9E13350E2FF07D3820A90004323C29BC417EB94
-AC12EB1A5BE85B6C39E7E8272E6181308E72FD7E41E33D5EAF2CCD59D2A2FFE9
-6036CB218F257440B517E49E0C2235756EDC5324CA4880F81C441DBDA7AB9B4A
-8E2983834B6A697C174ACE33BCD2BAFC7EDA6C559EC64411115910FA3FA8BF23
-123AE7A372CA6F2DB3B351D8DB52C5DDE60EC873AB6D7318924FD0B5D7B0C7A5
-7A2D225B44A77DCE1EC686698BA2A9CDFA4B03D0D73FA7F611ED07618901A493
-9BDF6DE163D739785C6DA052D3B45434FD42405A52860EA68B93207C092B45B7
-3429AC8729BD92F84F493411EB4BB963041C1E272D697EC5515B6CF84E7D4794
-608755CA98E84C0E678A25FBFDFC9FAA21FCFD3437724E1C861A7295BE7AD6F3
-A48483F014FD31A2DBD29A70D68B097B35CBF902F31221BB291AB5216CA0CD34
-3359A42AA0B97A12348E9C3F5C80ED7EB2C8B53426DB7279F4F81F2DF1033517
-0307DF4A9F7C92C4FFAEE3AA8B48B8AF1FB21851169A88A8D64686848040CEA0
-ADC5C1E02D65CF5630281E13FBE6D3FFE4C1695EF7374E5A4C4613C2C47EA09A
-978758E03208489C7F1911EFB2E8D8207A1D73F5F31A64A25DB607350DF813AF
-74C030206ABB2967FF064B6898917A16AB7405D2081E1F2F7D5582D084E30BA1
-376D6D737BCB3EF9A02E42D657CF34F3FEA4E8CC7A1EC47A62890F01CA6AF2C8
-7B154DC8854C530BED8D668DBBDC399F98F68E7C35AE329D3061F576DF724FBB
-38B417DEA09BDE7B7B4332E9CA1D325B04420A279075037B982809742AA3465A
-3836024E501E746DD629973C1E90F11B4449C8616418958B44E53B46BC4D299C
-70D1136A77287D1A00EF22E663BB26C4F63F4EDEE61F1DBF62AC930E04825297
-88410200E28477EC66444BD097B446C678E48A14F142D3D763EA579B8F985B7D
-A081D8E36FD24651298097E7F0F21741D7DC0DC8F426619C132C56E77B86659C
-C39551992EF76230262ABE6616B0E4746DE46EE4BD493222AAC8A31BCCA0823E
-8498CE6F24D338F4ED166BAE1639BB6D1CE9F5AD7B848E9F49B731D1F22FADE1
-93241CBBAA332958639F38E1F470BA9C9C5574EB1B493D83FFC78B9239E3ABF8
-079B77380F47DDF544A812B12B4B83B3127C7DF65CAB1F45B238F2D4CA763296
-9CCCDC58581CBE6A29112911E54C8025B8C5A3224F004FD60ED26BFDA54F52C8
-6FED0043183E72D1FE6230B78CF92AF299D70C27078AA8713D4C418B66811FB9
-4715AF46BD11407EA6EC01B24DACF23BAF99B8190BA9A86E43B78A9B528C117A
-5C6CB343BFAEC172BAF91AF442ECEA40E58BE13A5A216C016DCBA6D69EC1FB4A
-C0BD457E6664D9F612020109B0950196BB9424A4CAD0720350FF63C69FE5730E
-C33616D07B9B7418A37500726C5F675DA9CE83D91BA8CD1CF9B4EB8A6AF20A1F
-71AFA4759A6460479A207BEF38EC839883CDF6C873E74EAE3AC1AB8660C1C7CB
-178F29BFFB6977C731DF8799C4B6BF9D096B03A3CA8DA080B6815F74131F0F1C
-54567E97BC70624A6BF98E12A537D73E98353BF729CF68329CFDCE8784A0B917
-9DC0678F27590247AA341E6D420852738E0B3B86EA3B2853AE91BE35D5EBCF5B
-9EB2793114FB41BBB0F09D9FCE52B5D3403E3B413565D257931572A445C7A857
-0E41CC8074C54FF209ED6E0F3EFD849729704DAA679153CD03E1CB64ECFED971
-FC3FDECCF39C320C3FEA0355A115A7D8C20910D9E9586372B0C990BA576C319D
-8766025246A64C653FA20E36F413C20EA077878D8E38F24CB698345CBCA5063D
-B72DECC798FB3F5C3C74E735BCB6DF5169D99CEBE00C2604ADC41B157C7BE677
-A4B615F6D622B589E3B0ACB4F784FA55E989DFC3CE7EBA6C2471FA68A3C19C5F
-01E1BB4E4F270AB69CA969508CB6371738E56A6F719D02FC6852A714DFCCA4F7
-234E80D82D16047088B56AD72F84A69CC0DFE0B66F3F4D70C32C2B4EFE803795
-B4EC39DA3428099CEC3B60832F5947E938C2FAEA925DBE92547D58D23C8C4FDB
-E21C700D5EC6B442F641338DA6221D7C66B54D431C6B8B4585ACDAEE25366DE0
-FD90D70444D824F581F0375F4D703A0E75E27C2A3AF714CF0BE119E8E4052D1D
-FB6AFDBC63928FE306B97A92748072304AD9E7C9315E8D4F0AD94F6AE2A09CCA
-6AC8FB4AE43BA20AC4DDD15C66C652C33EFC77AE59D0C58051C7DE1C6750B816
-CDE94465A4D93118893196842E84701BC9E7E0F811CACB8EC69D5475F46A233A
-62EA0D42DDBE244865DD7B4431DA6877E6A8F2CDB4D824E9C0203A40FEC72EF3
-B2C241EFB3DA5C3DEBF279448187CE755845861354060229D97DA56716716277
-3A3B79F3802CABF4B058A539A3A305A157E1659B7CA0197E81A5EABF56ED3F8E
-0CF93323FBDB8F407F4BAD0C74A0E9496EF4F6435483C05CFCF9CCE11AEC283C
-ACEF3FFB21B5DF905302EA42FC90A47FDB5D70173C04CD5CC0E6635469B659CE
-CDCF3BE2ACAC281BF16A9CC02CE97C5A135FE78FCD9F265403B8F3D7F5E38D12
-C349531C4C2E0AA1DA7A19465A135B21330667B9A043ED9131FEF172E8552EC5
-6631C69E8D5510C84FB086C0AD769F6668FB02CFCB6EA31A8769B8331A194A85
-B52562DB12380FBEA4413F89CA63701055C3AE7949DD6B56A0CE9B094885806F
-9B7F3B6C2879FBA9DFCD3BC8A88CC1E20BD8CDE9393C8A895337D6E27E2A5A6B
-72ECE2707E698EAB61B41B60936B99330A4246B4AC430222B988AA67849E590D
-32ED85138078C77BF48611601BEC254063457C7F10E701A824EC96763C698C79
-09D058BA6AF3AD769D95C9CC6DD1B8DB00E55370AA8D4143A1246B8C972AEE6D
-23DD9A2878F6B6160214A020C7A4D19D8A5BC2B77D8D72B9DF64FD941B2C605E
-41E70BC037FC51883293FCE32D4ED209159DA1B4ADBC5490C168EE40C0B54223
-C7B85942CF09CB46E482472DEDF4FC708EF232D4B3867014A9BDD833FC9D92F9
-6635449F157B2E8294DEB2C1B592709EE8317DDD9BA89357CC3751E7AF423E4C
-74A3466C359FB0A5828933A626C983A365236025098C79D4EC849ACBF6C0B859
-F1813E23E15265271E1CB291C335D0DDC158F8DB146DDD365B09AD60E2332DDE
-A2795C43AF1AEE7C1081A7D1FA98666EACEEAD000A3865AB7C6797B1D5A4FCB3
-B2FD10D03E60E1F0C35EDDD7A05855282E7998A3877DA3DCB35CBE4F6884789E
-41447CD7BDDE598518C7D29B3F5E38E0074955DC55D98079ACA908EAB37A
+7A9D88A3CBF7A29ADDD1D212562AAE1F7506A592ACA0720C2FF4E162274961AE
+2595E81820B04A9E0695A13DDC27AAE1D1D4336D4A5EA976E627A55572B3354C
+9AE1D011E54B0FF279A63962341FC7B0E71B46855BD31F45CB80F02FA1005F14
+7D56C2DC7AB765E2C9BD3986ADC36D63373718B1564D72B4EE59A393C94B3C4B
+1ABB6A2D11E7324063259AA6ED1D3D4BEFCAF094189AAF89E17614117D6553D8
+97910E0091E130C8613B5EC556775B8B17D6F4B967EB1B7FE6C9A77AFB974B9E
+31CF0DAD81F6A6D87FF1F4F6FAF29EF67234DFA0C7A992BB8D727536BB3250B0
+C339FA0237D1A84877B856517ADE5E0C0CA58CA5D0C12070DCCF9EC1D28761C2
+4055936908ED8069B3899B6A449E15CCA6C2AC37596789060B7FAA0009211D27
+685B9573F4819CF21FE46ABB3B5B77F9D78137C27ED6FA744BD4865693786B0D
+94D0AADFF6E0F831DE843472766E323F5237F879194419341C9B049623BF42E4
+7EF714A0CA0416D18CFEC946B7373FCF6136A659A1C7A2C92029274D410C9208
+0F4B687E9FE212305D2A625813BFCABF8C5CE021F7922C7F5B2206E0398CD7C2
+573C59C6439F1263640D666F1EE274B3B519E4C1E6FF81C2D579525766F7DF45
+734877F8981160B061B0567F4420802523FCF31502819F55C9740A3FAD8BA78D
+0DE272B52766769CA2A98287BC0FD03AB564E3B7C1A43235A3A7E62EAB5CA2DE
+65CF83E3225181D2BA3D497D19F2231C6235A90DC324AE4D681C20E747B20198
+B57FEDECF477A9665F9E8558270977354BB3C87623F9F2A15049A77295426CE6
+7C76690DE6055CB7C33003E893348E5782DE7BBE208A1C9E4441CA1CF5C9EC4F
+93516122C798F73FA5D0E364F6CE25FD5137C72FBD9EDDD925A308B7DE8F1F0C
+DB01CD9056424424C468BB61CAF23D4801045CC6D8D925ACC6029904C00DD3F2
+7A330AA3B6FC633B1216B4F3BD6C5612209293FCE134F404B26C5ABBFE14FB2C
+AD93D49A5DC184A076C18A4DF83E358D253A9175B25EA39CDBE6B3F4A7F1AF23
+B7AB464C49B003307B0464AE810C65F8236B82E5A9C956949D9CE78180FBFF91
+0937C22368859355159C748D56A6AB0E31D8154766DABA6E29257D449D2B41B0
+2937E7CB77876810C326A0A53C12E01A612CC257F71E7E17819FCA1E76DFE920
+F40D6A40B7D53BEAFE531B2E9D1FEB3733B6A9EEC5F522ACBF74FB760B63D146
+D777631FFB12BA79DF04C04EB3E5BB99F7F3C9AAD1972B0DB5D73A8033E3A23D
+49391471DFDC5FF3B9C8AFCA3CBDAA74B05579623ECB5368C96552805616DEA7
+FDA854BA9325CD520F79E4A1C367DDE0210CF9133FE9F9C153904B40DEDFE7F1
+80A26DE9531A22A4F04308CF96B4CAC7CF6B9CBAAA53DECAC68BB900DF883427
+96AE34F762C4270FA8C167B32FA8831B0F1663B60630FF9F2C0DB9D7E6EE61B7
+98A1DAEE9410715013AAE33F0C2186BBB947E3A90BF922BF293704E362C9F0AD
+D69D4045F37040F3587B36522307F27A063DF405E21652E4E9D2D92CAF805C60
+7DCBA3EE2781DA9F3713A2E94AD1B55B957A90C023D9E4FDFAD8F9409C2067B0
+1437ECBE4F949054357693DA8C50C1E92AE7D54309D2D4B05A0F67E2C42C7E4B
+B84DBFAB3A69BF010F31A88B733345036F74424E801268B0EC63E1ECF03364D9
+036612A6B70A06071DF55532E9637F09D3AE7AB18276E8BF927705A4D71B75B6
+44237A899670A65429234E87C2F8582B3BB98E15D547F661B94E6DA581B4F98E
+BD4C0830AFBC663D03F86B666DC3482B83216B535D6C36569703374D62F4C3EF
+3D788235EBD98F3E37E61E053D3164FDD935FB2AC03743BFDF8C7378286A4202
+579EE55B822EF7547691BC1D637C32483B17D29B64C69F81E669046370011395
+9CE36732FE830498105200E56B96D3D08D6F1DCD319C681F1DB936D538C65BD3
+6705974F2C1EC86E695F3177FFAACCCCB6B985A5519E0436B54ECB40B0C7492D
+BF1FE6F7CEA5992370465667E90DA0DEE2C3279E9A9F056FAFFB6320F6326329
+82659E9521BA09312612061D14ED623D04F9CB6501C57E729B0D9D36B4E2B109
+35AAA4D6C8AF9D8D11588670BAAF92C559558F459F1B1E1BFD4B7CAA5233822E
+52BD7DD6663F97C63F50E14B534C3AD602D2563909D9F6774F4E254135426D8D
+FB9397D066140C8B35F2D4196C908DE3D55E883913E97C7C3961FB359C0D4DAA
+3D3E3F7DFD72BF2DE8F8FE7271FA2BA8A7EB9AC10467A358809C394BDE39B950
+1098FE0109F68A32B2D93D69DDEE6B3FBC5E344D83ADB377A0D2A7C6B15A19A3
+790F1275399F4318F83B7236D5C21B6457A1668CE163921C6B29C5B00C3C0C03
+29AE4D79B2BC1F3614D7AE77F49AF23F3B7D8229FE38DD06A7239BF0E6459C5E
+E5A375725678EE1312FBF20BF5564994383AD7D18F784B457D77002E206E973B
+2795255CD98870A908B7CBCB35D37DEF510229611F60F9F5545400CD9B187A36
+7BC2B4B130416D25327F50A19B8A851F48F4B35F784DE9DAE981D81D009B441D
+2A5331934980AF705D215A05D2578A5C412BAAB401ADC66F886823EEA7F0E64A
+42F3964A73F3CC57869661BF0FDF7AB7D8AA0106214932F557D80B4F9822FE80
+1964FA02B3EC18129D90A531C1C6D7AC1BAC57EEBA9A62E1FB8D22ECACE4F5A1
+7D15A77F5F8805A36DC79F5E640DF1FE2FC3A1F2EF957CEB9A5B033F1B9FDD42
+BEC12BBBF921681B676EB8A34389D515830236B77DEB27A9DD85DF883CE51714
+CAEBB07354451765CA6DBBCBE1F63E1B1C42A4AD23D2AD0186A13B65AE12E4EB
+93AAB5087C0BE853B31DF90FFA7BF5134520A5511294F16DA60CDCE07F646A6A
+E2B6C67E2E2ABA6DC4C167B2912B169FF26A11A6CC0A8A2C58B9C5A701369674
+546AAA3768444414FABCA86EB8C046ACDD65E990C9AE6DA11D7D9CD8C57255AC
+B2FAF52357443BD5BC0DDD5D394BBD598BBC13372A854D8D8BC5ACAC2C286953
+40194854DA67DD0A127C0AFE8331B8858C15F626ADB3BC402563DD23FB5F38CF
+4148CA008F08E2AB3B2147C46329DCBBA580451B1BDE2D7261B3C5730D58E82C
+C0AD76F06DCBF0D5B3DC24FE7FDF91F829C518210D3C7D43F85B67FCAAD7F3D5
+B938D5D3674573A401335FF79F641CE9F1E770592A71F83F1ED8F06EFEB69BFB
+379D55BBDB92815B9D5913A5194C319B60369E26FE9DF3CF12CDA905CABF94E1
+3039C6DED897B0D34923A1F443FFDC54CDBC02AF31CFCAAC4DF777C1F63164D0
+427CE2E08411F8F371B9A5C9D4C0CA6A000D7CC3DCBE9ACE04A9380707649700
+97E58C5EFCBA0392B8CFAECEBE0DD042EBCC2858D20D84CDA9B72E5F529892CA
+E72186BBEE1C248B184E43E8A30FD1ACBC025C0B2B2F165A2F536C7925116753
+FD264569B0329E2D1494B72C1DCB486AE61360BAC77AB883D4D4A5445C0B399F
+A11A7B1298C153F1C862FBF92F0B040F1A12D9FDA3D221DE6237D2E155D1FED9
+A5C5A2018CE5EE0440862FB749C69F72F9FF2EE7980F699BE501244BEC9EE94C
+89B0B226CF6581C546FA1AC9D31DA0C3DE9F17C142968D4C56654A2E2134421B
+A6D00FF62CC54B4D08706A3FE1256D195E2EB5CCA06479460B956DEB6EFCE00F
+5E8E6571AB8647A3339FA5F1A0C406C91037B39323493DCDDC0903FAACED873A
+BE0B10342E0998ED00134270770C5671B51B2CE8645FB7698E76EF85C90B9C26
+AF862AF82C602BE7A683E67A8A629CA60B2E1772059DDEBC6C1F4CAC74FEC2DA
+F182CFFB52D377C8C485EF838B9ED6F1F62781CD39B0B53350FF5D6B032945DC
+3AB0086808B07D65178506064F022851844E0D24F3BA9E372DBC490C9FC3C753
+F883B6E165E8EEC39933136058145311F54D725F968FA6B38C41D9968401EA43
+D3F66FC5BDDE85785C3A1F0B6B2811D51AE017066C27A87C8AA4CBF4E67F3BB4
+4140405A4313DE1396E6A605BB5AFBDDEEE40451FBF8CCCD576EE1C9D5166729
+E6FA45367F4FCD0339D60FA271DF0A18682EF111930685F459F2A568C29D545B
+352DEA8B75A744255D1AC6CD27260EAE7E47DC7EF88761781167D5BA23437F38
+AD1E0F1E8C329FBFA6EF941FB825F4E422D064E94ACB37A9C4B4379AB555D3D1
+8CCBC2B0FE59139C96A98688E8D0EBA5CED8C79C346747B8F00206D76EDBF6A9
+370553E18131D606AA28FEF9E310FBBDE66644F6181C39A38793489373039802
+3322DE077EB67E2234413A9C6B66B39440C64E926FB132ED4DDC2EDD8375D61B
+707409E409F0666DBBADB9CF29791D72E463201B560E62ED51C2668FA9873A6E
+75363B72BDCD6B6E0B88DE94BDBB08CB3195F183D695ABF0ACD56B6747F1E7B6
+CF49444430D681C754BD87C23132BD25758518B7416A8234F360D113311E0EDB
+D6D1963D511E441C94AEED80DC5C1C630269CD74502DED37FB2EE9137770DAEA
+F6FE1248FF41CD6552507608CD5D81E06CBA4E6A4334C199755EF5A528F8255D
+D3AEB9773C45E0DBB0DCC9FD21C3461D9A7F7B385BE6E38C53340B65B96AF4D7
+03CF9500A05827DF7E91734317EE02A64075AE1055315605CBDA4EAF149EA64A
+5FBC6464728B29BFBEA4FC4C9D8F7E8E02434AE2398A06980DB13CEBA8C244C1
+786345CA4FD765F0883BAC1E66C8517DDCD66E650F3B707AFF42F246BE1F92F8
+27C4EB26594CA6BD3D85AB0C16AE9C0332A55A5F3ADF7E7B04FE01CFDF07E280
+4F8B72E3829F8EB37C0B80C06467177BD43F04A7203778EF124E4482D6DD5BA0
+B2DA0AB43AF7D4D224D25F23A1F36C09EFC3B2287CD6C75D918471F9182A0681
+2F8BD94B6ED26A9DEDF4544A2FD92F947499F45FAEDC1A296803D41CA945E79D
+CDA3259A10DD95DF320A160599B5B40D6D4EC54156835531B5E0486F3F7A3C8A
+8A4F756507AE45C9397042C75E893848E841EF1B1A4AD0694A6F62CD3D56593E
+EBA472F0971B459F2150A756D2EEE1C40E7574DAD00486A10C5E5D26DF618701
+6BAF18C03F08E71D80207BE32212FC4E2AD31DE8B024DAFB8A917F8519443775
+0E840E81810874CA44D801D9EDF8FA49CDD502E09AC984DD53C5DA1022E1A8CB
+DC6A1D46F593D8EFBB25E4EA26168A1FE77710FF67AD5D173972C207FB55A429
+5AC3C767010EEEB91E84A130EB716ED97006F2D53D67B3920A6DD021A0311BCD
+BFCDE41DF8A58088CB31942ED86BF6DEC70CC80A5D5F205AD5077F4DDD458FA4
+B9EDA5DC5167775A6A29590103E7761E87561382928B2D7808F73DA41008FCCC
+478A175BBC553E3FE9E06A37A28852B765C5F92205807A7BBF718FF12483B925
+DE9958D443EB8D28CF77D6646E5DF98F7D5DD9B10EE3E167FE00588975FF8029
+378A859684E35D20CA3F121F86BFB0E973D329235613998271A14857C0C12201
+106D1ABBBDD9C40DFD6F99E9A800FB79BFBAB7EBEA45B32E58DB6C76B1894611
+093E6B892605A7B293C8791AF97B6C6D1C9BFF00816F7E5C59D29D84C21CD6D3
+6AE9EF946E9290F6530C53F49F882F775056C5BFFD62A1036765D7A7299FFA10
+BD78C6CFDAFEA1C1FD606B2FEC11ED3A74B2F839F318618D53069BED71A890B1
+5054EE225B2ECD0CA07E8F73A8A8F2E3CBCA5A1E6DB936FA1D498DD9631A3295
+2F87EBEE177ADF97D5275458F1E1920FBEC509578F7BFEDC29F68A69E63543BB
+8266FE9A2A56C17DC478A5B9DADAB96453E69A0F149D7881FE6BDDB85D7BF44A
+660FCBD760F9CE47856B5B8E6A0FAFBE84D7A5DD292E3F749C41D6003B8F503F
+A0EB6C690AA58CF91A0D6932E056BA6D7CAC4B4E3B0170CD062AA25DDECA5B90
+137D19188F212EE769EF7F1907BF1601C41A7A5DACDDD244B815E8CC1082C70A
+55265482C164659793EA5BE2EB42155664915280DD818425AF0BB822408AF74A
+FE716028383E553B0A63461501F0FB824995B45C03CE474C688D9B4E3F250276
+C501CF50EE0415B0BAF1EB6BC7946E1EA41B6DC2A88EAFCE106CD47C7BB55706
+A5690802563C78123E1918C4BE2153827E37711DFAC9F70D99AA17B720A09EAB
+1AF57783630A21C4484DB504358BA0791FD73F5EEA9E5AD7C47222E718536BB6
+5194C99490158DC4D317C757DA88AFF17BE37CC784489C8A1AD497BE0DFD5F78
+188B9763D6D5F86A21A0C04AE8E615D32CB6814C1C047CC76DA8B9A28305B6BE
+D1FC7A6C758271DA8EBC14A5BACAB3250A287F23A92D773052081479423D742E
+873DF31BE668A56047481EDF980B5364AD6C6838CCB5621C82C3F083928D877C
+DDC88B497CBDCE240C1594DF9C74776D65469911FAE2613889FED8DECEBBC905
+D25A3E8A32D3C3E3E7F5301343334FF2D95B7DBB0D81D5C9C1483940DD6AC53A
+34D96E75E9695CEEAF506A99AA6125198445143ECC38A1CEB36A69445B59EB88
+637717B2E4CF70A49B3E0E933892BDCD5118E0615E933164F5D26B9643E53791
+4B458A1F9A46FF0AC252744FD16834FFFFA823AB5647C080734858109885EF0D
+5B27B3DB68888BD155A3816A96BC5420FB8B11064BC62B2C2212D5A8C31FF5C4
+D63AF0CD523B10446B2382AF5922FFF462236905E5BCADAA6F05A2FACE7D8EA3
+B32C2F7A80FEE1DBEE79022F2197041C462D0D9D56958D8B4FE9C5F3830D416A
+4144060B3E76C935E6D666A9AAD10CBDCB005A8303DB42424918C7E22EEEE57A
+1D25A47E2EB4DDF61D5AF897AFF26B06FCF84AAF3901C02A7A7F1F6D7730E228
+21F10EDBC6C5078B0FAABF2EE3863040289CF00732DDA397B525BCC7A013EE50
+BDEFC037D17B47093E58E4671B0CA1DC9C2F78812232C4B9C9833F5C30A5E6E7
+88B5E307669C85CC7447DC2EC31D4FA2A32286C2265DB39AA563178D55B70EB8
+A1E85B47CEDA0FE2566B20946DC534805B8C1F09675A0E7938604667F26A3FEA
+EF02FE81F9D19B6C7C64B22FD43B2EA90F16588FCC3A4B13E9E1CB0AB403D85B
+4012CF350BE2AABB1D47E495E9D6943ACE4F7798BF71F7160B79CC2DFB1B4B4C
+339620E159B5AFFA0B3822F7A459EBAAD210B8FCB1C522AD3CB0996BE7991E4B
+6301220B4FCAA50E8B8DBA8EBDB547579A08ACF96C5EB1047B385ADCE47F199E
+4A3ED80F6DEAFBE6CE9C1FD186EBBE5E7A230A5778A788AEEE5D2E60C29C6BD1
+8EEB28FAF781CF9742EA660D681DF258F7E66AE6497A8A57E790DD7B628EF880
+E37767C878B2DA80023D76F121F82B4A20A1ECC26CB1589EDC2745399997D0D5
+26046E6FCFCC1CE7C8768C7C0A59C881368EFDE50B4388CC62A7FF1976EC67DA
+D31A4D1551670F925148E87D0C4D09DAD6C7302617EB30B5DFF0BE4CDBD2103A
+7B5D82DAA9BC015D27DCCACFE09AB7185BB110BE6D3E4ABC79CB9A7D932361A1
+22017673678CA07F45830483529F0CC126AC955A5F8F924595D2EDE6608E9D59
+EBC6E563F5C3312AA5AEC574293471ABCA800B56087AC248A23D1E3BDD4B0C27
+6C4E7454FE2FD64294BC74E7A6043AB4A530D9DB1E2B50C9F84F0A410C69195D
+D3D7D779C6A164C2B555CF1ACE4A51E74AAB40E95496B4208C5C1F50E46AF6FD
+6ED9B2899F21F29812ACFB15C5898ACE8CA099407C036ED520FB3B59690A85AF
+0EA34C1F3F7E8F3ACC5A5A291E61C0B6E99B5A2F20ECB96D88DD487C331D9A14
+52F4D45C0F89A1D66551F120942BD1315944190D421F8085179B138AA6D17974
+75BD2EBB39C052D990CB06B43CC659D575355C8E95059333FCB4FECC43ECC8C0
+8C3DE8A707ACC8DA2CAEAF9977693D948173A4F348F85E5D1BF6F43DB3EE542F
+E17CD0B9DCC36608A359BD4045A8A1AE1CA878AAEE6A8EB368D655A971DD2F6B
+8099933835FECAB23BD43A4A8572BA1D1DE6352FCE7531409576278D289D7FFE
+6E22ABF4F9655C3F91D7B26BBDCA34EA03F85F653E545692341A3A4836C8AAEA
+119F9D6EE67F019094F076EFEA9DE592394ABE5027A7F60EB5665FCA91AC1F49
+B17A69155831DEDC7B8EE627D405A4026330CC4A9504C8130FB557F267B0A682
+AD1E61F3D86F3DCDF0D15ACD1A8D01F2D4C86009A466BB1787F3F24C992EB48B
+9E7EB50A657F1E201290C4EAF4951C6B1CF8D52D7DEB8DE11A68D4C8342C0DBC
+670543BE70ADA4D11C3FC6DCD0F09156F5A9895368507D240EBB20FBE6770286
+668C8C22E1381F85C895A176A65DD16DBB8E9B352070A3E730B86124CFF89A57
+4027DB7F6FE41B7B2941EE61A16B97F70584CF0949269EF5D74A4B9350378B4A
+EC8DB7E3DD00A9D757BA007061E8D368E8C2A0CA183348B73F62839992CD2233
+ED8DEBF786FF1203E80FA8656B6ADDF8E0F328A9976F8E70158B35C797AC3C8B
+03CCE8215016649237C07139EFBB1C21C26166CF527BCCA5B12603543D6983C5
+B6E56F8BE7C6C25E02CE8A530CCE44625C12CFD7DD7A0795A6A4A691ED519DE2
+CEA7F11B8FE2673721A1C0C3DEAE6B018BCF9922FA5AAAF2131F47E959592408
+A3FB263E531E03CD9AE19911D3D52A854DA973CF2D588379F500E8012407FB2E
+F126D59AE14B4376D380C341D2B071B9D5827FE86DABA6B8ABCBCA5403D4E4B8
+A138F786F7446D0F246E6617F8D68C0E651795A208708A65E245D9D9C4EB2831
+7975C3984E0435ED8CDCCB8D46D73C441254636C453171A190CBBDD84AAC1388
+5B95E3242DF8C14B9CB31B098FA27D7A890B2CA896FC367694EC2BB946E023F6
+C43F0328D0BB414EDA3AC530CD65811F1DDB7CA7FB2F34CFCCC5DF66EBA304B7
+D629AFA3B8E18E57E11A38CA063D4E0BD191E165FE2C4C4DE23D95CE13E27E35
+FEC07B1D56D6661732E1038F52159684FB589379A2AEFA6751669F20FDFBCDBE
+9AD620DFFCB7F4E357916A8C2B81B16BA905A213748CC4B871E75981D061C925
+ABDD0A7CE0647B1737275F7D3B471ACC7DE8837CA285B5197771B0399CF1B724
+A4F254873D56B9CB30E1D92846546C753C5011F0C4DB03E65A1CFF6988831FAD
+C5638014FAF24BA333721CF6E17337B410DE6F6242F789D0BF563AB2F5ACC7EA
+C2A002A0781EB57E3CD88DA55ECDB61220F15F8F96D55AF031E1D66714B02EB1
+39977FF635EAD995C2D117CB32422285CCF08C7586F9DAE27BC066E1293AF458
+EC08D1458F49B2DB4B437806F6830BE94F7C940DBFB4A400836579B85FB603F0
+9C605DAB9BEB94C25F15DB5590304CC495D7C75FAAAAA64B94C55E10675ADBE9
+C573C08BA7E327AB1BE0EB0902F43A70659F40A65981563C1886188CA31C6422
+73EE56226FAF21C7F08C93572EF5EADBD56071145397F7336BC4357F2D618779
+FB5F01D4AAF340F1849C3446AB6E7ED2E0EF7E737B9243FF0F2387D1BE646AC1
+3FF678BDA341204CFBAFCD7EDC385804EC46DCC487FFB06D6DC3D582F84E0ACA
+7FE7CAA9D4DC2D634CDB831304FFA81887BCCA0ECC1B077D2060CC39695E278A
+B740862F44D76B4B03B36B5D3D460F5BD61BF3FC8B7EB88D8A3B1191EC836C29
+AC426828ACF7482AA0FBB6625BB68CDDD33DD5F9929783B3CC95F12FC0628EF9
+613EED20BE12AB8B9C0F4D821067925E44E0A076CA5053947DEEA88B5DAAA4C7
+09B84B0B8C3E91B7895018F7B5FA0A9B66B9A000BFC956523F3DFEEBEB11CFEC
+AA72783A789DEA8EEEFD5260B841B69B282AD0867E0B57EBE7A7249A3D4B1160
+A288D12C84F1AFED3C2E1F99A47843B9711FCE8168ECD715DCA859EC451E338C
+90FC0902F798C344197D2968D4D29742C25CE39C39F644C396B1C591159E48A5
+7504FDB350539F2F804EA6DEA15F53B5BEFE32D8157CDA9816FDB4F8892A9FC0
+625E62396F5D0A0BDB9DEB95D53F6AB3E6E82AA080D96ACE5DF8E07E0CF5C0E8
+09A6EC765265786B80790D72BFCB688A8AE939FF1EA5BDFFEF1E30FD035775B6
+1ECE425DB459E97D18D2979CBA44D6F1E2612F9F13BAD3348F0229550ACB06BF
+D297A41E73AAFCB9616D4EDE62D11708D6A5F43A944A1BFFAF023B946C289CE5
+FCDC0B13AE8E36ED7B4F3A73E8168B3D6141DC572CFF34569ABA4F2D1C17BBA3
+C6E93921B2079280F00A12F1F7485D6D267C1544B2F81CE72EEFDA4E1E7F2D88
+BE36BED6F652FF9FE3914A0ECF1F0C121C11A62DA1A26C57B2064EB29C5D5742
+C530274EF2B013D220E68EDBBD95B5BF9115C423F0194FCC601D92F70C1A202F
+C2EA0C525220DE32B31C1BDAE1DF49621B0C4F146554AC6C9E9592BC6A5DA3F8
+4CF299FA34228271918CAA61F415D796A061BEBF293804BF19698BE687D0FA2D
+303A8F7390BACD640F2AF9F8355E65B0E6238A6A3DB01AF6B45FB9E03337C3AF
+EF5C2EE53C6E215D4A446EFC92526027850B4974257CD8218E817ED417F6FE8E
+830DA78B5F2A9E4573467CB30F7B3AB1EA846AC1F037C973206E452554D08D6F
+4D3FAE1796ED267142F95D68F42445B76EE228DBE4AB9BB0E52214658CD0B9BF
+313B0C57DE75B5304C98792E12E10E66B44166FF982CC43988DC9E766C6BD0AE
+65A02C615E5D8578C507197A9D67790FE0693BC623EF8DDAF29350C0401AE28C
+2B413D4C7871575123B710F411502F539850B195BE112312625603FF79C8C64F
+91256377F7EEDDC2AE4A389BF77710060E66A23BA8C78D038C3E01A329E5F6B2
+F7216EDFEEE2A769FB42628E07501D9F9992B7704B38B60522D756B8236CE1BF
+DDEE2D5811940F65BA7A783622150FF5B2B50F8B574FA3DFA0FCEB9E6DA7F032
+97067CC9FEAC2F160FBA258B647AF8CB4328587FCB0CF553A37532A1FE945DA8
+93F598739943219C5B15C3C3EEE23C367C4ED4044CD7A36065A19E6920D6175A
+2D452D64C409C95C43837BC68366BAEE78FE9F0591F246779CFD15645B25B85D
+DD9A650F19C95803CEF0E1A0F8B9F529F3D1680E73ECDD9953B86C6377D7ED15
+18FFD5A09596F287DC9DB37E8B7EC402E8232C4056A314DE0AAC295C68460A24
+2FAD527CAF898ADE28726C7037EFA49E9D0E2921452D7DD0293E46B665CE05C1
+B715FB200A73F66D292BE489BEDE4880D8039D07B7FFDB93F8CD1407D3EDFC38
+388DAC0EAC5A57BA3D890485689AE1AC360D039F9637A74E645A851308B1A56F
+C1A0A11EA077DC1366D6AD3263D608F748D4551CAAD81DA675EE48948B79C6B6
+A1E51ED1EF1586893DDDFCC2A9FE4DE8B88042D6CB2F5EB5806503277D24CAD1
+FD887342196038D5E43E8F934F505368B49261BEBE94A0F5B8EAE4B2DBEF74C3
+9792A7901E77DC87E27C7BC387C4905651C0594DF304CD2E3C88003CF440C3C0
+0C824DED3E03076F8C40347EE9E936BBB7CF7BFDA719FE2D07946049605DE17C
+4C9153C912A470BEB4A89B615B9A6812B89E3FDC2F3D4EEF584284B7EE7133CB
+B238102D0F42C8EF749D9A0F520389117C8FB071A62BEB91F605A79FAAFA69F4
+E9F648DC66D97BD3436D5D1B60E4A3B90F362EFBDC897D627E35EE3A42E9EF80
+483825BE627171A3D4F7A233782A301EBBE63279712356CB55EE4EDA7DD37E36
+2A604D4C9E5BA8D7E33291FA827DEF19AB281704E1B961B44B7B09770955DA8A
+16866051A0118A75415079AC4071050F3973066C74A7B7E1DA63E6115E972760
+7B768738D2A68C4C91A6A1AAA51902B5D2278AE139F34999A41B52002343BA54
+E603B3CAA7DBFBA159FAA365B6E99F77184F9836D8E09503A2B13B30AC9A5F38
+429ABEB6D248CE10277EE94CC5BCBCDF14E4782E33A4FC62F2E10D004F924817
+EC418ACC2AAE2A038305D11B10DFFDA1C520BF3EAF74B261A4A576FD42283944
+E8337A8BB14818EB07834AA3F325F3208243A7E63CDC17E023F765260D6E639F
+3B3435C2831350E00D42886DD5F1AD9F27C9833802F371F2F3754583E4EE0E4F
+44A207912E0F1EA954CFC46B1049BD839DE2D5CBE89A63E7155098ABA7A11A21
+C437B7EB1F9DCC0C835E32A21BD0801D55DF76C7B5EA69D05DB551942CC88D56
+C40EB18559008249122A7CCB34958FBB652F4AC0861D3F876355AA6991967611
+83060CA69699B55291248CB1552F7FE5FFD3ED3588F355244F92E9739B19D63D
+602A626353B9FF981D753C4FAD459D4901398D6A0C90B1359BDA2B2415F907DE
+930BA7E6BE2965FB6F30B5F4A9E01B593165D449F4584AC74E3CE0F9992E5CC6
+CF0B0A29645FAB553EC921BA8299C3F9574F6D574924E73A459F9880D2380981
+48D8FBDF8C69E2C04255E5C703FF49FA0DA501C600790241BA80B054C9A9EE95
+0021FA24545488FE13A43BC525AC54A3C7174E70FE614B501011726762C363BC
+FB7FB7442E49C24EFC2776A62E614610B4C9AC1634083F24F6B1763BBCDC9B78
+88165636237F6F576BA18276F4C516D3DF2B5BBA86A5D1D95E4B3A1F1B08ACD4
+A95D3D60EBCC72D17915C79BF4B01B3F22E2906C7FBAFBE052E45847E636BA33
+C375282E10A3ED322D2A4448277DC6E753D7BAB4A3BB68A83F5EDB438409B1AF
+254DC0388192D25EBEF4C11C94F69D0B055DF9A0928485ACFF321B016C48DFBB
+99479AA5B10A36C45D821B6E1A32603BB16241323A75E2F0FC4259799C188E79
+4752A4B0E79D7E1FC942A9036CB5E2EA31347807FF0148D297F0798B15961C5A
+C5D69E92AE905E6DEA46847B77ACF8B58B4BE53607C3E7489A23B766878ED29C
+2A60BE2983FBC442335369E84B18AA354FFFA76CFD0DEEAB35805C5B6DDB7187
+C55124BFBE8AA0EF1BA8F2E1D19874665603C62308987889E2A27E6FC65A1D3A
+953CA2AD9077EBD0A2CE4A836C4B934606A5866F5E80ADE38B2E15F75DD580F7
+67034C65FCC20710D873EC9E156A6ADAD0C0C1C8F1376C3CABDD560B9DD5C88E
+DD4B0A9408582BC50A82994625A58C85A4A0865731C1EC6D12A17DC592B8FC13
+ABB9727AECE05640CC78C67C18670AE84AB9826E78AA5D24FE1E5DF2E1B5B5D0
+89ED95CE5FE021F106F9F7F721D30E748A36EB2816689CCFD666E99687DDBA73
+00652F852D59CF21F116562D29CAB6B6E6CF1190D0747680D20DB694E2805E47
+1DEE41F3A1867B146A5D8790D26375B7927DE102EDCD2588B814B3C71F6FC973
+7C5862035DAEE63F6FDB3278BA56CA4B83B6B36FFB533EE78E0F4BE91A1DE3F3
+F646C10C8ED0010C24603C3C338670B78DC72936E2E482ED6B4930436773D943
+1402260681597CDC3E082E1A9ADB9862C9340F331373E525D1417192EB92A61F
+143DCE192A9B43728535D2ED22B8C35D38DB5EB4F7103134FA1EEFEAE10BEDF3
+EBF65BC6D8AF10E3121D0559714DCDAF35D4B4D9355B3F58063F9FBF2867761B
+62E3C2669DB2F46131988C74224BFA6BF9499422DC700A660298BF587814AE98
+B14214DED8F280071DDA88BA67304F2F30937164E5B9C88C394D228E7BD436FB
+FBF420E8C4EFF5213669B8637B07CF7F8522FB6E5144CF5764253B1902712A5E
+07A2BA96CF9931343E9F0F41480D04A5262C48FBB228DF773BDA28C12339D43C
+4590FD1064986DB45BB32C67A6EC3BE5ACDA7814ABD545CD24CB4DC80A3B5847
+15257C80A7C0FE9540DF3B793C269B394DBA6F83F2A93FC7083F4F12D172CE17
+C5E0D3011DB8D476BA067D88FC7938B00CB2EB0A70C549F0946A7B5703889E51
+01DAA95D6E8EF127435D57B7E91EED9B2A259A470785B7FC7A0D4144899CC22D
+BCAD693E3F0783BDD11480233F55185B55D2687B8B870903CD2F57EC9BBC654F
+3FA31D5DABA51237B515B69D4955A1A698E1577BFF019C1AE01CAF46A9E8037C
+FF515C339473E00FF5A8FCCA1F145705B557A1AB7C9D031FC05251C5776C0F90
+D2A0FCE4F436618277069D9925B1CFA806804A5229FAC4BBB1C66DD2139680F7
+F39F93F6C500DC4C468B7D2A188942D64038EEA643AA3677DE8378006D7C2981
+E7F2E79D902DBA42805D88976368CE854A90D98470715864028679259CFFCE81
+83E4EC995959805DA2D16C39212B94CEA7DA858BE11AD53FC2C21AC2A53E773C
+A8A59727CD6A42F3D8C0943CE9D1297799FAD33D3D87BF8EA3495EC627189B44
+D26178D298CD581804B58844A9A50FD67AF268055A2A68BBA4D23868E271DF79
+4C0A9DF4BD8F5F10D193A3BC1EC30CD710E059F6AC35ED92433BF0036BCE632B
+9965661A1F5914231443773BF3F54111984A0A8DCB78356A521BB1EE3716F64C
+A84C4E46EEF3029C95AFF9C2793D03DE72A066F15D1828E8C264FE043D004E5C
+E573FA9BBC12B00AE467746E8B3A85FD60209A8DCDE0DED0212A62A7FA21E39A
+80B4787F0EC4E94BBF6030B11A9C11B755E4176B0875203FB64E339A69303FB7
+6758B7812A26D8AB6F3BEA548EE9181C9C041C054486877D57125A9A8F9B2F7B
+B3394D2D4F5FD0047AF88D4AB0C5E3319F9FFDB1FB3C1389C54057618BD2724D
+8952586290EE3E381C04EA12C4B0F3A19EA6A103356AE1FA77CF360067912131
+16626EF95D11E02D742598B93DEEBF44DB062E9D98FE3D82230E0F8005AD0842
+86DC28696FE0CF34ED8CD4CBAB304B6CB6BB0A7D4CC57CA8426031E0EFC7FAF7
+3CB8CED97A3DAE8AB8882035F5529504747776CB9572AD6F972A90ABD1E274CD
+6A9B55B1D761C3E9638983E82F477A384978659C0E16CB2E3F48ECEEF95BA69B
+51E776F0DE1A8CC197C454EADC36D72A800140A2D7244DD2F3FB72562B8939ED
+88C15B007F723784AFFED8477F1F42B9C02F3CE29418402DFDAAAFB37264E1FD
+7C263A150DB1361D39F1C11691F0963CC08BDCEC61F1E2AA2A2309CA27748513
+B6D7BA70C11933C9F53F5A0E45228F8BA265D2AB0B0DB77C2B038D931A1E1B37
+C9DEEA0ADF571F60DDFCBC3770FD8A71D69E58357583BE7A3BA8B89641A27E8D
+43FC961DDFD79A7FC5944C68659D60D194413D77C67B958DEE6B92C64B32D2BA
+456ED7A7258262EFBFA59309958BC37C34681CD7608CE7E3E30DA20E51E9E331
+D574734F35999E3FA0765BC3F1143EFF6BE1857AE5C1FC2C50DD76F30FE7C98D
+D491DD4AA98565042242997B405F199985DFA76F6DA8EA585E67420D2FE83F0E
+F4EA2958DC11F39C8CADF7B5466127A65263C6863732425CA50DD973D8508E6F
+CD254E64DEA75530711B82AC694B2D6681513A14CA5E513B9AB5BC7F541028C5
+431B73AD11E0016DA011B13A40C33E0791B6984286F3583DFA78D92A06886847
+47AD0EF50708D8BF5C1C394AD535AE72CE222608A0D11814EE2673B1222CCFB1
+50F821AD884F7C308F954457440780FF8DD59C2888C72A6070E5DB6147013F18
+75648A37ABF2B800BD49520BB7D4632AB654140F7E8E620BFB9E6385030AF265
+DCEE0A7F0BF9E6DCEF378FC764F113783B936C2145E620614F42148DCD6FDE2F
+C98FCC22ADA0BB59D882656534E6FD18BAEBBFBE2DB8398E7C9AF764A90B6B82
+8B8300D073D613CB2F19D0FC1ED87F7E3BA729A00810C23FC210864E750649D7
+466EB5E29473703E1B652DDD34E6C336982645FD99846FB61D472AF0EC7959D2
+A535FF0FEA16EC362268B28302179B7A2EA890FE93E953FFE56B8A50B983B29F
+E587B4A69C3FCAC848D6476D53CF514F4BC36C4C71FD4108BC85B9E8A6D4D274
+98368D4D076DCC03D256EA8EA76DF45E9AFC7B2B47B4E06DC416CC2CE02CBDAC
+B3B0861C4B304CA1D925DA5A369FB03E2E3865E4B9D8A1D8A01492874D1A14BE
+563C5833C0BEFB21ACD2AA4F7C14BA6B848C7326745A355B518313084AA6B5DB
+60AC188783892869D4E88B34DBB70DA343262E8A9301BC9DD8689DA9BE0ED828
+3D744071675BEB3504C7BC78B32C7144A43C657E9A8AE6E3316075EAFAD3A600
+4390214C19306535A35F77F4FA69A44977710022D4345E640B0CEC7ACDB4F297
+760138D144C01514C134615295A3B87C145A90790AF9A238ED3D06AC336608B0
+8EFC8F1251E28B5EEA553FEC9F4A38BA695833B16DDB796254DCC54DB2593055
+D6678D205A966514293FA7EDE3F028FAC216E696125ECE2013106FBC4008D02B
+3E62672761310D48829CB0FE55BF2FB1BA3E381BD5D480A23DD28A32AAE1BF1B
+5D8DC41D3C092C2813684C2A34FDE78EA2454CFD2E7FC9AE886982DF6FFFA12C
+9828784E035FD3A6B338ABC99CDEA5D2AF2AAC54374C066815F9C7511E207CDF
+E17EB1280F4E2A82EDD5F3599692EA79C2AB530D0B5091ACD9D85F18070738C0
+B12FC75F18EFDC84BE504FA57072CDA37E89206C72E181B10E37A596E29853BD
+8FA3B9346F4D58A9ACDDEF9AB59478573D596BBA3618780B49E464E5DAC664A7
+DB0CD23F1E8C4F30103FA42729567BCB3EF9BFF456E860FF36771231B3819DCE
+3E58DF4F3C8C342EB75E1E35881429E8F02F515DD272AA0184BD54A3694252D3
+4D6E7A7C884B1D3AD12DC76612B4A820871922571F05C8100103504EC1E2EB1C
+DE0491D9F2CE69E3BA120BF82B5B0792238370E26E976E3C030BBE7B7C3BC6AE
+95C4EFA8B112CCFF336CD402F79B3A4292F72024511E952436E15CC39E42939C
+3CE79AA40C48624F60710C72BD98D9F7303422A06F6681B822A05CF0D53CB2D4
+886E4D939997E0B3B133C2C2DFDE1036B86856C0903702C20D583B9C33EDE90A
+B1DC466C8A42D7EF13C0AE9943D8BB40146962C2BD1DBC442032B1F7A8A4AF07
+81266D0AD883AE6EB630BEE885EDA31EAAF12D20715A296937DA2C5E01409FE6
+92C622D4466AF51EE4A14318882CD2178061B3B4B3CFE6F2FF5175BF0904B2A4
+756247A731E3D22A5923E12A82CCA4F68E9B3C34995FC8B1A5CA123D8FC4849A
+D6287F8569CCCEAD9ADCB9A5FE074B51D98B76365839ADD00DC92C449344DC1A
+C0B40F87B70BFF7176C9B1CB36289E2DDB776A9CA65155CBDBCE9D1F69EE43D1
+3A049D7C9A9308D30AE80D9B580C4C9C399C5338EA6A6656D604216DE022A5A6
+06D56D8B7186DD81BCEB4F1D06A9C3ED7C98778E7F7B20576953ABD820F4CA78
+4316C7AA88AE34DFDBFEFFC4FD44FD52653A9446FD2AB458AABEA6FC654AB5EE
+FC432CB879FB9EB1F3AAA45B3B5FCB6C33865291133EB3AC6EDC20A664D25550
+186D76C86EEC67DCEC2EB847444ED5FBCD41EEA85C3598577AA192E02DEA1B92
+02E4E366EA826E2BCA13180F1DE65ACE3FCBADAA8A1CD985988596EE38773F09
+4A02744C83EE6F7181A1C0B910E5CE26DD0F8129E8C0CFBCAE0D4BE3093FD93E
+49C29D4100D7E781FB9B1D2C9B5AA2A7D122D0372CF8186925191BA99B674B96
+4C2313558EF26037F114533AC23F72822175A866D98528E057034499C62A0459
+4E13554CD6537F798B9761FC097EA3F4A924E4E6CF1037A4F5BB323CD64EF290
+0A615EBF082F87D5DB41BC6B9004DF497758D6BEA0EF74F551A600105491C809
+D0047FC373E4E9DD77AB79065E69D79511C352E0342C0C61AE1CEACDF1AE1DD5
+E8F7C049763A5DCF736ED1FF8A6429B49846D489A833E41694184BD9D24890FE
+783145521CCC54363CEC57D84E94BABA61B64E5DEA8DC06BED69AB1104EAD3F9
+BA630090AFA11A2B0CC51341D2691D6C4456847FC3B07A84FC33C77113198887
+82F5E9D0480AA236DC9DEA125F657AB6C81BF35A649873BC73AF20D77D0F3C26
+890E3C678547F630EFC01E206782608A94A9F765707231AAA6360DCE6D240035
+8E90E60C0E7C7D55369A150E2154FCC640A030914D7C928A81BA
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -2794,27 +2445,17 @@
 /Encoding 256 array
 0 1 255 {1 index exch /.notdef put} for
 dup 12 /fi put
-dup 14 /ffi put
-dup 45 /hyphen put
 dup 46 /period put
 dup 49 /one put
 dup 50 /two put
 dup 51 /three put
 dup 52 /four put
 dup 53 /five put
-dup 54 /six put
-dup 55 /seven put
 dup 65 /A put
 dup 68 /D put
-dup 69 /E put
 dup 70 /F put
 dup 71 /G put
-dup 72 /H put
-dup 75 /K put
-dup 77 /M put
-dup 78 /N put
 dup 79 /O put
-dup 80 /P put
 dup 83 /S put
 dup 84 /T put
 dup 97 /a put
@@ -2822,17 +2463,13 @@
 dup 99 /c put
 dup 100 /d put
 dup 101 /e put
-dup 102 /f put
 dup 103 /g put
-dup 104 /h put
 dup 105 /i put
-dup 106 /j put
 dup 107 /k put
 dup 108 /l put
 dup 109 /m put
 dup 110 /n put
 dup 111 /o put
-dup 112 /p put
 dup 114 /r put
 dup 115 /s put
 dup 116 /t put
@@ -2870,279 +2507,202 @@
 0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
 6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
 E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B
-61A563A2673932C2045833FAA35DB22ADE12102335D36BEEC9D5B0E0CC51613F
-0561B0B802BB1E1111E959C7745653516A296E671784C8F9E06B892846BA33E3
-8AAE46D5DD487E56A90079CA7DA18D25F3681DD0131C46E14DCDF512FC14D9AC
-7341D5046C96E98C17C37FF5841CD42609A279E8E3D4698F925E037E82E12B02
-1B0B763596B1655E53AB42EBE4B24C3F2AD371F10BA0F922AE573BBB163DD66E
-89F2C4E2B1A15300BB08D9818E77F0AB16910AA98FFE60E4A8C7048962318896
-14FC51AC3AF1497ED9F43B8DA7FA23DE5DD815FBF20E1D9DE2223F4CBCDD0068
-884D90CF371C1A2709F44B556CDB7CB1A77C52F20DFD64D7F70A328B8C3D6107
-1868A4CE3AA3077101B3A36C552BA0F270EAE2638FF076060C4F37550A944C8B
-95B4EC1B9A7380E3A66208382AA3BA671B1E88E9AD54CC91B60FDA9109D30B51
-21D35D4755521650099378AECF718D9C52E3CFF47410574094AD902E89688D20
-129A629713E087DF8DD4B02241AB3B1541899171BC12C8AD659ACD0120F4830E
-FED86917C5CEFF9ADFD18C0FE8D4D6EC398CC60728D7C950215F7843FD99CB48
-4614FFAF54066F94B31AA0863E9934CE7C2EA2FB1CE63889E1526A93C1BCBF9F
-25BB7EC9D9675B2F7E4F671B5A17BF82CC947D20F662D0B48B056643CFE19206
-513A9FAD9A9EFFBE5E67FECDC681A6CEDCECFD566DD63D83EA001C76B681675F
-5E4400D758C423D376E2C160558324E097D62EC96E3A6CE9F402ED6B4B7ED5A5
-D8B764216BC9181802C0C0857483036192B3123723667CCBA5FD9457ED7EBEB5
-F93210ABB0BB624ADB3AC453F31C68317DBDA92F6F61640C711AA6C3AD5C2468
-B3257271C0FEFF3726CE5FEB881D996024C4E030BCCDAE670E9E6759C193D44C
-E02070CB55DE012322BF86A8D12C297099974D431D391601E2048AC31ED452AB
-98B4843FD5DD4244726E81B17F00D205E02A0EBAE822C323CE6872B45D735B8B
-8C334C58991EA7E57C686C4C2B16C21F0F952E0666AF999C90CF95FEDFB9752E
-BDD05251E26D027F423144945E786853C9BBF2A194F3440F5D87935F9E83CE14
-30E3E37A287ACA2BC2708A9BD95BC5E912B2F2A621A109633D9702DEED9C9EC6
-D1597C5E676D2D16E9493A2F844111216CECAE91F6C10C8A043E6C91020CCA5B
-FC71BDD1F773898882F63256D5372F6AA8E337D2E5EA68A14967970D215C8530
-4ACF0F6251627590154C61E3C44CC224376327709BAC1ED4DCAA4A65894CE3D5
-59CA000BF23A3BB89DDBC63F9DC14A3EA95A9F818679DC7E902C68F8CAE9E037
-28922060B8315E2E1C6335F9768DB4D55E3A90A7179AF65322691E027C5C1CC9
-0A887B19F9F316A935049BFADF5A85B454F4F1355F2B3CF94EA94BFA669E3838
-989D65D90AA1DA57DDA0F9ED33760E52C720C1214CCFC9B42C2184A045718DAD
-D506AE98E1D88CD4A69FC873831350B8DDDBA6B9E8EB51C53056C2DFB799D835
-7C68591875202613C59ED8B3F7EF5B1110074569B4215256CF805AD524585F57
-A04027FB3F47D63DAB57B0BEC59AD2DB0F8C6FF6FA866A12EBBB787CEC01D9D0
-37F75FA34E1BAA27183AF85C13DCC2617E7B6FF5A5A0C578162E7818097C7906
-43468790ABF883898728D3C6670A29A16D1BBFE4ABFD88BB3714C81975ED8C16
-EBE26F230C89EE345185FDA39726ECBF48AB4FC966A7A04A9F886D077E93AD54
-7927BD8F581C95550B4076F0F024EDA854BB1AD128B6991DDAB98F0C7061739F
-F5B0E2DB726CB1014C8FD93B2EC56539712649E6DBC75A1045ACE60AA4027DC2
-9D17F5E56AE4A59F5F18001E7133F539CA09EBBF8EC968D20A3ADA7741F89050
-7FA457857B8AC622A5248756F172011E601626A30895615C6025B760421603B8
-D2E70D6F385AA2D036829B29743AD33FE56FC0EBB35ACE5F786944DCC95F540B
-8C0D1E200F6777FDC0A90E78AB55FE18798393BB9F51545D31B5BF00300AAFF6
-5B59E551C8C69BFE0BCF6EB6A8CFA3C81783F9A26A3F87D8CE4406BC72770BAC
-01951A60196C91F5D614571F46CA969E03A06FB76B69274CCA6DB36649EDFD51
-A91A12AFFEB478E8CC1853E04A97251A46F82107FF53EE8DE220A62F3CB78366
-9A9786935BFF1B6F68E3B14C2380B48FC26B0E043783161702A449C1BD19932D
-47645477DC84A31317F09C9D58BB49C5E1A597B5B2661493348D5BA1E4329A5A
-A151998D9EA4419B4E1BDCFA55F2D95806BB802141A13F806CEB93CCD8F0685F
-69170569F1B7C2EAE90F2F610DA86304CD85B9AE5A110FE235EC0F531F8A8DF0
-71FD32C11FA5574BDEF4BC4EE5DF944F7408638E1ECB63763AD385C7140A29A9
-4CE1FFA2AFED0C2D0ACEE8BE8E68DA657E4AB533F8DC919538935FDF283A94CD
-A3FF2A71A143731294F1FFCE545FB15612120A193F182829C15100E545A927F9
-03ECB17FD4DC9745EAE806A832B48D75EA017A1196CE4975B1310080CDEB6F2D
-88D60599FE50FA30AAA85CBF8A77027953F4E931F7F101CEEF8C888361262B22
-9A796EADC9B393F10BE9F835460364BD59E318FA82CC14AF605F5F0C841A2F67
-829E351B14FB4F57B9F4A1EC8B5C201233EA9D90F4007E75A2622626144B00C6
-BC01DA4D64272BFCEC70B5B65CAD61535CEEEEDA1F9290470A9027B2295DB46B
-D840CEEE3B1A68B1CF3BD4765ED003F0C47EF037CD797602EA4FACE9963FC590
-3D17CCBED7AF3730A094AE4D85081525D483D1BAF4F01B6A92904EACC56BD384
-1BE8369FB7105203B974B08A8A33782B0AB6E67088DB0C5914B81AFE779F7727
-95EA367518F169F2CCEE12F8871C05CC5C5F200A8335BA967B5B5CBBBF38815E
-A1F6C5E713B95EB4F8327D2193EF117D8673456F8B7230DCEFEBA494595C9EBE
-D3A0E237809F969B489D85ACDEA6A99EBA0E5BB9C79C1C85597223D45D710980
-6DF2ABE4C0137817DFE71838E23F4AAA65C613291ADF1A13DE22A214E079ABF6
-4C9CA80A3C0E4749FF0B7F325DA7E212CE9D9BD68B21C39F2DD12D394171627E
-BDF2A28A8309D0A5B8F35605176BF60B646265F21108935CA1F8B4F3A6618220
-9DAF021272FC7311EBC47EE352F884F4CC4ABF0724E4ABF697D0494A416563A4
-F8F89CBD9B8BA3A268B08654172D14A4ECB2A91E286A3F1CB0C356C402275119
-CDC5079F9849E3D7DCA25D55365241B8D721F1559DDEA9741F80FA7489BCF520
-386ADBD8ADB2DB6EEB33CA0FDD9A066269ED6A0D48168BA6750154993DCB9145
-AC9E6104B9644505ACAA29F15050C1ACCA53E543F2620298CE252A8AA4D5A02C
-6F18F62C7FD48BD336FBBE42310812D712C6913880463DC0E7E6ED1B72705AAA
-7B531CEE4B782F220CEBE9DC90F91295D3C0EF7EB6D891B256F4B45F22604D5F
-CE6646826C5B3B56A6AB9FC0641946ED5ED61094679C829B9FB4E83F1ACC3CC9
-4075E13165B247ED18F6EC4BDBBB58757B0452DE5702ECBEB0715A41CB109022
-9F9B10C5FFDFBCF391D5AC309AA6361EA199D35BE968A872EF7E2555173E5342
-022498AB5AEAB181AA8B090C389060D8B09A6CC07F8410237800CA4B76BF7443
-2EB77D90C4BDEE39FAB40CBF6F973D1CF103EFBA9584A3E6C1610D3387C6106F
-A9B7C398629CD189D882EB07A3BC046502C82CE80BAEA5D98FEBDD85137682E2
-49F1F25FAD223D458C00B5A2049A508A6393112364078A75D031D7A753E56AA0
-74B35F538DC57776DC88B7F540FB7CF9231D71B80B7A0587CB91B6785BD176E5
-3F4117C7B0EB443A04A80EEAB10B93440AA69FA7182A55A9B76CD111E6E8E64C
-3E9A9EE21E82714688427E621E6F980B94A836DE248C052AC6D30D418E6CB785
-C19E5D97C2B0681FDC97ACD120423BADA07433B93BBC9662352610825B69B97E
-596A08BB190B50790398C9209891C418CC3AE3C5066158B852C5AA0E2136D282
-23200BF70C14135B6F0962FD732655930990E2B7647834EC1646C4B6DE12827A
-D70F4AF310174F6AD11DBE2D32D4C9D655E65AEEB06A1014357FBC8AFE6FA5D4
-886A8BA7FD6BE6C76EC41FB68FDC99919D70BCF19E5A39722D00CEDF231DC63A
-399CE887473CB2AF1F446C1DA837D177D73CFCCE7FC13451DF735835F7E5546D
-6B6D318830C707F22CFD84F3C6F55D68AF33F75A9A4F2CD2603E9216E30B2949
-1C2E01BAD8F944EB94506A0FCC5539B800A104797B55D65AAFCB4EE443EC21A6
-F91630F483D1E59B436B6BD82D453BABA1097230FB204DE5F903BCDFF63C02B4
-5DF9FA790129A565A3ECC1CDD17846EB9361ADBC69CB2BD6701E1E30C13EEA4D
-01C51337013EDC6B154AA64913DAE7212EFC0C5D226F9F85908B919EBA27231F
-863683819ADCC9EEB4F92DD707B48668337B0053652227DFE1957B4095B35A8F
-B7853FF6EDD9185CB64BC38798B4538566416C308CEFE19C98BAF00795D393F4
-A947C1737A8BDCCC3BC0ED9E2D444DE263116CA5D123F966180A9AA7AFDD9AFC
-46D0D02FC6A1E2D78BFDB1BA45939DCAC4E5FBE7813007C3365D25DF2E1F0477
-6A717DF3899A2242D9D15B5140F19C4CDB1F9C7EC58BCB455126D6CE58C78371
-5FFC16C48C6F935573BF1FA63C4FD9F8620CFE3BC7E70167A4F0725D1879F7A3
-14B89AA468C14F40AABE020A1DB2C38F09864D2E852A7EDCD637EEFF920A428D
-DC73392D3E6BA3DEAA8AB3F0BD6635AA1254AF53A588A81A6960489DCB2876C1
-1ED94458540133CF16CA8CBAECFC9FB929DEB721E4A7CF806168C9EA0C523D35
-159D4DD8BC39BC416758399A5E324039572F57B4B188B511B579612BE8068E3A
-E7374A6D42F191F2229787363799FD510015C0E013F6F0961C5E656A5D03F5D2
-2D28C978A5811BC82E49BA6A57A7390EBCC2EAF2452C7D46A82A478DE1B968AF
-3082D7A44540EFC555B6DC97D5EFF5769E46381DF8B225830F02AB30993E4CC7
-145C04AE2E8E7148A50AA08DB10DA8663CF4A7840C817EC5E9F8E1DDABA25DE8
-24128B83B71B480FEE06FB5F7D360E4ED6C4D772B7B080025BF9FB7CFBFDF2C1
-ECA2066BC16935646500BB97FA42D89A740187D95EC70811DB76DB82E9D5F8FF
-0E140AC413F07F2EEB49E1A8912FFE8AF50F18FD1C9BDC2EB84078CF54E92679
-B7BCBDCEBD8C914B4AC30F86F12492B8249CE4612ACA6076926AC3C789E2B579
-1E9F9132107DC87927FDE981D3128F1182AB329DE82A6BC4DFF2248A410A6263
-803A05F0FBAD1EA14DD99996D7CB9964B81B7B504AFEBDEEDBF2B504B474AB0B
-0871CAD376BDB0533D5DF7D40D2F2DF78B40CC6033BAC676B09FEBDE354197AF
-DDA7D3240A5D9544C402419C4609C6FEB1FA67DE68D835833B5BDE62814D8BD7
-AB8D76E5D3795B2CE4D86EB72655CE6EF4113E9F6FFBE13024BA6DA1292E47C3
-2E1FD246404A219C82EDDF2D64BDEF288526E5F0A07090F501BAE98C6F089FD1
-92D921A3222A376CAA1F92A7FD413EA6CE563013F68E8B34F69ED445E23254A5
-057F2455475B0A92646CF874249DB46F0D2D0001C729782B4D01C23D3F4CA097
-891205EB2E44BA08E1223A5B905746B3AEFA20D16DC49D3A2A973546B32FB6BC
-FF708A554B94D0D012A82BC0D621B042CF22AA77B5B80691BB17CEB14B34CA7B
-1F2A9D5A08740912C0FDDFF9B676D78B44D6A75AF5BCBFA0FEB60636FA82F634
-B843E8C7D53A088500CC2F79B533DC45935E46116BC0B81A0A4DB12DFF2CBB33
-879E1BB94CE7F36E122F527ADE2A2BD23434A94992B181A9256CD43C39518BC2
-BD7246230F81A788F101ABE9D68A635B5ED081220D950FEF8340939D95F7596F
-67F2263C73A5B5A94F6CA4925ED40F8E7E583E2E4B3F21DC4898CD7E5CEDFB0E
-65E9181B02473EEE5B0FB777077E9A5D8A58D6D314B535B7CF69C050337D813E
-EB713428EF426BD35DC7E25392E1B13D49E92CF4DE13F2F686CCE8E45F14C2CC
-0DD469B542DC16A4D63A3E8917BAF74A6B17B0524CD637F26DE89847FB03261E
-E157A477AEFFD4C5EAA63BF613E04993E5E06582B3E0A2877AE5AF3F556B0AFE
-CA3C667A6F70C7C441FE3B3D867E79FC6485A2298267485CA6744149175A2A62
-B30619CFF3CFA2C0C9F575784D34175E46D80351E0B282082F5A8876E9908D87
-62CC9FCAF336C10A8557673C541941EB2D4013ED21A5E0D70E2A6942DE94FD42
-C66AC928EECDDBEB1C8E1C3DBC87CC204547F80414F61F69144A00DD2D7BE195
-BCD3CBD2B7FC4735259237EB0B243E422C14F1666E4FD67B949A5F18DA24ECEE
-157A464B01CAFF4D8149FFFDDCFFA7D4748BED7DC16AC1E950D5D7EDA79D3C5B
-28AAB577618A48E7B367E9DD1F2F33CE107BAAE00CDF0D12A8DA557E8E267DB4
-4A642ADE6558403E2CE13568EF250C018FFD0937DF9DA6516398F48B471D5C7E
-521868517B34E81F16D2F992CB4BC9983DF9AA670C9DFC4C0F2DA3FC0A6BB8FE
-F992C0780512F82083C1BF4CF601F6D0E492C5D8E402BCDFA24DAD4D1AF902FB
-8AC667BF765BA02F036C7633EF495AF0E35C12DE7B9E031478337AD6F65027AF
-2F1F0C115818BE7E8CD3487621B74C77231BBDD873D6CA01B2612BCFEA59B005
-A5CD74209CFEEBA697C6400702CAF067DB65A6BF1D38370E341F52A9ACDA87D5
-CF1EE3BF78F0C555241D43584F6ED92C2B27D5023E68432BBFE7E972F2404401
-6CEDFBAA150AE84B5CE12D936B0E3048DA950DA9886880B797116B8D041CD97E
-A33B28CF39E977DCD5B060657636672D2F684ACCDCAFE5A443C1B324871C62E5
-B0A647C0E96B5E95396E2B2AD6E914A0873A0CAE556BBA906FF2961E0BA4040B
-20845D6D977BE110724F36624C07B0B3EFD919CFE569C471402256CF9DBD65B1
-A1858B8108794157F11906C58EFB5E0FA55083881410C8011FACBAFF851257DB
-856CD6EAB49DE8E672632A321FB2CFE294485524B34E6AC000F80A285B3F6DEC
-CCB59B0AAE1272E69DCA044BF49D997D38E2E159F03C253700F030C764781385
-8C4C1AEF067019D50FC8683A15BFC0B5C6B47CF49AEE7336F6B9FCD13EE2CFDE
-38EFAD7CA071432356655738FEF3F09FB21332B1E712D80884DC03C7E6429E71
-DBFCABE411112F5E45CAA9C7E06597E8FA793134E86230F8F6BFE876FFFCDA90
-11D86E28AABD34DBD3A90B343A8220E8340DC76EB96DAE856DE464DBA9F06516
-65E3441B8159FB1F25E6E0186C5FB35EA58761632B766742C6224234E05B3D4C
-B8F0F84EA4766EC708CB75D6AFAC41E64E1F0C76BB8C0FE4A5D2C6E8153B2AC5
-AF8170E82AE8E2390334AB8DFEC1A9A8A677233D96B341349711839187467959
-82F4B0442C4C39753EF6AF7A27239A665BAED85439518E98D9578500CDB3134B
-2BE5638F86C8118169B9CB8B301C33BC62C1DB167424401DDFEA15A70B11AE49
-DD9FC3677BB55C894F689DCAAC7EC66B4983C66510B9AB0FC30FBC0124A389EE
-4EE79A41938DD47B73A9862F92E804BCBE32590BEB487458B2DEDD83E9BF24E1
-3458AEDCBF202718B886C1D61CB8E034E7FA95D19925D4B3B63969D4F3E11923
-83747C4338DAFBC389DB7A5C52BDC25AE34C240B58F2D2678AFE5C6052A0E0AD
-51ADFC4B15492AD9060DAEB24DDD8B73315A17DE4F03CC17B95014E74683A375
-D4864CD3EAE5F2AB3BDB2BF7B0A2A7DB07ADC88AE63B528AA5286ECCA8A8E567
-CCA540251DB6A23F814DA79071956425B58A58745073A588604178B2DD1DF9EA
-0A6B97E8941CC96D515491532E2DD56496BA17931C1A3B0F11527029A940BD77
-2DD1580F6F82096FB766AAB27B0DAAA4395FC2DE3CD753A1341DF09CECDC7E35
-FD93E4C6CED141CA0D0EECD4082183D53A30FFA098E0A365890091CF00A54936
-495377E86A36BD3E5BF2E176B0208AE61732BF6E03ECBA8489B90D45458C6C17
-08340758605E9FCAFE7CC748512A78E47B36F20C79BA6EF572C4A2E4467731AB
-8340F338966807E9619E6D2130F050DE3F132CC4DBC57AF4A297ED553A11CC66
-0B85ACBFF40FE6363EC3F9F647544D9BC0BBD2EA890F48424F2F0C44C68BEC74
-24B19B6F198E192E7A381217DDC8642A5FDC2063986D2173E2D169FB130C6DCC
-521E23A7DB4CA08775987D2F58F748A03A43BBB4CF345B89171EEE0B7218635C
-CBE5EDDE42C532FB2A0CC6B4FC65F5B436AE690274AC97E8C1C3E82A64BFBCAA
-299ACD3E4F62ED6ACBCB7210810787241279FB90AE6E3E3B894993CE82736DC4
-2B4E10C97E1D557EBE25ABCAFCDB5C990D880321DB014431A52F36FEFA77970C
-3308074B679597943D1073CD1CB4138315CB0A74A014926DA36A888A1EFFEDA4
-999E5B25B1A5FE63CB5B1F55324876C6E7450C1713AFEDA559D4ED155A7FA909
-BF6F6B30270C93B23559B7EDD07FD7792031C536FF74E2FA32433FC2BDF74127
-62323A82F35EF707D37423B911F37E948F2174DF4D3FE1F8B787B9E896635F0A
-58595E77DE1B1D91520E8FFEA4F10488E50A840065BA633D155AAA746CF5FD23
-50D6754AE123A4B2AC4246CC1CF35EF0F82D9D46E18C33D9A6AA1E9E7FE1A74E
-A5FF30F870D916B47F9778AA7AB02EC4CB1AFE370466B8B718490AD0AF532617
-AE64A363A617E7E47BF48FAF88A5B1D9298ABA81926155DFE273746A52F3494D
-CD41A286A50E6AC254D2A6433DDFD9684916C8B25DECFB5A7D4B94D685DA425D
-C06136E9828E058F1C713B2D24A3710CE2233A20A9CB8EED0D3FC4C579D56033
-99A366A840282D9154ACA10707D8841DD4F5AF4990A26276DC085B8EC91A02EC
-F11A14AD8D700323AA2C8899B48554CC9E6F5AE0BDF2ABD466D6C53123AC706E
-53A96C7EF316773D87501FFB78BBF203A608051E6ABBCDD22E18B63DEFDBC5DF
-AF8241366BA0E01D7BBDFE684A9C9457942A0CE0C87EAA3788BD1092D1A9CEED
-1C03A4DF4D2925E28F002A5E7E4981867E449F5729087BA7E94C3BE0BCFFF147
-BDA227CC6FE66C28A02CFA09167F89BFF514684CB5CAE0EA6BB45C93532CD279
-E86DBBAB031DBEDC63E843EDCD2D16257865054FC97CD8F57B6792A5EEB5149C
-3AEF8D7F3D54B85401E588363F02583D1FCB81CFC8B45757AE9F78F3EAAD0EF2
-C5B73A50270AA183C1F5FBC27E0C1143DF39E972E7F7FC2C66517484317A9CCA
-1A39C7AC070094DAD681F2DCC3DDE8E5E0686D476F2B6640D6C10987F1F6EB34
-CC877FAA1F9AB3A6637D5C4D284615786A1094D06C931AEF485300872BF65533
-1BDDC21E560559550C96043FE3BFD9ABAC8B01F2CE08F55770113303BA2233AE
-A81CA5B4A4442D1B9DD01F0BEE7FA42F0FCD748C184AE8E0F6D228A5B3E6A667
-670BCFE3C7437E14C5A6B5B63CFDE1B26448998C011C47A3C59E53A5034B72AE
-63B265FC370F0C758366C356268E0B734B9370D4ACA7EA711E8B4B994055A6A6
-29CC62C34BDF0FD35AA78E667DE05646BB36BD57854C49BD69BFECEC5A7FD9EF
-05D0F7AD8619661E5D35C7071A690708C321171DA120E8495F5E8F36C13938E8
-BC63CA5144354AD6049DA467008514F69D470DA497C825CD0FC8B246C78EE747
-4B8602523D898F6FA637F8AA3DB3D8D2E27E7D06672075DA8135B90E976986EE
-F242A5490DCB536686C00FA826C027140F7F5D473B00DFA9761CE4D18E1879F2
-4BBD6A475FA560F5EC85240CE0D76299B9A40B03C51F21916DFFECEDE4567D41
-E188B89B310B1E33A6EA1D095F630074488F59A3BCC5450F39F655530E1A5B07
-39EA0FB3019245889E7BA9817F41EEBA22DC9B3095139981BD71BB874EBC01D0
-D52D1103EC5262A1FD6D2505E218CE130B0031A8FE0EA498309BB0474FA5A528
-DB00DA7BC41D90F2A66EB5668B00BA789AE15728A4D813F5F85182F6D16B2409
-197B40078371F9E6A6D3A4C771994FC4DF2503C7948B4E97DD0478E342152A2F
-5A91B2B72D04B6B05DF7B7F697A3127CB63988BB0ABC3827E2244021BC0F4405
-BB3DA3C12A471CB31F8151A66ED53C6AE4274B2D9A3C1CF88F8A0AB86B1BD3B6
-55CF316DD2EFD3EB36638DDAE9851C52ADDD8DEAA877CDD790A03042CC968099
-2AF7E1F0946B9FCE82FCB8C0D98FBAA25BB494E6F962069A6044BA933DEF10C0
-79F95FD66D129F7C2ACD578A490061BEB3CD4B1100ACDD96EE10A53C8DB1BCC2
-5DBB7AD4799DB01B0265B23C981FC9165F2FBE8C801E9A07F9040F6D6F58E098
-793A9C84E0B941F35BB74C82B6DF2E5D9702E898543876946449387738C67580
-B8D8CB8495AF951F84CD56982E8E2C55A2FC338E495C00F91785D118599D64AC
-488D7DBDB9E407517FFD3BDDCC075F7A641CABF8368CA6BFB788E00B4CFF0183
-6793F04601E214849C7AF34D2FDDB256671929B2BF0EE8B0E46383228BC3B87D
-AB15530FCC2121E9F891F74858457E789734D12F0909E1D21F5C3044CDB3F6ED
-1CA155D5765E2070DAB10DDEEAD9AAACF766A75582C1C20B9AD5ADFCF2D1E0B7
-7662B56B04D73F007F06869F10FBDD78E843D7BF741AA5A73ABDC393479FEAE7
-DAFB70005C81D387B960394AF016B12A8E73048D06A7A83039C3D53D43CA4A3D
-B1C0290A8502E3FE10D692428E2B5B5C3880457633D9B30DC69241D3162599CB
-0635C9D64C10E049AF2A04CBA28B0650FC356B78D666C041BEEA72A774D482EC
-ECD19AA25BA2ABBD41DF3FD1187B7D6867DCA8FBF2D60E728B48771E779F6CBB
-E6F4D35752FA4F0396C4167841DCBD1B0161A5BA019C9BB4CE4B4B010730CC20
-A92E2840CE301820C95F28E46E5FC4FE05C3BB23AE5965F010E48EACC2537C12
-D5521E5333ED7F3730442D654420F7F1B0F8B86CB4C3413208C43D91C357572F
-4FFF2890BBAE66679FE48D8EF935A3E50A0A2EE17B4DEAE2EA58A792E1FE887E
-16AED34F268BD50FD2A621301E3B4F22231FB1EF60A4BE64879E1F3348907217
-336AE7E609EC24C64276F61AE8146556A7E741AA198B297872364AD079CDDF38
-F99E76DF4EFAB0CEC030895562AA315CE8F3778609819E06284A26887FE0BF44
-440AA9530B1347290CE791377BC6D184D7FD6598201086BE3A2F4E9454D50AE5
-02B982D6E9DFEE244D794321D6CA46CD5D2BCBF5C40C63D958AA8A62A039E676
-FE7A6F57BEAF5F57F0E33BCF5745834D020CB4BEC82C4E901260261846A86534
-9BCF2196AE379880C40BFD58827CA049656F469FF2D4D5130CE0F976BECF2E1A
-08DB3C133B90DC8C378B2B2B621286D364941652A84C719E31744B44819B76C6
-C6B390B21BBE1064312D29661C46B3737B792B850526F6D26BB3CA39B831B3E5
-3780CB4524F948C7EC33A8E4499EA70C5947E97AD61329FD6A6C00719E602B35
-D565F0DAF6B0554AC168225C06C2DA0C1B71A51A9EF3E35A31E0CAE31248E893
-420E46A0EB13CAEDC853D85D82D5A69E3618BA2EB415FDBFD033788C368855DF
-0D86921FF800060D4EE3A8FC7C88A61F30FD2794822939AB8DB26DF937954906
-63D675638FAA01BB92AF2F98B28DCA1D336022A216927A6454D68041EC003338
-35AFD8E970E89A7B56B28D14F29AB0B937F7D6DE1235047DBA2FC59905F02BFA
-7146009A13814BD713DC78D64420BD3A90F791FDB5DA162B0D04BAFCA1ED375C
-659A5D383C8EE938653BCEB3E0CC80C72BFFBD46E4F16ADCCDAC6D36F28296F3
-5111917A11CE8B7A861B1E8548BE3049B8994D7B1C2222371772B42186731A5E
-0ADF67701B0923B87095CADF7033204D5F5241D677F017F7097C4DBEEC51BC8F
-CEE3197B733836B5CEB957BBB122F393A9EADDA051A26F5BBC0903F9273963BE
-CC6DDF021188A929660219D5F6E67EBB5AA342437D836685D894FA8F44E2C6FB
-F692720BC754D41B86467B68BF04E7723EF32BCBDE82F37824450CB9B3BE9296
-428EC5FFAD4FB49B74B57E25611B04DCFC1B980A617F6C514CF7DA0F66D6347F
-756AE39418BC2BDCBB0281BE4F46C2EFFDC1517948F7108937703B298B584168
-81C61A67A0094853C79A4064C5B012C5F41BAC8C29EBCFDDE5033C890EF4E158
-CB6CDF90AE33C088EEA96D944FA8AE5B850EEA2562AF5C5258D291025B8B8AE3
-EABEEADCD5F2D25ABB924BA87B4CCD99E8CF09FA18D613A375E9F7E032FCFFF5
-B51AB280A79139C3B2BA28BA2D089289FD9691EBA0AFA50C0EA8CCE00585386B
-3AD6CA6C612BF16472BAE5F1EA2F52EF923870E91BEBE59DCB7843F24D7E56EB
-D2936B10490F24A80ED7EB39A65B1681AA5EEC490C9FE444683C0C9A10D57DD5
-E2B17B90CF6BE85A86D783833814B56E7B9106C545F80A3284C3D3279100C0F8
-DEFAC90BB71695017377D5AD6918E1C74796F4B699AD5E74A52C07D8DAE2ADA9
-DF7429C8D8E9CCA2588DD2DF3855DAAF52C3152D49C2828FEC6C650200D6FA33
-E718FCCE5873325C9CFC4FAAD36302D07D3EB38C04A2
+61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7
+92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C
+EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F
+43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453
+FCD9A4F194FA648F9FC0971734BB69CB73439CB0DD021D44A7C11BF295E81733
+4DFBA460FF3D654F9FB337E99E6D66FBA87A817EB9CA1536C84833870E3626DA
+55D48DE850D3E6F6B29DA0E7C9D681283586F208DB8D58042E3A7CE55BE84822
+C98237911453E479EAB65AFEBA3F61A763B40E74535BE56C9D8D06DDF9441741
+5C9D9D917439368736619717FAB4F06E2C329AE0BA411F3FD355B1DE1D32145D
+39243D0590A90F1C4EC2C438FD92399C24EE8AC85E4D8C211613CE4DDA344F53
+1C85F8E759760BCF5D5152D45E91FAD6A3E7B3FE9BB701611E70ED5E18C5897C
+A59F354BD2ECF30C6D99EE733C0835161A710B181D772545B8A68FBF977CA7D4
+BF0CC70BF7FFB1F2BE159A252D77E79AD37BF642D570A744863FD8EA70589089
+0AC5BC2F0A068C7366C4017673C78E33FB53B8081AB6EC8060C4CB183263D089
+BFBFBA49BBD0F06550A7B03B34CD661E06B39B463393DED3950EA82B2B9117E6
+2DC7C9D8C4A7034BD03C227CB1A7D4DE3F9034B06B40F2FB4803A5F88B613ECA
+38DBDB90E754F6CB19C6F754F5C4CB7D3DDEE324443B48B3ABD6A9F817962B53
+94233CC3988A111B9A3A1D52293F09EA311F49295263C32B7485767C530CC233
+6E86EB972DB27D52C187787E77A2A64B0FFA30DA13B859A86D6541C9150BDC2F
+F97F498371BAEDB7B887A8C6479AECBDAD3753FD6EE28B2773482AFDBF0E023F
+C011260362040B3CA1B5087C474203D5969DF66DA3B3207DE619C17762B43E6C
+85C91FB8489CDEE8BC223C4281DDCA5F7DA80BD5C12D4A1EBB4434464C35695B
+6D740E500E4D2C76A5A122CFED79D059792315347DC7AF1347F5A01B15EA7476
+356F91248AB53FB92DB9DA8CCC5D4C8AFAF498E47FA2B9FD31DDD4C6EFA34936
+646F5FB93AA399CAE8B2DA1826A24F89930C9E2433989E056EAB7239227DFCB7
+E860CDA7287BDDE9FCEA54E155A2C6C4739D7EA31B8C55A9DD737F2069B8CD0B
+2ECA2C16F58BA578DFD36CB2660A182DA3C241B82920E73F6F1A1F81CADD7262
+FA3D6C491193BC4C7EE0C09F389FF828AA7585F9B7FAFA718CFE9DF6679D980E
+AAC6131940026E3C2297E197FB8DB2193DACA382972E7A12E5114CAB420555BE
+B5F3B0C91E24FD7FC0C998BF31306C49F3798B6B61B84D28932C527F8D160E92
+EE7FDF0A08835B785DBB272705C7711D0526B20FB55FBF16569670D47D34102A
+4B50F5047BA9EEC74FA572ACC5FEA851C8AF108C0646C84B3CDFC5FF4D98BD99
+C4D90DE0156FA1C40A60FC93B308D358ED423CF7DC02267D5A14A84F59778E92
+035B0126F3AABBAD0CB1B3E49E428840FF2A0C9A9C603BA986A64AAA8F13C159
+CAD2C0FF8F41149675F4CAB6B9DFF880A74CD302EF867A8BC1C56AFC83C54B6E
+8090871B7B35123622BE2F265D850E617B20FE9CCCB5A060F81432EA912EEE34
+B6AA5A00352C7A09B5D18290CB33172255507A75F69E05AED767EA56242D2D2E
+A4A973C4FDA8FD7920CC894C17489D3A781727A6EFF0DC57B2A615B2BE7F3F78
+E33A0AC82CF092645AACE6A00281CC53C51023F449F80FEF503D9423932CA834
+7261E703FC6483D1905E145A7693EE6B932E4592A98C6A4A4F99427A3D1B1D69
+A42297294DE6EA315F4C8D01ED14872FB20FE58A762C08D9779A13103DF64BEA
+DCA6D2E5202F759F88C0D400FAC342B8D4BDFA274121946DAA3CB827BCD45FC8
+159A2A52C43A34F21E03291A0036414D047FDE32975396A20F0D1CCAB827030F
+6669C0CF028C964BAC7626455533E1EB84EEA45A6A8D877507518536B16E8ECD
+C16CE73C424F7D0BABFA475A70D5AB4F2402BD06450958CBB37F5916CCC2AC2F
+30259276CD70D341427B5481C389D81E32F088356F9CF28687EA7D6373A46C70
+E5F8692D02339376A0AA060D943837CFCE35742123C3191FF0A843CD85BCB56D
+8332034AD81F26EAD67A4ED2E9EDAE20C1477A8AC61252572282744C3B5DEBEE
+263D19615A3A9B64F82383F7F09989D5AD8A963AA40B4565883D4398B911A0F2
+699053B0542F3FA56A0CBB10C1DC1F35BF56C39FA1E4CCCC553030CC35EADC4B
+184C5E5CFB4304137799D818E5AD13C81D71E969743AB39C0978059A22D1E1B3
+1154193AC0974058AD2EFCFEAB9C0A46C4E2A0DACAB02F5C8CACFFBFD2C0ACC2
+16C1D97798BC6E35E8ACB9F107798BDF8BA178393325584C6AFD9C20DDEA83BC
+CB5FD57CDCC01113DBFE169281BF00DEF675FD431E72A00C2C0E1C3D40386FC7
+DF830F6CB0A9B1C2B0B954461C2237D68A241CAD8D7FC61455AE3473E3885DB4
+02F49824526595481734CFB0164BA0A2F260499DA9BBE07262D325E381989F31
+0E9E8A4A26AB90A7B9362BD13B26F650F274250FFF5392F646984363FAC6C5B5
+0447D46E254C8E7B4093E55C1DE9A9CD2F557D3C17587089048D3D5729B08B0D
+8DBDA6A144B2A07F7BB637C56CC6E07E621CAE4AC1F741947CCD682B416CE02A
+60504F929046D51526E1A2859BAD7B43346D3AA6FC0FF37A33169B2148F08FFF
+65DBF3D9EBA28066896F7C4A33A509319DAA76C284FFF36EA7E3F84C1764F8D8
+088075741703E5C9350F8C7F8736CAC081B4EF7403D4B56599CDF09A55094546
+08155F72BE2B0EB004C08D74014C17278E8A857C6AAE7B3C6557D47FC732E9D1
+2F28443174D91FADFDDAA498D80E55C2AF55B523418E4BC082C519B05B950B80
+CE1C244EAA7CCA0AE94B02046E06A79A926147B09527A45CF66A717A48342F79
+73F6BEAE59AFAA255A7770F4383E8280F0B424AA0D2B13A76EBFD1F1A0141949
+9219F7492273E9AC4621391CB8C9DB363BC685E39EC991ACA4BBC5BFCC947F8E
+67F49CD30D0151E75AA7BD4F2ADEC3A99FDF643912FA34103F247822DC99DE21
+E95D9327E13C562BAB4FF0152B2F867D8E1F9F80C187ED70E92EE7C1A6B6E800
+C92D7FF45409CACE85E1B85A8233EF2757A507158BBBA8F5F6D9C08AB4EE39F3
+3A1C1A41F853EDD28375E40285979C657A76F55BB471E052694B73DA88909925
+90CEB4AFD1AFA5D2CFACFD9B7DFA57A43CA1FAD790036CC8C6793979EB738E89
+EB48EAFB788A6EB7AE930999C423B297275D9C03B94DFFEB7D35E66BA23B7DA7
+FAAF161DD832214B4A8CE8E67F8FCA510FC0D1E721EF860986297209419ECC37
+1633D71A0A7951DB035F2970DF34391E656DEE6E39C521464D65367EDB4E6E40
+833D5761F8536FC78AB901E79B95FAE6D271A58D9CBF4FFB68649369B63E0BCF
+1493C7FAADC881204CD6360E821FB0AA6B443C18FE40A66000E6448A4CCCE832
+D70E3FFFE2DBF25945D3C531F1EE9444749B83A9598B5F6A8624A0D0D98DBE60
+411DB32F69FE254FCFAC6500BA8BCD732940D2F1799122B49616BA2344033BA3
+9D0D1A62BAC08BF2E3FDEFCB229692933D4021DADD0147F5FD73EA5E0016D9EF
+10B1CC65A78DBF0F04A991EA6F41E2B9837EC22CD1A609C5A59D7C71BB1D0B31
+1F78CF79B56316F3A910EEB65027C5A37413A6089321A2DCED890463E40DEC84
+3075CE02FCFB0C889E402593B50FBBA1BAE0EBB99B58F57F4893A4C83A4D7A17
+30FCFF845B1E7D628F5DBC912DE723B3353E68566536D23406C2055E2F25B9FC
+7D9C341604087F10F0492045A771592DFEB5A17976276B31CE4B1AED2F3C7648
+0E2C6E3B39BF4BEF969E13531C22793EFC361F9426E4F03F31002AB37A10D303
+8688364035D130284767AF9BF736BA5FD99C7C70161731C07D2B79828590DC63
+4E53A8D773DBEB3B6241331200CEE1C2D01D5D3E3831FB9EC18AE5F51F1C1FC4
+41594AE8B709F89F91C573439BD3B3D1EA2339CD7F38E93A1B6ECF59697B35A8
+770403E6168B3BFDC724C551884956B2C63DED02386B240871D2C77A9E136684
+367C8DF6979FFAF13BA7227FF4D174769BDB6285EE42B631D4E76FA0DC395850
+528EFF94CAEFA3DD8608F1723489C3C2D620FCB1FD1D580B5BAF1BB687BEAF34
+F6EB1677B7C197628D7937BAD4105E8AF2D25998623A645E717B8917D1DFE6D7
+8010AF082E418CE9E05FFA744B614149AA8C3CA3CC8414E98FB9AF315ED834B3
+50CB750EDB9F0E94C6B08DDADE1B9926373252AEFE6300842BBD4717507633AD
+BB187A12A50AAFF437B9E25FCF3AE8AA3DB9B2C67473F97C077AE05A9689B416
+23DB7FF02E09D92E7AEDF5EB5FB9B9A874B92836327973E35A94BFC3559AD81A
+45DC96955B97C2A4913598880F19D2E5B6755FE6DBFA99E5FC0F1E3938B157F1
+239F6895E7A4F6E4DBF912A73768BB0FD703A5D1C480B6ED775A655CBB03EBCA
+85271DB561C7F32BBB72816533386A35648CBDC880E906D0F26B82750F8A910C
+9406E7B73D1727D6BDE001C2E086F46298D4B4DC1EAF9948B616435299EBB0BF
+5FE97AD3A49D0316FD0A2CCA340EF8C65D153486189989D4DB2B750567893E4E
+C73B0914EECE7E6E6D3AA27637CD2DD923D44C6ECDB3D5C1952C622818204B37
+13110FB974B5A36CBA0D1DD3B30D9EA2F11FDD36BA948C611BFAEFA3189D6973
+372A460170D8A232E1F11C2020652F226CE129AEE5B7C1CBCA4D923CD6A821B9
+1CD18C5593D9783D4D2AEBC3368DBC0440F5FA0DD84D20FCE9874247874EAC7B
+E8A30E5E4AF291BA5D2A482AE839D69A1F4BCCF66D930FD47433BD75E9401F18
+FA796A870D1F786AB0CC91C9B8D637C023F32DA1B583D98CD017DF6D9EEAD2F2
+7C2080E355DFE5E0BD5C2AEF06A57B6CF44F8C2B8D840CE99B994F5B9D5A9487
+3D36D3A5D567ED70185E1D2F3EA7115AD88C3E53B4E9A5FA598324CA163C15FA
+7910F2F7C98BD6801C827919FF807A27D34135F2F6567DA32440A143B4FAB5A7
+6B5A5DAFF65B31CF45C8ABD4E6D9ED018BF99E4C65C00676EEFF59E2BBA541BE
+6B8D4D68CCBCA3E88335964C74F7D4EEE19B7AC8B1F80AE104406D0B7B1CB27D
+C1F8C1E4579D6EFB0138E61B69F9B7B034CFCD699EDCAE2E429EDB876BC73A0D
+C2D3B2CFE2DFED91F6F401CAEA43794A4B18C4CD49BBA541E8F6BD39ADF1AC44
+FFA730C1FD8BE4423244B0086DC1A2C48AF68AC3210300358C37B0DD094072EA
+8D4825E86C8ACAD7101447506CEB7AE5FE9E716F92D866F58C8998F313E3579F
+990F49626F2484682919C85EF48856D619EF2AFE9285147E290DB85E8877311A
+01D281AB78ED867C879D02571134E2A079B6ED5BC1181736D2EB5E4C7243A570
+F72A5B0D08A9D5A219EB67F06F2AA52E4183923768305CF7D30EE17DD8AB78F9
+470B27789FC0CDCAAF92E4D93A5714D13157F6697939979B9DB92250581DC40B
+FA6340CA011B8BBB5D50D2C7C8A5E0CE8D3B668DE80EED4FBB712EB0E54BA471
+D641F84E86AC563D56471A98F2A6846EADDAB03D1850798FBAAA60CC4E7F17F3
+A2DA997B619A1B03020718194B5F48AC5D556901B38E361E1DA6A806D724CA8F
+38CD28721376C36747DA057350275952C0972726A08BDC0C303E48023F611234
+3908D247AB93E93E12C54DA1F2B570D569A48008410FCEF4CF08478C37693CEE
+E7093BAD71D833AE6B379B6A6BE158E61FEA043C555EC6E7B7CE35CBBACE5B0F
+004465EF3DFDCE0C9D519D8C15DB1F3EBAA9EE27CDFD25F2175A66CE48371239
+A2BAB6059A469FD64D80FDE60BEA6CA0AAB301F5C2C023EF5DE5759C0D406EC1
+FF067DAD5C5461CBF7AFF084FA2598954B03A5B6BFE72ED07CFF083209DC7FEB
+7EE26B0AD706156B4F7BDD038AEECBA6EA02A73497F90D243645CBD58901E743
+5FAACD41FFE2B143B0355584019AFDB667D004A240F55FBF496F1C5714B9CA85
+C9ED59CA9D584628895620866802AE4EDB2F11BA4FAAC0789128DC186BC5A0A8
+77E8E8304F7EBB693C44B55908E6D3E63DB3823161BCE22134E9D61064E19455
+7C36E667CA6FDD3C1D8659BDC6E15C1E39A0F2D56471947E6AEC14E3061A08CD
+39A1C578FC5416BA234055E47C86E0B58F543293ED8A3AA61465F305A504CB26
+69E010E2D91CEA3AF3139FDA3BD212FC3446D63845382D0D047891F87F113DBF
+D34BC6E24E645A14A6A90510B94EB526B2C695A7DB30277835CC4ABEDA136E3B
+A321CE35260789458E39CCBA32DB29B17FAE7CCD5BB2FFBFCB40001469D2A11E
+8DA225DB7A003CE59B9EEF75C67C32E396AFFF58EC2D98908E7AF69F301479BC
+88BFC4F5009FD8DBB7BC82B28C26A09E730D632A47B3B7C3D87806BC08416EC0
+907B2BD632B2DDC682D0C35A5BE08335463B1C05DDFD5842D362B025A685233E
+6DD7D81D7685190D29D774BF20044E7937A770DC9BAACB64131603FE83BED99B
+4F0BF05CB818A86A7EBF01241EB6A4E81ACE37DDA50550A820EB5015EE603964
+EC03875EA4D0B8E295F3967860255FDF223114DEC4475E98DCF697EFBC9A5438
+66015EE40112DE8A7C2AF0EB0B544EC245A851EC9E792C499BB7C4A3230E11A0
+DCB00926C6AE9759840C4B19C98E13366F8F43AE15984464A0EA826228802A61
+9C9AEBA998CADD7DE1C66E87E4D9B137E1951320576955867B03B7E8B049E014
+369C98D548C42E0627BC3932B0DA09B2BB098AD170B461350370BDA985E9297D
+EBA727D5F3EC7DBC3EFFC2BF1E9C69370D6C6DEB677F06E7C903EA429C932D64
+6A1C0914C84F626F778E659C36F882D33E3B79E23E12D0DBA05C1FB852B9D5E2
+8AC4163EF694EC98B63A539AB1999EFCFF36268EF0ED1ABB505E7C18CCD55E71
+7F7E351DFF37E60BF70E4A95CA8448777A83E1A604E965CC20AD1FBFF63B0A2C
+F4B88B782EEEB926230B9373E1F93604C40031734FCFF643112F94FCF3393225
+C0810CBDA0205A1730A84FCE15F596D4DBEF2DB310FB783444BFB1D2AC24C05A
+819A33F1F4C370FB18538A56CE2A9C69739457C38DC2CB1DD1156DF600E34037
+3EBD428B019FB759763997AB506E8ADB9F6AEA7FB461728F6E08FD876871E502
+99583ACC04D8D61FBA52D410F11DDD79685814797898C1A87BD4935718E3921F
+D25C4516DC54DBF4BE7375D4EE19BA0BD38C406B47A15556587A39B5A0BBBAE9
+20FD2385F689A68E20050CACB379691FA27F0201B3B8C28317E998495AEAF6D2
+60A1D0BAC9622BF083BFC0EC5F2340E11D3A254EE5CCB2B1737D88E963359049
+3D5980076BA56B7835D2E6D8A54D3EA4C3BC3C3B2581AC007BFCF2E9CC968590
+32D33880563518047F4BF0B2E1B1E191293E67925EA985CBA7D092D5441193C3
+2ECEE44CE0D3E9CF0EA0E9E84295709C2B42058C7B98EE1D8F55E7AC221E55C4
+5A30286F0AB36A579DE09BC922A09F4C844A8478AEAABBC297DF74CC657EF19E
+1E155FBB8C1BF606BA3741F330D460D50DC16C69EBB14D79C9ABB52FCB74087E
+79A34AC63DBDC34B14DC7A8EB3C2613D375988E3FBBF1929DF250756E04C3E18
+6D71BF762AD00D1D8478B036F934D05B6E54E78F69560925BC788A3CD1E584C4
+772B6B2BF62B791932596F22E3A0F773CB90506682563B4ADEF68A6CB4199F81
+D798E823FCEBEFAB0FAF8BB078C93683982FE0EDDDDD638CD3CDA26415ABB094
+5C64CA161C2211C563C7151A734BDF279BF70CF663CF72908558807A389FDF11
+0819A058CA155CE575143A5FF6C746289442EE1AE4FB4A3E279AE2CAF0F4DDD3
+31978DC373443ED13CAA24F601511CA40B9478643F260E3DFB698D7FC6E5E2C3
+FDEE685E02010D6E3D07AAAA0FF09453B165A058B563F5EC87D39E0FAA4EFF24
+05C2F4DFFCB11E033E14E14005A5938B8A73A9A01CE40B609680EF08117F6F84
+FDD5436B07D4C4313AE62CC5B27126A21257EA0A852B4B82C9A76A91154D3F67
+5EC32C951B345CE78382932993037E44956B3835C950B79F2D131132982444A7
+80C84410AEFB692A0EDA716C3A2AD6EEF1295A8CB91CB4D28292D50F49E926F1
+16563281ED257F14B6D9FB68E8B2923F86DAB74B3F30C69925F9BCFCF8DDAB20
+8EC5F83C81E5E3CBAA7DBEF856DFEC13F122E8E5A13FFC5B63CCDAF44665D3C5
+BEAE7DE18B2E6E72CA2C0ED37744EA6BD3CEE224DCF17BDC857F03A2C329034B
+062B41A7D36EC99FF527EA7669C5C433D813BF3AD97AE88BE351F1DA824991AF
+18FA0558AD1D375315065E5CB029992F031751F30510B43DBA3AC76AA1EB76A9
+C2210A666AFFDDCE8B722E7934DFDD97086A08900375A8CAEB7733E86F9699B0
+55A72E8C23F7A9A8697E9BE0E9200CBDADE2C36E0EE85C1020569E0FBA620750
+4AAE6283A63222BBD45A657B144E2917D2B0E6030B08FD2AFFA9A8D79DFA5B23
+7C417D5EE959F790E91736F7130719EB0054CAB72667C5453415583D8485A147
+7EA42D82E7D3902CDD9763470B858084FD53E707CE7B36FF12E13E6011745AA5
+FC081F7E40705FC77FA5B7E291EEA5F5DF915182F374791AFB0CD19CFC7BB600
+0A1FFE7123793C3E8C1472717C751B201C207C3F66155B0CD508BE9DE2D7C33B
+C3B05709BF76AEF245C3ECD99B5D0B7D5CB97DF148C697D07B0132ED94A1D7BF
+5B28A7185A710E52412BD10E3A40326E4BA5080B6285D660CCE24CEB2080CD78
+FAAB0557EEF7AB02F1C164BA6E1F3BF914E7206FE04AF01440488680D29983D6
+47028D5E7196848E3AC203245B2B650CD4EC5E8A32973B596D9995ABA0586B24
+752C46BEABD2462BAECBE2BDAFFB32CE850706EB4D423C5B789EAD934B8AD82D
+D12B6F99A55BB558BC1AD2FEDC1082B7F75ECBD36B5E51735547
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -3176,7 +2736,6 @@
 dup 58 /period put
 dup 59 /comma put
 dup 66 /B put
-dup 67 /C put
 dup 68 /D put
 dup 69 /E put
 dup 72 /H put
@@ -3185,21 +2744,16 @@
 dup 79 /O put
 dup 80 /P put
 dup 81 /Q put
-dup 82 /R put
-dup 88 /X put
 dup 98 /b put
 dup 99 /c put
-dup 101 /e put
 dup 105 /i put
 dup 107 /k put
 dup 108 /l put
 dup 110 /n put
 dup 111 /o put
 dup 114 /r put
-dup 115 /s put
 dup 117 /u put
 dup 118 /v put
-dup 122 /z put
 readonly def
 /FontBBox{-32 -250 1048 750}readonly def
 currentdict end
@@ -3224,187 +2778,143 @@
 74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2
 3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8
 47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19
-AFC27E4A7E07D09FB08355F6EA74E530B0743143F2A871732D62D80F35B19FD2
-C7FDF08105847F13D50934419AC647CBA71DF74F4531DC02BBDA22AEEA3FBBBB
-407E0ACC52BDC60D01A29407CC4F93EB8BF6D4813E9BA858D54F38918AC82720
-4956D50291F0546E50FCAFA6DBD0099123F5ECD4AB338DB310DB4CAE11337A89
-8ED99B6F483940C97544F888EAF0CBEB11094A13C073D0061808662A04A82BA0
-AD35E8782F854AF66C20C0FEF18D0ECDD1646321B93D327E53D88CA0E825FA95
-05AA57BD70E52EA0396B20ECDCB589689BC5EE0D3592A8DBD05AEB79ABE812D0
-3E46E3579EA7AADDE4791AC5B8AA565B8EE18AE15E42AC7AF099559AEE3BD2F9
-513940449AA4DE15BA4B10D4F05F44C9BE7AB2FE29F0B227B36A0F9E8252E69C
-DE135451FDAEB52B8AE11A8B331DA9E103128C5E514AD8A9C9FAECA16B4E9489
-B3C8E6D3983EC23006B39BA01E87579C671F9532E23584B7E33A8CC11B1D0AD2
-01939D97A84CB33FA6097F17A630C5C5F5BA63E6F819700A13CEE8F10924F0AF
-4A5CC405DC5308191F9E2EBF074CFAA720E242C497537FDD628E5249BB85A708
-281590D560A5BA8ECE8EB168E7DD6BDEE07101ACD4149F6332060817B3F1785C
-04BAF230BC9AE077F2196695D50D740B308F76F3A468826A718E3F8AD3770CB2
-F7F1D410BE2E74C953D13C699D7BAF8A7AE71FA0FC074F652E62E985FB1ADEE6
-18DDEC4F01FC3768BDCAFE2D62BCAB9C1365C6C27A819C5FD400B3FF858963E1
-919D9997CA721FDBDFB7D9B13061F4D8C4F73ACA8F0C5524AE3F23383D4E71DF
-6EDC3203DDE466D23024CD887F95E728F49FF8D064346080B4D1CBEA9C60EBCF
-BF9C2DB03F6678FECEBE86D51CEDBC84D574A03F96DD9E1B35A147C38CDD9209
-8DC645430634DF91BFD61520566D8055836C9BD8A747C64123A686ACDA3E1C98
-3AA6C3ECAEF4731A5F221D117C6956880AAFCABB1F155330F5717871D45AE094
-AAC55038CD0EC3E13B7B62E9EA7FCCFD5001363252140AE250A2D7569F00438F
-C84E7D6795E1440EE418009883503D0F02ADEAAB40A85A5D1D8593ED8D2E8D3A
-734DD7CB333A10F5E2E662F28E7E1BDEF297350C3C0115932A078F66BFDACCDE
-20C40928D487103167E7A8BE9811AF38B5643511107F6CE354755D31FF7FFF05
-30D8682871F78E120AE2A29ABEA76406767E01FE478383CA6B6C387385FD58A7
-8800F6EA3B583F6D4049C480242A8AD59049F09645F998DA33DAC8B47B81F6A7
-626A205BF0489081CF31627A3FF35963A9965BDEF737EE6AC1E9D790FD9BA033
-92CE1018EF4E616C64563845CE5FA88B65CC1AE51356BF859F4BD609349C989B
-D3C9A2A0690F2EC8DD022EDF03E69CC035A1786BBB385B60664222BB4E967516
-8D1F18A6F0CEF8FA4C32FA0930D28213A0EA85293F25D3F196507BC0338DD5DC
-2E10C0CF4010CB96CFC9B5EAFB13A0B6B6C77BF72AFCEC915A4382BA10FB42BD
-4CACB7597E2637AFFE6C0A46C4F7074DEAE4518676A5327177205EE4F6C1BEE7
-ABE5C53175DD52242F0EBA6959B6EBE2482B82CF882BD745AFC4C5DAF3DEB0C8
-8CBEF6E24240467C2664FFD2085A2BE7403BDFC2F95E8BB0830CDDE88AD24670
-F1E57245B8BF1E0E793475581F8B889733353E895B3064A76D7C4EF2B90C3B05
-8723AF14131FFD1B0C4E98A6CA16BF5698D58DD487EFF23C33249211A8CACBC1
-2B005D7176A1BFAE9BF628AAE9D369F25B5040A8828117CD74294C09A7EC4630
-809ED075853B81B60846122E0CF0494588F269A7BAF29C4EA73DAC39692B32C4
-6D743CE2A650CE90B0FF576EF4C565E8AB4901B580FAED154D80A235A6F866BD
-5D9C7D7267E904D0F5AEA04C0C09DF4ECD2085F4CF55F607E803B5AABC21CEAA
-5EBDBF95C6F86F6AB78E67AE37AEC25F85A9BC3151B1CDB1DD6EF2CC295BA77E
-6C3967352E995136F81C3F4D2C7B55BD8AA6A6E308BDB9BFBD36F606A007F671
-30719EB763CBEE152A3F5EBDBAB1116F1A7CB31BBF3CF98E226A14C4B3627E6B
-3B23B1121018FA98893EBBF18F593CF9FF8207204752C1F06419AFE557657030
-E84E7C15CA19757F6A0A0A2DAB497518F304597DAD6D0C3342DA2483642F8612
-536ECBDDC571B0923C77E0EA4F0B48CCEC6E942963CFB1221E746E38FC9DA58D
-BB08B3B8D80273EA6E05F572E7FD71D5A122C91A539C88FDB49AA1ECE9D66928
-F0978A3331CB8C052FBE600BB5D9058B8CD9BB02C907EEE81B947EAEE3A95B20
-ABFB7FD33D377798A16F7213426034B16B6CA5D279859E00AC102BEE36363F5F
-5D7852FF9D5508CBE3F3F65BB4F725F5F2FEE6A75AE6CB00865525FF64EE87C4
-D079A38DB5F194CF5E5F517FAEB157F9DB65E82EE2B6EF2102DB40C98ED3C9B7
-31C282FF23AE4194F900B4B8E3762C3A511E6461C3CE4711E4D61731A796181A
-8CD6D80607894AE00032EE6D040FAB53415BC3638712C88BF4EBBEA49462A32A
-AC71BD8DAE14796BFA5651A4286ABF7008C76724BD9A42B6DC9A3690FE5649D7
-369F6D1D0178D0C2C562B247262113AE020D614B5BB0D11DECC654B5F27F630E
-F1C51BD077CB08E71C0B57264156755C552D70602A51A16990553FAD0E6CB3B8
-2FF4D3C91722E5083703068AA616271B9D20DD18D516FF41A51560381422737C
-BC70C64ED68BA5AFD5AA063B528BCA2DA3F9C6FAEB1073010726412FE6BBBABF
-B09B05E2292B44B71557CF20EBD07FC70A76B85F0E9112CE4FE8167062D8A116
-872C2880C6D399DC39F5417A8FAF6BC08636E2012F681A144FCC868A21264595
-1011B6FF3BE9E8F82DC95979A30FA8B8ABFD719C78EAB1EFB55F0ED0A7BF00C0
-C9E36C40C141255C12958897F77839FD663627768D0992FAB0C06B4FD3BE046A
-C0C0F90C6EE8517F7C3B133A4545043959B9200CBFE457B0C6BB49CF3E46B702
-B5183590F8B1CD228BBA0FBB447DDC82F3C1403993469768737B7E893FF6734B
-CA6DBBFD568B0B6FD498D37BF0AAE926376EDE237D79FC6320816B5348DDC83B
-8E2ECF6C1D42AB1BF8B3AEF580899581C3D529BEE039B2DBF404D06B0789E122
-3464EF4CC15A623DACD5DEF1C9C8CDC7FE1B08DF39B3C4E105E9997897952DA2
-D059A1134ADB56576B1DBDD0742932DC8CDEEA40143C3E31CE9C1B6C2BB9BA70
-884811D3CE935FA7231721855201F84B31FE595883A7D132032020D2B166C940
-D368B03C2B4ACB65ADD39ACCCC505838AA474747E35F2419A2D0624B27AEF786
-12182C4A4DFB50D8E475650E37BF0F536A87571F3681D110A0649613D8167830
-A88038383FF79BE6E07ABE8ED0BA06B85D940DA9CB2D9A7FF65836440F652F01
-8F6CF011A3300CFF590DE73D7CB5C036BBEE3BEA975E25311F3684C864EDB33D
-88B0D7EC728B67851B452840E04CE0F188B89890861F4D3A75BCA721EAD8D19A
-FE1D8010446102D20D7F396BD91E7997AEFC8A8F08E3B210D3DA90B49B97A462
-CAD0575F550920A83A5C51D2AC9DF59A0150DC951DE53E8D5A78FEFA5C8A9FE7
-1292FD804E284D0C3C6B0D5549C401A8B59FC5E136E37022FA66150EC5C0D1CD
-8908E9B92C058210AED78868B6D11BDF2D5A389A5C8DF807D71467D4598124BF
-EE431AC98C57810B737BC95F375AED7F0D9989105B1E16C902DE1E9870D6E6E0
-8710EB4E0938D9F7BD3CF70C29AB8B244FECADCE88EA703B93E52013BBD3BBA0
-E4112CBF361D3FAD125E30FA33163AABCBE3F36F8B9B8F302DC6B52A8B0674B9
-2BEE34EAC80D31FC0D8BD0B67D303D9F1682569E5DB4A626A03FAFC6258F9AC8
-8CBBEB4045EE158D38BFAEF53C9193549AD408576D5FBFAD25244D26D783E76B
-AA97B5F56643DEAF52C90B9BDAF1A8460E85200988206C8FCE3B61A0094182B2
-A040A4CA3DD310D6F23A87469FF7EF50AF3252721C492A9E7944C816DDDB25A6
-1EABC4B1EDF41849E222960C771E1E94B9D147A0F8A2C8FE03526F949AF75445
-B9BEA253A517C000AD1498F8EF131B689D336ED5B50FB94387A561FDD69B4B94
-6B1AF617FD902B0418FD118F5418DC57C02BF01FFC9A4EB474B42B7731266E3E
-C381A1098B3BB1B4C19417A6A42C89310122461512435A94E6B42F580061E7B1
-69C9CB09B8A8C1F22CA11F6AD46531C6FBCAF093D9876D2E470F77AE74088C13
-E95A427188CA2FBE208E818E0B0A404BE18C02685163A67A515EFAC1E56931B4
-69B2228DCBBA96EE191CD8D098BC3A8A3EE6655BFD10296DE206A1FCF1DF7695
-9458058202C7C4CF9C63DFA88ADC438DB21C616973793C3EE42A21D7C9232EBA
-D25F8C8B3BB5BA39B6FE277C86C18747933AADC6D25E3B14547F88CEBEF0935B
-6F26411AF72A9C3E65D4D025C42EEB556CC388A774B2A88F2310CB07CDD0CD69
-45AA5303E97BFB3EC4AD24702E530F932016BFCD8151D4F1087EDCF6695B1F29
-B30CC14DDC304FD92A8974F724BC7BBB421B70ADB79361DC589A23A81DDCF43C
-1F5D586CB58123F97F25F0687CBE203CC4D1672DB0843B80E91C6420CA3A577D
-DABD4344746264F48273F52D7174977A0811E8CCFF0136C5EEB9D5E2705D7391
-1F133A72A108070BD8E038720CCC1760DB33B64F056952436F6169D13F2A8A9E
-DECBAA7880194B97E6E55E3E5E478121BD15ABF27EBD7CD12111A8723E0AB4CE
-3E404EA4F047E181239F33D501F44A288C1F43703DCC9DDBC5AFF9230BDB4913
-16C24F3C2DE86A715F3C268F63D14E3B02AF820403B04446A370F05D58D37D3F
-814CC88F65F1F394ACF90FA93E43E24015665AFF63818E39E54164ECDEA202D9
-1737AABCCC3EDE4DA406E2A1FB6FA68206EA204B48CFBD43171A83F59503BC1C
-2A3DB11DFE999DF4BDF3DBD0FBCEC291DF7C093E0D295519B0C0557BF8F46D19
-8CB239AD8271AC029F85460183507DAB1733115C29E914DA6CD6027685654703
-BEB83339D53D39B27E97943A6DC5DC205308F222350D9D436700B1E4BFB79FC1
-7E9C65100025A0594389F64638E225AD6B0AA69E4D51F339CA4CF0036438973E
-ECA4A772CC9424C584721B46343ABAD35EC50E9CA55086B2EF7D71CD1EDA5DD0
-20085592103BFD4CC90AB96BEA580AAC77D8F4C5CBFCE9479C17202195626499
-74E2AE8BB0684E238ED872057E74AEE7AF6563B6F41B2273FFECAF6A3F697F44
-CCD5288E286588799253FCCB28CA27352A673F13A511F5EE4EEF89D47297D6F2
-028B4B046F37D0B3F168CD0C89EBECC032B0340BDFF7A1AFB9E116115C7FD463
-EEAEE3104288D1C1EF7B1D18D9BBD1340675AE981508AE8F214C2EDCAC5039DE
-1655FBEFF4FF9599301F8FC80326F853166CD680CAFC5F3D598234933A21848B
-B6E1247DB00573D02CADD86203E51EF377BA3C902954403B0B063C1BDABA8740
-769E71DBD66FAF4A8B73B43A65BD5144B09EB77A8746006A45DB7E288027EE73
-679AB8587E3085A07432A3B82812107559FF7F2F4686A650B04866BECDD7032B
-F416D7BB3AB39FC039EC5D73FB9279686D191F6AF18E10999CBB3D4F2B79269A
-AA16C45D65939F16DCED60B1E265E528FC664B274331AC7170037C9E5ED81ED5
-4DF9554ECBDB10C35B9FBF3ED28A886C1BDE903D6F09308CB02F731EEE7FBE40
-6C274506CF56EA1AFDFA1BAAAF67C090C62C93B00C9F66E65C4EB19CF6CEF49C
-3B9E73A3F1CE804772C9989AC9E3AE7C361FD65255532E629E1B9B148A281CB5
-A0A2C1F8E586933F50AE3D5D3BDC8925AC261002B852F5D0A13E0926A4146FBF
-FDA6CEA3ABFA4BEA00A25F5138CDE9EE07A94CA2C47FEA3A313EF74AEB154FD6
-97F0516D5888CA99CD2AAED17D4104C5301C310A9BDC9131BDF44A3D45934D18
-33466ECD58E51C24FBF723179998737C236B8F516526034183E69EDEF3B1EBED
-CA3078DDA32D6AE047E8EA9EB15940111AF3FB129A9D064B6B3D42EAABBABA99
-EBAE9202C091F62DEA8F1D83ED65474986D09B44C3889D17FE34D489F142680E
-70AD0D34CA4D90F121EA520D2D24AB5A8713CD5DC97602E7C2AAA3D028DEFABE
-7D3A3657CB7B296C8FB2A08D35129D14E19BD3DB8EED6352EC58D50154489A01
-498B2293EE06C232A148C918449254E7FBCF15AC777C5726DE50331445BEF361
-6EADD39DC67327E030B8C6325E7F99124FFD07FA789205F179F720F75B094717
-6744C449A5C3B03614DBA5DA5668E7D5DB3FE84826DA2F6FA43F06DF67949616
-3464DDC30CAEF50F1CA901F4A5AAF5149378A92F111A8518FABA42A2CFC1043A
-E9B406EE5EDFC6E69D0BFC025DA274CDE5E3FF0292B84D628E2C0F4575ECAE69
-8D5298F6A2654301BC73367173F25E2F1418D39C69D2B8B38B5FD1C10CD98227
-451FBD34E57A9F51D0A2B566647F27E94432888D0EE95F8C2A6166384044EB89
-0C2B9AF3290B5AD03A39DD135CFFA00DB618F27BA5D3CA0249D64297ADBBC7E4
-B26BAEF3646061C27D6399BE45D936C98A7CF3B2AAC382C6DA831468ADAF0EAB
-ECE6F09D40E3FD5D2728033AEA8277D77F89938625C4A1E7164433EF7501E837
-BE86BE14B06B0945DA42BE9CBCE5AEC8514726494C29DFF0414E170F9B193DF5
-41768B8C927B131CCAF45554A24CC5C34F05B8FCC214778FC310D79F531DEC08
-B7552A0418CDF75394CBBEE461AE0595F40ABC738ECEA43E42975E8E4DC7C4E1
-F6A8E9C1E0E7F0228DA0BE44942F083974E0AEFE18A86F729442123795736C62
-9A7F50CD83A6BBF1B26F42BDABF3944F71C61323BAAD946E3143262EFF91E4E2
-2C14C04095983D2AB6FC1B5A9202ACCDC4CF3D69DAC9450CC3FFB3D36566DD3D
-18497411F6F8EBA62746DA015A1251D6205BC77E3DB297AEFDB71831A2527CA6
-0AA526AF7BFC20F5DD157AA1E07A45B2C12298895FD3409AB939B7909F1F19A7
-3CA916A8A0AE374A8FB0F39E3B15CDB9B34B8672DC53ACE778B4A30EB8CDB285
-E0CC83493AD90D973CD1A01F9978919CF5147BFFAD10796EDA5EE44E64C318A6
-0BDB31AF6ACE9388D17835389AA07B371838EACEE53750A3A1DF05D0D69D6303
-D2841C0F6AADF7090148D9FA9001DC909B4D1B2AD8656C1D0B33391894BAFC66
-03ABE2D07CB8567D7DE167BB520986AD7AFC361DE40409CE3012AF83F14C79EF
-DACDF6356CA9D9FC9FAE5D52652CE68CEC07B830B4FFF4C05F0A727FFC4FA4C1
-1E7D2879B0C7C50913B9C1DECE2E3093D675149D8514205387CD373CDE76630B
-FAD82707A15F56DB03E64031C326C920FF00308D9CAC9664A3F0FC6ADD2793B7
-5A760CA7DD7980223BF68BFC7B49C67BDFA08E4E552682B5A9F3B3264F435827
-C3A60AF89F135364EDFBC2C53A00206EA10B208839A571C10427852B15EDB9A1
-60178C25107D40B3052763DD49EDA25CA223821BA0D299403D60994079107311
-A1AE5328E8884F859536ECC1A27AC5028661709C92A16E8AD0659ADC71C62015
-8F2DE3813DE390C335AF909FADA0D79E6F0FECC884AECA543D9D859F68908E07
-B81479347229D9E1D18B21E995CE9A29D1B5391840CC2B5BF6259FF246577B78
-FC8DF71A0F3018EA7A44B5C3E91E7F7E5A4DD062EDF239CDED78462B63C72EE2
-BB0E8EC6AD5113DB8E179A8C17EF7FCB71978C3E6FBD80A17D24717E9289D2C3
-B56A66F636CD168B15DD8FE33D2A083EF2737EB917429A0C42B3AB6C8314F103
-666880B5E037B6A5D980D0BE8A8010D3C9B584F7022ABABFBFF1C8FEC3490A5C
-8C59EC8EB2B8E66411FDA8F36B94DF97EC7079A1F7C864A7039E142583E5674E
-9574D444693AB36D8A8B45BAA17CBDB29DD8E9EF600FC7895A6E5522345AAFC7
-9C11BFFD2A040FFECC90698F49D82A41BD92A6F0FC6B3999E83FB80C56EAB00D
-5001BF0BBC8DA0661E98FE4BAB6D6D1C24EF0FDC19E56BD0A6A261B1A1D5D7D5
-75C594F1691476ED302E32B8704E3AF7B62B4AFB6E00F9A6A229047356FCB401
-F34DC1B87EA961AB359D7D353CE5408D02421EAB04EB5B77251F164E7A05494E
-67A65C4D621A4CDB002160C360FEAB0BC043E99D882417B857240CDDFCF311E2
-74DA67B96E24BDC83F19BF351D2613BB546592B0373A1223B37DFA20CFED6A84
-27F0C793012334D4C70E29C4C21B17512904C01932D03F517A263FE6DE2A1C4E
-F955AAB62CF6D192138A5735907D12A0B51AA379F285454494618C57AB3110D5
-BF12B64D
+AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8
+42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8
+40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837
+B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53
+9560176676B93DE01D2E5AA1A9151955DE79CEB9B13437B8E98701DEE20ABC79
+453320DC9C156F44822C2B275CDC3B2DA3A3AE5A2C777D0486345A72FC17232C
+A063B1D2A81DE8BCD3D4F3C3F083214EDC13D8BE360FBA440D0AA368017F2A8B
+7FDB0A4BD9B1ECF62DDB949E34E9709B91D3E88D711F7AC3601E2F1F79627F12
+820A49F98F1FE312DBE887B6DA76F03E36D12D42C892D2348040DE35B8BF4262
+882E3DDA9CD39C24F3275A2B4503289DC78BE29A97C213920E40E7E14D96BFF7
+7DC1BAF3B07F2EE55BCE872D03C8C8C1E8EBB2041408BF08D2EE1D611E5FF6C7
+D0B9E3F831125DFAE44FA0D0FA79D4B5716D4B681204358E909835DB0BCB949F
+55F1FA0003B9C04E2BEC36FB55E1B84D12B8220F625ED5BB5B9389EA2EE04204
+B020F3572BBA033A789A54B95C070A19D73D79A18F16F89B8A517D886CF07899
+4E986F8F62728E608C147476E016A4C3F269AF8EB8635E96C1B955A90D88653E
+9738AD8E9816B7FA3C3510E884B6F66CC1C1656383A83484C1099E718790B05D
+48E743BE0377F6168DC7A32F45DB5E2871A531FE45E57BBA855DB3184D096539
+1034FF5D5AEBCFCED04BC43F06FE5A290E7E89200231E6BC57B52EAC2BAC8A07
+EC0E440E9216E85D2FAB2BAD16451F2FF278F4B697C445A1F9DAA5AF45E1C6A1
+4F3C983E0CDFE5138488919A7513CB62AF48FFE94CD03245C145C60B67F27B33
+3BD114D0E4495498BFDCCC86DFB041595DF7F1648F4101BDC81CF1658ADECA8A
+71F61141A4543BBEFF42C4C350398DE2FCBEEC3578D5AE6291E1D2871A186E8F
+FB39A80D67B9DAB82B3DE7B549393DBB749C92D6453EBE8EC39451E8D13FE733
+33C9F5314CDD7D7B71AF62F3606B795A24747FE77280BC74A8505599ECA75611
+9333B180CB7E35C1930B66ADB1D272E7495EE814E0A4087E07185C1B6B54A781
+4AA286B3873A28EAF0942CE3A4CBCCFDFD2D398E4F231C6DF5A8F1D5C61A1088
+5D46C7FD36ED389B3C14356160993F533342DE1AFFF749435D9E06D942F2A725
+484553051F015544F841402577AEB9297724522BCDAF26899244ED72BE36FC68
+44B9BBEBE1CFFC4E0B8C0DE3592FEA9A32680A8B5E6FF4BE82184A874B20B63C
+0C944FB395934EFB2C9C94CC8FF5A683975B3023C0C74AB8304BDE5E3917DD82
+D0ED0CD41E1A6968B0088E4F07CD581D87E73927B35C4CCA7428EE53C1F5CD72
+E3F55DFAC7FDB5D0233287C443EB2803FA5CF2C7ACBD21B1327603FD50FD33CC
+C8FF3D6E9E068519865A6FD6C46AAE37CEB4674F755BE11CEB8B01E4A5948B9E
+89FB62A254D168D563AEF14533BACB377BD00769750CC5A000C53D35BDB62826
+AD935BF10093A8E4D626DA26DAF9B5B19364254016DA589AA58E649501C9EB60
+0504449BFBCA986DBBC506E100066A0CEA508AEC9B6ABF977EBA53815032BBC1
+7E3C4787F90642C9F9BE5CE02B595CED2B273DABCCBF63B7B90CC8516C326C42
+893EB28648D82CA76F887FA4EADDFE3D5F0AECCCCB726F9FCC9ABBBAC4ADC5ED
+01DA0BA9779990EA39D95FA64BE6B5B28BAFBDB44935B97ABC90C168FA8AF9B8
+A03B01D682795FBD947DB2EA9A123EC3D50C20AE6E41DC68FE870F1D6199D3E9
+D1441414AEBA6BAC898CFDAB66D0D30452677A1CEB4DE2EDC4CC3FC783B7B142
+42F04587BB25125A3B8CAEC12B0C5DC06A8CB302B36E75697A32CF7642C24F4D
+B6AF619138E244541F03AA119D8184DFD821EAE76063F085A050F1864105863A
+467A91945D90367AA7DD1F6B0190CED688CCF91CA8274E577F0A21C465844CC4
+D945B37F0A7D43133C3012493732375B46CD06366875F63C425CB953C6121610
+08D3E7725C29A7FA92E58E2BEF503CFD1136BA9782573F7B9F4D5097DA90D90E
+28610CDC10EEE200EFA58516D583199DD0EB6D56492856144E9F7CDC688D2797
+8352197A06AA0C7B78E430668E0DD58D0804E5AB9B5A61ECF6F7C2596B1E3B1C
+3259C9FDF9718E8D821E629F15F5B028E42675D57B657BA3962E411F90D8E866
+2D88EE0B8914079322299331BAF563D2818150CD1DF84CA21708DED2354B4B43
+C6CB07CF0EF79A090467CDEAC89BEFBA0D37744EFAFD5AD8C764A6CCDDEC54E1
+97846635F0C5E437F458F07DA50DF403B501788F8E8F6C90FCA33D2DDC203A9B
+8196E561410110D35C8F290A7B5CC6C17D541C9069E4BD341DD0E863385E22A6
+7A6CC1DE683ED53B483BA17DE96956D8CA29D60D748A6785E02C1C1FA5EE6B77
+D96DC43F0E95D3A5E536F20354B9526A1FE45A941CFA9B9D9FE194294E2B6CB1
+4D61E64A087ADC1FB62B2C60407279130A344FB369460737DEEAA53F4EEE471A
+580FFFA6C0820F89158E4BD3381FC8BE74299617F3BE7CD721B848673D984312
+EAA4A886148D0DDFB8902182BB6B05490F31177B19555844F6E95585468C10A1
+B8A64274976B5CCB840F0D6C69A2653C7601DF62ADEE738F60FD4A85E21EA10B
+2D01A3B624F19896257DB78DF275CB8B3BFA1A947A3FECB331029B46E45E4F31
+094FF057841D3D4073AA6C332902CA6FF12F9DC0628BB5A0AFB2314890A731D2
+C2671A16DE05C50ACD2BEF25854AC83B7472C44CA4934EBDE3E8FF4C5959F0A9
+2B9DC6C6B857BE7CA60280BD3D565E0047C3132F35D90E08E6258CCEDFEFF551
+BAD0C9C4765A5D4A2830D65146D6A5BAF77E410271768DF0DB7F53BE885E3817
+36804EB9092974B9C2ED627ECD5A1981002B6446D2F69761E032FFC76853B7DF
+AC80A13280A974BBF50659AA7BD92A5171A198A7C2018CC6056CBC3CCE54B6E8
+73F23A3C7EF580671EE4467C7E0DD5B38E14BC7EFD24B622E27E470610656317
+A96730F1B9915BC02B279B1FA289AB0C5870C039C9EB87EB717A9D429AE507E2
+82E98DC518F3EAE44290E37CEA39913C7CDE4E177399ED6F87B58EADD7938E85
+C82C8A57841CD28515787B7AB3D17354A2C4F8B95FBCB794A63EF25112958620
+9EFBAA21032588A515813BABD7899CD02825717E2B2A1BC3DB18EE52791B65DB
+2635A2C98494E504E517AF9670535AA52E2C11FAD438C4FB8343F717FF42F4AD
+6DD3105A8E2386FB14B8AF89A22DEA82C05DB70177B37E0C2EE8A835DA6D27C0
+4E5F6A0E1519C4FDC5F534AF48D590C730F4B988A6A30D305698B300BD78DAEB
+7C851AE86D8849C571A73EE12304880C1B2E238213862B8FE1EBEC1161D7F7B7
+3FD1FFBC571B1AFF049F1000E605B716B76E93E507F0D26D734018A6404B0152
+553E29006DB21524B22342DA4E1AEF765D18A24C2D17B613922C7BA29C9849B1
+873E521B04494F9B60C25AD0C1A154D68B3E34A9D8430F2CC753CF068AC1114A
+D8077DEC1CD63B566EE5EEB0D374ABEFD3780E4D3B815EE2F30810242A5B8829
+2F758D13E942B6F85FAC7809492E09CCE1586D00565CEFB908E9E27D5BC3672E
+D26667A869439DE96BDDEAABA7F5E86E9CDAAE9737C37B91B2C494B525188DDC
+F777BE6DD185ECCC347246965378EB10ADB58C1BE26AD9F5105C97A5CC554C0B
+56F1C1CF441EF53CFEB5A9C3E5CC8EB89C9FEA0924014596C6D04693A6B7F99F
+5F4644DF7BBC4857A119E5403F0B3BE2CE218DA33165DFD575F3E53E348D4C63
+3BE4C158940CAD5AB70A28CD9C936923FD78A7F5C14CE102F5E9BC3D7270E38A
+71085BDECF58F2A89CC0542AEE76BF7E70C5F63EF2FF00E2070AAB5E69F8A93A
+2B3CAA9E2BE561A77E77B3598095C6157D6C1337A354890A94774C82AEBCD78D
+F717FC15431C3A96336BD60532661F897A6DC397988B06D536B52FB85C3C3F07
+217C0CA401868F7B3D831D2874A1A0A83BDECFA754A180691FEB98CCE0F4039F
+5925DC9A9C6C4EDC54518BDC2D267FF9592222F7577D6D5F4CB9323AF77E5AA4
+7FBB22982B5387D24EFDF7000D260479DC9046E3D7A1C1BF443BBE3D3A563363
+EC3397721B1155B95B80F809A84F4D6FF838C058BF1A4E174E9BFC5199115262
+B40CDCD010B788D3903DD4C5A89CC4EB564A30A97A023EFD7ADE6DFDD8EFA1CF
+7F5103D70C9C675032C4E646D75B59ACC42EE315213265AB4F04F481146120BE
+B7FC8761FE381213A76C0C764F39A74402428D3FD98474FB5DC933FE74D475E1
+CDDCAAD3B52059774C73D82259B8E89DA64464D052F511E70B20026042068538
+5C4C0D0D0CC66F50E7A7A44E11B5064ADAF6EFDFAC56D0D10883B41930D81C67
+6095D3DA24F85BF38E3739FD8502D739C2F6512016A62F682DE92EEF0315E35D
+74DBD47997D68C0E615AD4A611D894341147B962639B441E890CE59BB124FED7
+4CD01904118EDBDA380A477F608404185FC2E10603F310F243E9D06841888C88
+0D6478CD92CDDA8C977B7C8C686D7D6AEAB8C71372A7CE2A5150BC4CEF32071E
+B1A8F079CB7694FA7F1E5085B05EFC63824218FDC364C22F42DAB0A37EF265B8
+7C652DDBE7BBB2B32423C1553609BEC0667E33804D6834C35A2A2510DF7F7562
+ABAC758638FEEC50F147CDCD744C36F47A1F544E1E60F7C17A83FA9886016E94
+E030D7B54B2675ECAD8A7912B534CC84B0B286FFCE08EBF44F5666C03704D8C3
+06A3DA6366CEFEF892520B61E06AACA49334B02825C4DB064A7884820CED7A4E
+2CCCCC540E46B28FB50D010A321EE6C630CC93BE328A8A1DF60EEF1BABFE7112
+B6481ADD325A28A31970B311B441ACEA9BA90FD083B91472ABF6A25841FE574F
+E8D283A5E9B9E5F37E086DAD8EE757B6BE645EB196AC8765895D5D939BAA92D3
+0490DF2AD46842A5191F0C8CFF3142E7B9467F9231251F925A342CC56565EE07
+A7BA0B156D5FBE6C758B1CE3E8E756CCF855FE01F5FEEDC7BAD0708B95B42AE3
+449B73F9FA6884463F0A667A02D253804795E7704127C8486D8312F8E8754D24
+5B20EC13BB05CCAA52AE08EEF618C62BF340D802D9615125149DB84ECE9D8DC1
+13079E6C84354C21E4E7D6812B7B9BC83FB12E23029F2275B303BC488E40C46B
+50B9FD884ED1B38C787EDD1CFE59C32C78EA18AEAF674FF5902003E3835D46DD
+EBCC70B35CBEEB48AE196E468C0C31C10D729CBC6608EB221469CB0E8D0E1464
+3FA94D75B5BE1171FF620FE5DAA2ADABF303194A4BC59F59000F3A83BFC77DD7
+1D0A7C43825E7A7CC4B57F82E258E8B494B868534F9616AD7A849F1968691F1B
+30E4996CF04CB14483B56D0C9FF8E4E1215F2B241BD0080ECAE254EA4E4F500F
+8CB5C11E649F3C940FE976B4835AB799FFA79567FAEA3205513EB80CE00A57EE
+EF7F6A91EB77061B754D0F907B7F54819CCD59B52C1E70EBD34F61C100894AC2
+6626F5A8CD04A0A00A504F77D77964FEB024D8C8CB4687531D2351FFA6B3EF4C
+EFDDF247E11A036149A385BB8087B4C552C601A2BBDC27EA602A48AE29520C3D
+3C4D7DCFA5852255EB9A37CFCD689DD5E8792244E9A95FDA32217891D0017064
+8E971FF96B558318D208145E9D1F36F6F2084EC876EC1DB4681B5432516F5B22
+D21EB39D9E5D74726731B1565DE4B4BCC98EC86397097ECD9A797CAC3F0BDAA5
+71245B553A10CA01C06E8CB498F9C25ADB369ED16D5EE7E20F6463E8B38EDFE5
+F610E07F80F9AA81771E32D356DC58E8C0852D9B299427CC6E2C71231A49A7BB
+0DED6B50DCADB633101AF6835417736C35A47F02DC7FB21D8024DEAC81B25F3C
+D65FF3CECAB38373D29478C30F5B93D02D0794D65F3036E28159DAAF93855B8D
+699F54742B51FD9497F78C61E98328925AFE65753EBCF1B78C6509C3565B266A
+590410D04934B8B12850BA35E5C61A37F6593312C7F8FE473EE04349FBC769E3
+F4E7D5E753828E832186F80C21C8FC3276FD3F6EDDB7EDE8ABB6DEEFE73D266C
+2D5B327DE47E0C74A0885A7A081FE421C4723D5E9898FF12662F3A8F1AAA68C0
+0690C6F808B6A551BF48CB5765361DCBC46140A761B436B8F1BF3624BD2B8B99
+2FF8B921CF71A02E6A75C1CB4685BFDA280940090C99E372C6CECECBD4F69AF4
+3F48B9BFBF
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -3437,12 +2947,10 @@
 0 1 255 {1 index exch /.notdef put} for
 dup 12 /fi put
 dup 45 /hyphen put
-dup 65 /A put
 dup 66 /B put
 dup 68 /D put
 dup 73 /I put
 dup 75 /K put
-dup 82 /R put
 dup 83 /S put
 dup 97 /a put
 dup 98 /b put
@@ -3459,7 +2967,6 @@
 dup 110 /n put
 dup 111 /o put
 dup 112 /p put
-dup 113 /q put
 dup 114 /r put
 dup 115 /s put
 dup 116 /t put
@@ -3502,227 +3009,206 @@
 3851CB3588E22936FBFB63A58300298B11C45D82385C083D07AF133BB1BC941A
 FDD9F34D5E0B8087EF2A58C54D8AB7580EE3ED58AEB83B72CB9028F472ADBF11
 05A77651F118824F6CD00209EFB60C1D32D46DF39770905D31D051FF2ACECBD0
-08911D3CC25B783103E4A26EFDD866414ED5F0DD28A4BBEB1461ADD6EC174A1E
-75AFFD283746EA8657E33B8872EA021C6875189718CA0E705F28A9792E71452A
-B89E04787CB1DE71CCC500EA765379AE119A4D5F99F68D41B9178C7C8ED352E0
-A1E6DC9DF53C5301100FA3234C1D8E2EB7D5E267C640158A7C16ED424F1F801E
-D49A6E55D88E47257C1FE6F4911A80F453FE60FAC91C0F1C634BC8303F889319
-2249F256E3D03ABCABBEF82548BE9EE4760D5AFEC07FBDEA52A0AD12BEC7726C
-C7A5EF714229940B17A6B638974A56D694D6F66A013BA2D8D4A60B81A2F0B8BD
-64D410F407E46F530C20E82EC071AA1A458E262E2253F566A721AEC77B45C6FB
-E8A75FDFB56E4AD57E8B4DE82354127A95480448B5A3CD3782D91669659C3E48
-2786CC34FE63AE4D1EC82500A6BEE04021508456A9151B657833BF67E0A4D138
-F863FF326D70E64B11294E78541DE8D10D0C6037F79C9E0AE641F93D94AB5E59
-C8E8B9F6A1EC99EF00F60A3AFE2E7806294FFDEC239A953634C3A253248BA86B
-9A739CA7AA6B4089806CDAD309D746120CC07EB5730B79D20B9DF148C0AECEC9
-D3E047399A19FECC88B7DB6466A9C78E6F83C5B277045B9E447C508966F876A8
-F2E7F7BABFCE61135E65AB9015C0A877917AAE8B02539FDA0DE7669B71A614FC
-A95937854EA7868FB4219CC8363BB3912F14BB4D7A7F970A3FE730C92D7F81EA
-D6EF892A8F9C92BBB68170F00A7CC0399B26B3A027BEA79A11A45511BAA2FB2E
-85749B8E30260B9702C504C6FC8CA72591B40DB365F088FA8C38D4CD97E22D72
-DCD8F550CDC091DED860D0697752366D641BD91288FF41995440432838FAD5D8
-EDCD5167D6A918450F9F9C7C89DA325AF3811B9DE030C545049019150C58AF39
-CF34A44DECA0565144CA40FE60DF801992A1AB27B563A13F01074EC69BB895C0
-7488953AC184B75AC1FD8B073CD5DD25C67275B1E123245813D415403F1E5339
-68F8A8BEEDD68CCFFB2F87F12C4750E0C8CB86C6DCFFC3ECB1523B5EC2C3F5A0
-2929E86E61D8847A24CB2B3496690FDCC4C41E54C972D59DC70330459B807F37
-7375FF4D2FBCF707A46E6DDF599C852254C3A1AE22F77B0CD91B439F9BAC227D
-BABF7509981BB89F85297CE234629456F282804D3C7072101E21BAA6A9C41FDA
-F3F5082709CF1930DF46F6F296FE76317F8DB5855E945274D7E7CCD73B8DB342
-CB6D405DE6694CC1FAEF674DEE1836772304C13D708A63071C2668F330D549B5
-C197D91A14F50D0824619D972E8257DDBF2B95160FF0DBD3AB8B25EA333EBA75
-085D7C86FBB1A9C65DCC4D1114E2C88B4637E68FDD6168DAF901C425B5340703
-8F0410B03BD9A3EA8550DC01FAF9E1951131C261B0F62911ACEA464A170F1746
-14BED6DCD655C5EA7B9A06E1726563AEBD74E8A768FBDD613E1ED94B6FA10BDB
-6A6BA655ACE6E1AAF9C6DB0B99AD55001D0502A3B78167140848EC3481003B7C
-CCADB0BB37E063C5EE58E75A12288FD2B8D1CD60876E867E9C81E0ECF3A99FFC
-B30A2529261616CCAC571C90C39D5B8E01ED476A262DA8711D22EA3E004493B9
-7D9246CF56917AD4AD3E2FD8EA64399508A1658E6D0D731E97021C1FD19C8BD1
-94859EFE3E15C7EE624F92E345FFFD89011DA93599B37795DC64DCC27F1FB72B
-8A063A96A4E9B8FA84473780D81482FC61E491C62DDBA658FBB9A9B94A106F7E
-EB0346F1363A11448A236328B0ED08001D55A2342B618816AAE767BB6711C51C
-03EF73E87E95F8AFD59D99132E7D40B5F190D6DC4C6E38DF763F1B25A7642A81
-C3FB1D804419378033FC2FE1C0C6C63316FE563C9A9A662419B7AC667280CF6A
-A72037E9741375F9914C83918954F24950C55D1CAA777E3FD9B72DE61D0C0565
-BC959C913FD6F080981D39432D8CD14A03E6B47C76DE30AED2747AEE21FACA7D
-307F159294803FC78908D42869D05B488C3EBD4EBDEAA407DEDE3C299790C8D7
-9DA89AC90CA82FE0F2AB144DBB54A356EB711AA89EE56C600C0127B9712DD759
-0F9E235A3A68671D80843B94DD28983BD8D6FA8561F85C07208F23611ECDB427
-EE4FB25EAF65D0D2DDA9D77D31627BD57098DA97E7335693F5F4D63C3C0D8AE4
-8D6777A7372BC19BA27CD43E97984D1DD307D4907FF910E328F5CECB5E92779D
-758EB9E3C68FA6DFDF8843F26982D53D27C1D68AE3CA3EE40C57BB56F97042DA
-D37D479CEEC4EB3CA73AE5C0262DC4FA56575F659053268422BA92BC5F7D687E
-46839260337644933248ACF82302597BA67F85AADBD7F3CBA91997EB675F0D3F
-3B816BA7B54D0C57708C88D92E3D71BCC5F840A106BB5CF9933815EFAA885794
-5DECB550BB444DFF21AECC51A25355ADD2D2FCD9A9CD9731EA8F68FCF22EC87F
-381F102F6FC9C867B18E0D5A64B29F0607ACB7E4C40B238D4FA7CD5CAFFB6980
-968D14A3DCA0BF9B08B347326517AD1AAC36FA2EBF627F4FBB14715E2C3D0A81
-B3E75FF03D45BE2356C1FBDEBC6FCB8AB34D0EFAB99E34BB0F7C0C6D4824E1A4
-A8CE1121D263FCCB34575B9C503BDAFDC9D5835C73D25126BFEAC282991AA7A4
-403D94F9EE9F373F77DD22DB4E85D495CC8CFB522CFC461067F16AD0D40680A0
-F190852251C73858F6533F56C2AA86448BB42E979A4047AA97F5E2E6CFE66CEB
-914D51DA8BCA3AD97F3BE0CCB4A80128C285A462474996D1CF2F00E92BA93916
-235E10AFAA3E7E4A00A3CF136E14B2C49BBED4B6E819CBC34AA4AFB6E4935DB8
-A97C67C44E211E765CECB4562252EF16F2412222AB386D560337505B4EA02280
-F0D8DE22EE274D246E6D1910E104AFD75E917AA736EB3C2CB6F00C9B8D1801AF
-3C9A9EAAECC917A73C5B39FF3CF9673D7236051FBF7F3BB900455061C1540B81
-DF4BA02B0A5EE6D2E558E844418B7B07DC6328A0D162B7F6C3AF0B473987E5E2
-2265FD8874A1ABD817AC9EDCF1CF69676297EA55F673BA3ED533ABD001BB7B74
-6F780F7B60A11E3A2555ED3CC9C3B77A2B6FBDE6F0A153683D72D4EE61FCD74A
-874AAD2BBCA5D8476584E184815117FDAE4B9B09114CB3C3F2B877991A97AADE
-409B4C93C940BA5846E4A6692DD9D3F39E48C255C903125BCDBB0B2C50A946CB
-24EE0208B64BE594017FC0CC51EB21D7C0CB0A87E0FC8E5ECAE81D26B46959D7
-775F8E59CE25E46F84C888A7FD669CCE26E62007016D7BFDE9977BFC762C5BFB
-67E4D06AD1CF9BE490523C8A5EB4B0778B80A19FA908B416D817C30624B8EA0E
-614ED954CE073C45D0753D17189890B813792CDE4797C66BA3AF818BDBA063C5
-40D44D2F0AC5429D8196F6CCAF57F82A5DADBA925758556B55B5D7F8E0F9CFE2
-46529537ACB145305E493F22E04E9E53006BF7FF7317180AC13C8960DA0886F0
-541D6FAE149F721ED22621BEB9C4C72B26690C8CE344F4ED64F28BE955379948
-A7D740B3424AA8DDC3FC03B7D81E38435CA7A7C318A8D66852493FFC62511ABE
-1836DBD501B92ABE48B104AB102233F7C8FEB17241474EFE22136BC24578260A
-D7538FD192D6383657CC79EA30B7C422B5F3B2BC18A8674AA5C7A425B92CC8DA
-C8CDBF59ADED76C26D082A6D460D1D6AC7E8671091756F5E68AA0AFE22005110
-386FFEABCA8E8688B74E43D5FD9188EC2B275F08E09A393D53A6F94E3017AB46
-D81A591540DE3BC56A1B52846108E91F6E7CE6AB86218B1EF45299DBF4E286F2
-4B2FB661AB9C13C7F650EA05D5C9A2D2E63383A89ECC38568A801699826FBC55
-DBD6248250CE6EAE910D2DCBD60852E9044A79B0F9E5C41CDF523C663BC54B59
-E0956AA08F7E5C6F0C270821A729491C3756BB066B65CDF2F18131A0DBF52750
-F365D6F39CA7BF1149BE03F2EC8DBDE684FEF3A280D8B7E5FBE0A07A5C252C43
-FD40F7C372B20A6DE66B57BA4F53E2C3001403BC9C7C7092CC038A95419AE4F0
-325CFAEF2C26201A6C0B71D350C5D1EC8103CC828B49BE81E06B06A792B337CC
-0A02EAAC152271CD4D432E12067A2693B5F1F510D7A65A13AAD534CA9272AC37
-C06A60C83768E12619D09714FC46F5A7DB145F9ED2EA19F5E4D66FAAFC089CB2
-DEA5752AAF92B57815D11843810723C2D46E94D67F78C1DB494F837639BE9DA2
-785997AE5AC95FF7D7BC5BB246168FB65CE98BADDDBAE0368B8FF3AD62825BEF
-B822D77B985510E6F7376B7B08886604E81B110318BE491F3A0759A0625C701B
-B8845EF170BA637177BFE6CDB43C84E303680E85B4CEAB6AF29118D36C7E45C6
-BCDDF9A7C68A567FCCAF9C4571D56690F7F17265A9FA149A50C7CE888221FA59
-C4444196C259D1A3143A73483980F91937BDC4E66A699CA2381CB1B31F7DF657
-20A4956DA24022AC6675C70C510284BCDE11653C899D6734618D0D7FA66813C3
-2113F26C8A2B7017672FBDD53C4DC3540EA823C3066221CD273F5C2BA2DEDF35
-AE880D0D9E56A6999021EE38F476EBA61B62EEB7E8B9671E49B6C0688AB9A888
-A451BD9FACDA716FC805D0D5595BEB9B20807CC6B5BCA439D353687F473D5B11
-9B981E501012732D42586B1B0F10C65E31A5B0ED2BA5BCEEBC260F2FB387A487
-48EC3DEEA18B46396A57D1F6A642162D15E8D2B01635701B04B8B6D32B303CDC
-770EE6D98A0B6D3EA3F3936F1A3EFE1296A1AD4303DE9A52796852333427C5A7
-77FEFBBEEE4434BD740948CC4CC1E91572A8E62F0615991AA2BD52B1A8DA7493
-88D0BB679B18B7595F4D1D84E937DE65B123B9205838000D0A426FEEDD97A36C
-0C5FE5EDB1F7D09A8D4DE9E8A2ABF89B3D8B4A85E23E7F9BB5F737494C2BF735
-EDAEEAB16D26799C68705D9907E6DEA78DA6B85E9E20A80B44ED2056EC0F3C40
-64A7413414080D36E6BEBAA0EC0B9D7AA2A91B3618405F0F9C16F2E93B2765D6
-361553148D7860B4DB534BA640DCCA6F78CE364713B720C5200E45B36DE390CF
-606345CD2785C8D1CF833E74FA18C1A7398AEE99A2F1B92CB7D32C8CF6014ED5
-B9B443BEDA28C4196FDF65437509C63EE533D73BC411BAD5B8B836F2E2BD87B9
-69CC1B192D2F4B9892188BCC868511D8F0A7AE2E1282E84D3619A88437A82E33
-A265A54D9F02DE534BC0BA1C64C7E6BC0F22E9E526D5B29EF14D3C7C17ECC378
-5AEF9D4F1A06700C6F0469A279D12092D20DE6C79C0056CBD06F760FA08F9635
-733C96A4D8B833A12F45E0D4E3470DD1F1110D10F2021B028BF8DC3A5D2BF646
-81237B7F8C3CF8B3481ADF5481484239D992C45196656E180528A7B785922073
-DF6B28B5F82F4087B88F712F5E74F5A50E2DB04729C66A63BA14593A01167E72
-166DD64624D50DC94C581CD901A8EBE7A0B0E6E2A06BE97F81E7678313F004FE
-BB5FB96E061428358FFFC551C171BDCA9725C0CE019890E02B7C6D2615257E86
-371296C6A3A3ADD137B376E7433F41B2A29D48984285FC2F9F6F57080D9F08B4
-D9FAA679243B84F8A288568E9837DE0D7C7F0A909358E6FB283D322AE6DE04CC
-BAAC229C177336ED007823817293CFD09CDA20026EF2183BC903F632D4BEE7E3
-BCE1CF758151F53E9068E55916C9C9C849B54CBB057F7D5186E615C030DD6B30
-FE0B089E526767D91F0337CEE20C8A26131FB869C3BDB928AABE885186DB667F
-7E97D33BA93C8FEDA47B64D8170BFFA6A6CAE93485C2865B237B62211DE9B5E4
-427E4EF2C22F8F9258556B278F941203A2D2288FA7E5E2818F80D872823ABE8B
-90A8EA84CA48DECA6F80DDAEEC20428B112B9661EE0E62832F350071B0CA16EA
-6E5DBAB8E9809C08032FA0257535E3D530CC5CE120144467356D8645A234A4F3
-D1C338FEECDDCDFB935AF03A8C4C937A119714AEA6A6F41F623FFF57FDA79885
-D1976AC4FEC0FA6D2B9F4F844BC136A353C0B6430690E6F76C03A6687AFFE280
-004ACC9CD8ED85ABE03A67C830BF30E3004C8DD45D1504A828A344B706637655
-C7607226ABCFB04281355B51181D07F52ACBFC9135A9F87E8E8D59DE95239A48
-EDC30B5CB54A33CDEDAF4D7A3B2F0513B3513977D252D5027C76B2D3E7CCC859
-64EE4061B1885B41448A9462C7B1FBD0395321E94E35736931AAD1934B4F3909
-4654EE14440DE1B29FEDF3B8B7C5F6ADF54367D8150FAC1AA33EE272BF731575
-88D46E9C8F62595E723D9AC1E82F3F953D46DC130D9CBAA14D4BF6D631FEAE7A
-B9F41F069F3B26C34CB8DE946628E972B1887B82B8BC02A2DE877EE7E1B9282B
-9FEDF702AEB78A99BC7D01E2B1B8BA40EDAF702D1393E3A4A8F79AE4023E17DE
-D56F12CD437E6CE1A0B02A3C4EFC2ED70DC4E2BD8A78C44624D943D8EB11F947
-06B72C63F6BFE4270D9950761EDE18967215AE0D9509C6B63B8170F6470C3AA4
-4A0B7538EF647BD28E6DAC1FF84260F18013F686F44E1E25DE9EE5D34E8ABBE3
-E4AD59C747D808C94D6C2E4648746563604B3053FF9198B0E382A0448123537C
-D572DEF80F5FDB6EBE67A936DB7C0250BFE260961D9A02B4258B1660B7B836C2
-1F832061CBF799FAF15E923CEB5A9AFFB6D090E58B2433BFBD950D080A7FE974
-067158D676603068F65788C3DE67F15A78AE8ADF441A25BCFBB5C43A6E8FC828
-32F0DCB45D4DEFC817663AC30913932AA059B3DA3598733EFBE725FCCA168986
-296ACE74EBDE74FF1850CEE5A169935EF0E725924F2D48F8C07A631A94D979A3
-A250BAF3C137AD1610DD0D9DD742E41EAA8D8B92FB7F52415CD5A45E1E89007E
-1682E34F69FF779107951EB8B2D9B2D815C2897ABCF117EA4CC9F7A8D87BCFCE
-410C0789CD1C6EE0C0DE1AF09FE11A02F4A324A9355AD85146E622D726995DB3
-52D6EC5BA1D6017F291FA57666A218EBD3BCA4B7D9488F5C97E5A6A4EB23EACF
-5975FF93173E806C2CFC279AE778615501532B53B14996A6D27156F497806664
-A670A695470571B09B01FACC0AF1EEBFDC527EC55188626ED70CC5EA82AF4D49
-B85677FC97E85201B2740E1FAF4996370686A0FDC40A16224527F212AEF775A5
-8657459D4194FD2AE5D360F21FEB98F974BE6A6559A2CD5234004C901FB68C17
-3DCAB1977BC678859A8AA831B24FDF95D9925324F4C3DE7C6593C36B3A255786
-D291EB042697B323B6E48EED39144609A8101D762CAB67396106CA42DF9B132E
-9DEBF3EC3948B949796DF2C017ECBE51EE50940EDE49BB18F4D03C2D8CBFCC31
-B00E81B1C926064CE3240256D3BE830F8619CDA6EF5DD68FF535BA837740201D
-70A453E521C3B795084BC69CFCB2ED488D5B6492F34EB7063135057F898DBE02
-EAE872BA77F73503963F0C33ED7E00B90F32108D1160682DDDCCF04796E094F1
-F66DE61CB07D71851171D29C00C47F642EDBC85B27D9A7454649283535A56FAA
-201D3FE2EEC5DAD5D64C77701F7234709AC1CB5BF37873A6578DC407A0551F34
-A1C06587B6C319574CA9CB4B4B01FB2FCFC9BE9D18882C138D9150F8490868D5
-7BE4457192CF699FEEAA2A8C458FC6A7102C1774A9079FDB50998359E6A8F3F3
-66BFA40F65889687DEF79CE235069E5CA7C13053E7E726C2F0EB1934B98CD3C2
-4139C6320995F88E624FB6AF2179094CD225DF90BBA1A9AE149DEE32ACA76B0D
-89E306A130774A11FCB0711D0C1D871BF8D56C00E88BFD6C68EFBB011C738E97
-5327ABE9F52F916B7E92A28E8BAE984938A6FC9984F655A98973D93F7718514E
-069F0F13664840DB822D724BF56F3D3016111620E4C6086E61E22737150CE75F
-9FF97D71A2F82AADCC7BDF9A6D386AEB56F02B40963ABFA81C50F9BE8EA78B6D
-B8AB5AE7EE670F59EEE8EE1C6EFB30AC457B8F300A8A891D68CE65F64ECC7321
-19AD6158887EB0055E9C3FBDCF18ED0ED4B8AA9A7444F6945961F1B43E69A4A3
-83BA61E4FE275CBAD512427B222B33ECA8B6CED39A216B19376AA56CB7983DCB
-8D25C7EC8234AAAB4DE41C60C22FAB5E9017F55674A1053918C7EA14F42C3F81
-2CD2B5D4D951BE0EDAE4FDAF981C31CA65714E2E95CF5F9386DA2BD3D75FC9DC
-8F94637566C50D6DCD9B278BDB43AA8A45CEB8C69B1646640DEBAB2F6A09BBA5
-2F4CBDF80B6C1E4F76C768324E54674CB16A9402716255355897FFF1E3200C25
-C4438CDCBB6E60242843383E75BCB25981FA9E33C1E85C77C6438161B9007506
-CBA3BF4BB65045BFABB62691EF0FFC0452877A15370F2930C340ECB109AD6F7C
-9BBCDFB4A0D6C7067F2909BBD45F3CF3F2811D3580BCE16020FFB6250D75CC6B
-9AFB9DF65AAC48348DC2CDC361239C1222E2F8796E934E863AC9078BCB1D1DA9
-A6C399D3C18DEF0E72EF2EDCB5B8A12CBB26FA110BBF66A788D229E8E5C74313
-59B17A0A6FFE1566E495B6F4A6D0CB6C2BCBCA4B32B1305C22B6875AF39F0A94
-4F16DAF977F12B3B9EC797D4D73FA5CCDF7891D06F9DFBB48248F4804DAA0356
-5D576093ED36D4AA120B5088A73FA861EBB7A8C9ACD181E15BB13D2D780B8BDC
-F730932195E691C79F1E52A1CC6F90A0D2856EBAF90BE4DFA660853E817969F8
-4829A96BF2F33A8CA3520C439D4A60A3EDCF8C91C9A06177BC867587548BA29F
-19E4CB7EC23833A187B0767F6666B972CDE89F4FF592E42E9CCB0E9B2A750A7C
-B931532A52D193FDC1F88CBA0FF97837BABFACACB0EEF99A4DDD81B673E75FD8
-2F45FBD4C2FD7270358E4E724A1DCE72900104A8DE00599A87AAD1148D49BF25
-B435917DB8C5801FA2E23769DAE88CC3D386B0BA16253C22F7E49BA636DE0C4B
-81B055003EADFC521AA7714340D07905DED8D1CEA42ACAE2C6EB84D1E2F8B4AD
-7191DF2A108AE08B570CE4776C5B5BD1EE35073F620BEFFCB8EEC31FC583EBA4
-B5F296A2D7CA15E88ACC893877AD3241B09134AD28BAA6E70ED08A436520901C
-49613473155FF43B6544B4E07ED1D1C300595675565FCB814FD5F97376B11B55
-497F1EE736ABA0357C108F88744190881E2724A06EDE2D17F044253BA4C6338F
-D5FFFEE33581507D34BB814936B54706EEDF4E225F662EFBCC613AEA23293979
-910BD6AFD473319CE9D42376F1B87DF7728C234242918A270B9E89B25C5B15A0
-D606021046F53AA79C2EB149226ECD789EB9A22B6CFA985BFD0870A61B1B6032
-6AFFD28682729599CF80FA34E38E1A824AD1CA281D665146E9CA8451A6B07DAB
-F05D7D8AB0907C0A8FA4C7081F421316F7B01EDEFBD136E1E50DE286A308E7B7
-F8B3AF6483D1058EA6D627263791D3E17A48C4B79DF95609F66FCF4F129C519D
-8CDF29F93C047BC5C48277F6F4F9F30352914815247493DB14C007D3EAD9C117
-F8470C65F5B533EA5C8CA60E0B9845AF71925FF85030B18052B5CD8622C914F7
-47BD64D5C3107783EDABFBE9CC0F4EF358153A9FC7E7CC82631C9991BB367B17
-BC3F48C76D6EFA68D67A03BED387D370EA4036C5D064545FA907E165C381386C
-EDB3B51C5274C53B7746DA5BF231A9EB5F5861071331691A96C9D4053ED78DAE
-E400353D291EABF92C7D40812E4418AD125C5799DBE2149370EB44ABAE366E56
-01CAF04E390379EF47086B54A0460A207A810698B45CA66127CF204E250A4B97
-CCB72B395B6419443CF7BEB054B36F63D6DDFB9693EC749F32D7D5CFFF8A4A93
-1E6B39B4E62203E50A9BBB88AD2A72B4EA1A0D69B0BC9A85D8FFCE379FFFA037
-754BD25F7DA01B647AB07DC3982B7BBAD4DA97E0E11134C68DB5453ADC3B4475
-B55243802B988BD8361D5C05FD0405989BF01BEA30E0313D45A1CFD4C7E24FDE
-FF9DF58A0BE83A1BA0557211F1394A24AAC909D2A205199FBBCC9C8BCDF0DC0C
-E5330ACB4DE8A89C3CBD99BAB2C6CCB1B3E4BD780D2F6AAAC5C15A29E899F89D
-5A589E6621EB4DC953E4E67905C751E4AD74A14DD029534B311D725EB5F1A1C2
-F6530E7090D545AD4DBC85A2DCD4F33BA4E3B3FF4F2ED77F83E94C0AA2A72D52
-A37E13849843288250C20D62762569292C45A12348DA855065EB6F9248057D82
-36FCA9B863A59C73D8CD5884CDB68E9EB3F1DBDEC5136683656659406AEAD8C9
-E73942D0D7E28F1EC6970F625AB99F993E5BFF95
+08911D3CC25B783103E4A26EFDD866414ED5F0DD28A4BBECD38DAFA3F6719584
+41085A247E4D927532D5F8146333FAF9EFA9194E1AD92E49F360A9D82DAF600B
+2F9977F75FDD809C155CFD9540F40E3918B5F87E4A80DC5FF5BE96991A2CC872
+3C6BF8604EF84B2A8DFAFA25AD0E5D539A57ED77E59C2A1D11BE79DBE7774828
+7874E7DB593866FB52EB9EF208B1E46AA05790245AC31BA19170D6CAC0596C79
+C53BAF12DA95057954A4CA2319941929B5B0DCD8BD916ED3ECFB3CBF210AB41F
+0E6F18A7994C298F99A28185DC59D34E5C4577A4B942FE46365E8A33642B62E1
+1A1CBAA3EC5B3C542F838271B21E1C76BAB425A2DE069536A307F583326AEB60
+C85CC65E4CC2B442EAA93406D100F0972C0295D6729A056C79DE2C9E43998988
+2235B0338DB2601751021B38C071F591FCE6F2B90799F1576B5FF61191A84BAD
+467973566F4F8B93A7CF0DF4131F0AB0E8C7B6C94760A63B70BBC1C25485AB23
+575C94704DCD2E2350DDD012DE794A02C701A572A2A3FC4AC7FF37AE3D9C4FB7
+472F8536D7028ADD104AABB6752F899BDA2A816ADCD456428B84190F4C3B4959
+4CED90907FDC966C7982762E2D5A6DD112030991930D9D83F5E6067EA9135F3E
+0AA314D3071F25AFE68B286B78A1E37A3B9BB8FCB45DD2CC989B5D773CA22C14
+1CB26FBFB12DE65D1427B3DC195E13B1842BC7D04D3F3DD49CC70EBBF4BFC7E0
+7E7527D53788EC37549B81E922CB1C4049B5DA94202A51282E3D91D5E75672AB
+68C0ADFB495C8DC32D810229B53F84641CDE6A769213AB68162FE2028E5A21A2
+48EC35CF9D9C7E43E52CA3BAC64382B16274E95122434F26738DDD95A87CD098
+5B4C09B839A3284818ECC730CB13B0ECE9DD47EFBB87CA55B41DBCC3B213B203
+C1D17E40FBA865336C2BAAA35F3BC391B19A4029B14C483CC006DD9D3F69BAD3
+8ED71EA51C2AC790D79C42E3863B1E3C9F864F94BE01343425BE7A3E51BBA828
+490235D4FE0805FB08B1CAC1FF636844E56080556E2DD9A02C7B226FA89FFA3D
+6C4118CBC59CC11FB0D2FFDC682E41B9DF2A830E900332F29E45E1E4A2278E56
+D25C7B213596AFF6A24C0720321D8FF6470C75B819CCFB5720ABFD92ABF996E7
+2458AD26D81AF14E380283F2079C2B83FE20583381D78CA6B3E85089E6F454D5
+88B570F4CE1D0800898ABEA7A287A96D5A3E869595036DD4D32D9A9FD0EEB821
+68A126A862EF64E2671C6F1CFB24D9F428314AD8E4AB0D604F2CAE0B1DB1DB39
+82045997066D28B26EE177BAF9236B60BE68FB5DB9339B8466D339A71F42B777
+BFF57B45D4CF77F8E9D5E471FD2D74FECBFF8645F0D98B4FC50BA7A8F6BE2995
+4A6102AD7F019CCA3E0BEEEF3BACE632C1E980E7B17D11CC800C812F1F7D7FC0
+FF5A0174BF8B4FEE90B5591D81190C8937642A0661780E4794BFF44740A30A80
+83DAB458196B93A209AC91272BA8087D6D3F21DFF0DDF1FCE3C4D99ACC0CBE51
+DDBEC7CE82F7EB344276F34D0B0C255207ECA6B9FB55F91B9B9B13AB0F486211
+E430A978179DF29BFD0EED4A0AD25E944DBDFCA92DF0DBEBDEE23C640A471E83
+BDE92BD027F8C1401464D7C955F88C71B17B84A616CA7E0B841B06C85CDE9691
+71D8C8E22150707B8C9F3D6D6DBB05095CFA679F39AABEF58BC6DE056E2A957C
+710CF025C0CAFF91C595650B11381D1F2C683A2CDFA5CC5CE0F684F60C345F48
+D12D41907E400CDA0B0B98E560FF61DF5E181046C83447C95F925174D7C6AB6F
+C3C50B3727AC9E248165E8D0F08B2891EBF00512E46CAE949F6BF29BAE092737
+BA279DA834CFBAF5E878AE5DDAE5C5A4B5BC1A7D0A8E8CE464D40627262B317B
+B73CA2FC1E25B468746A3F18CAA94F0852A50400DD6E500C6C159AB77EC54242
+BCD10E1EAD8782A82CDC80BFB3A54E9D214F2364FE02E60D7819FE61B100C6EB
+E4742E9DF337D968EC841616158BEB154220E6D70DCE13974E91BA496F82E1F7
+85BF0A214FA6F94DB5B5E401AC96AFDCA357ED753788E34401563D017DF1AA95
+8216EE30A834684F98670934C3CC99A21C94C0C83C63AA54619EE232353822D0
+A9532E2C75F89A1FAB69914C5C4802505DA154023A3337C9F67E37C80D1551CD
+64A642FD40BDF2E641C3DB6AC4BE6131ACD7F0301E938803E40DE2FC33992BBB
+CC8EE64948BF047CDCCE274960A1DEDB31CEAB07979DFEA289D8BE054630DC0B
+E67EC94E19254B135736FE40235ACB59EA9DFBC5105B65F1F666B0CB5DAE5888
+D142BC3747BECD156CB0707D7BE33BDB14FC4B184D0686306526B376F8F93063
+539970B8230CC8341D6C8B0B8C5B6979AD1E92FADC1C5F3523CA556E23FAEB28
+4A4ECC74138C7B8690BAE8D0A89DF70653E613B91CE572ACCD6604D576DA697C
+56CB644EB7C70C3D07AAC482183D2F401A6E2BAF3235322E3BBDA09157FDE8D4
+FC7333EF571DF9E30509CA222B30DF287A31FC67E7BBA74F2C90629C3544B19D
+F6F938830870C97FB19752F93B29403F044EF4953F91C53B88EFF9E6D0FE0687
+08285B38E000A762D7E5E15CCA9DB901BDBDA41E841004F08F30CB56E3DD2232
+C85A40CDD516DA4253237F1AA577D747053953518A92A287F569EE41A116A14D
+2084729EC88E46A34AAE1B537D28AB3C4D39BC0CBA02B368B577B3731111E0D3
+085494B55591D9E3449FC6A7C0F82B1BE38543F13479C1CA3EAE623BFFDE62DC
+432B40A46FA7BA8A582CD998544C4B33CDED6EC7F72479FCC42959FF7C37A3FB
+3A7072039D36958996551A71162AB480D433FF808327EC35DCEA1D01916BDA18
+5169EA26A83C5180BADA8B77B2C206E6624683B167A3A3B32D8695D7445A3594
+A26CD07A0179EDFCA89722C34BB2C3AA5B9B2A4350ACB500946ACB5B49D497C7
+B0AEE6B6079DF8C232CDE3E87CCA88B4282DF3895674D1E8136D9827E68D9378
+C7ADA1A896D11828EFF3FFF15A463EF16D3DF281DCB8976EB2C27022591A4887
+D120A214C54F95B9AFC44D434390B9A7F842C39B8DA499DDAA68587A6C2EDEFD
+E68EEA5BD32E93034C76F91FAACADB436BB88646A864D895F300A11ACF33C42A
+353F4ED281C2B7A260778DA76E7F1FF703C6D56EDBFCD9E986DE38646D50A590
+2991A338FA032BD94F974946DB743EBC203BDCAB1662B7D98B10EA440AE46F82
+5C66141620985485DD40979956633232EAE208DE3BE92D717316ADBEB1B769F8
+1F138DE8597556A87B22E41D70EAB31F11CAE7132D5B3C5E1F30F833DC43F9B1
+41AB7FC86F3F4BF4223566B6EA14C3A61E7D34AB6E6F217392A0BB4647248A26
+6C76FBA2FB028C81AB257998C07F48AB777E900647D11801378048E2E6565631
+81567E9B72CDE6EB67A9F63B5033FB6B9C7D505581C983C7664275CA3925E9D8
+F983E20A5233B5B3D03D23924FEDC0F98F6DF33E71D5D4FB00793E7C43342E35
+4E3981995B5392C30F396744FCA59F1818C51CAF479471104C20F13865D108C8
+F081BE06924587A6F722557A1A14C88958DBA63B6C77F1A13E7A78D6B7146722
+24A5517D63455778990D396B3912AE1C7B5825B7733C6E55888F48B5FB22834D
+F91370ABD35DBD0E75F7433A496E603E3D4DFEE8A4DC904C05C87225D9528BE4
+AECC14E53DFBE0937EF2D906523221187890E64410C75D788FC4AE3C17DC5179
+D60AB3EE1C1FC5155D7CB484BE2EDDAEC36609A96840863C55028A4D39FD4BA8
+87D44E76677E8673B32F6F85A3C48DAA7C7B2204060A164A3938FB25F3262241
+C972D1E1AAAF9319A7D23D9BA08A8FF901563D2CAD78C3243288DB2A23AC8821
+FF003D1E1BCACA8752251AA0826E05451EECE968F9A49A9C5EC0F0AD46675AFD
+6EE20DF8092FBF1070FB17D005A1B631509678F3B3E882E4AF291683F3DC6727
+D2460FD79D298ED4C806FC98D9DB3D1804A6895C60E125CB9C8545B801D0F505
+B40E16103E561B0521F9956A88CFC46FCB3B36FF3175538FD7CFC952E2004CF3
+48A3AED66858B74BDD85AB7D6B9BCDD3EBE921934AA82392471782CC03A47874
+97FC7DD1101C25B97458059A24BABBAB9EE6094D0669AFCF0CB0E273A4909CCF
+E1D350CF8D3069799152BB9011D564EAD62EF176E511EB534383DF1D19F35C6B
+8E6B1C0BA770472E61BBD0A2DA00707D16191A5487A1BF002D8DBD026FA7C851
+1D719CFE88EADB0586EECD8ACCB3EE032DDF6026C7E62DF9987E070533920373
+151DBCE3C04F654967322785A1BE80F6CE8C50D65E96863FD6CB4C31A652E6CE
+F38F03111CE36DCF9B6F64190CFBFCEA22FA8B5F6179E66B5994E5E9586ECC3C
+1ADCF916998760825BF12DE691AE296CC48078F1509ED765B15EC2ED8235ECC7
+D3DCCA5D5C9A27B7EE6FB3C78D79F6529A03C9D550759CA5F0BECD204EAB16DB
+BBD12D108D20706C1AC67858066C50BBA1576546AA606D37D8B12C0511A3EBB9
+63B7779CA5604A336A54A79C575C61045DD10F23D99D3877E522B194E7287614
+80CE0E298CABBDD40549F83CE46406D76CC07DD48384AF27ED808B7E3E2B81F8
+26C2749FF238F9C699BE79EA69965FA8A94B5A2875899D9F0FF72C78C753E5EC
+AD3458384E61C3E08524481794BD3DF2DC6206412C2DB9B86EE9155A4675F5FE
+2DC1FA09B754B9B7E3DA119C90C81430D5A533DC259D6516C3F8B992AB62632A
+5A6F475F3DB3E427B0570701E0D1AFF7B313FEBE0FC7322875CC45077C584337
+E3CBF4BBCE18EBCD14DADE1C1833190AA62EB62760A83AB78C60033071520FFB
+377CFE6CAFF3E7D8026DA92A15AD94981BB5D76CCA34FF1468E6BB02215FBDE4
+414C66D90152C9C8C780A373E01845F4D4FB9A7D2A97DC733FA59A581753EEB4
+5722708135F548BB4FBD2DD37C55E2F8D4C65AEBB300F2B05223C00AB304317A
+A803C7DC09C8CD1B23CDCDDC0F7E648B8142E46E908FE3CFE25A5C075FFB423D
+EE946A9BED61843F22A7231E737E1FB265E14C02776F35DA5D3BC36B8E6652C9
+E1944550950DC924F3030B4CD1FCEF2B5E6C0D9B58D34F7B2C29EF7139FF52AB
+498D5BA0CD55C9230B3B0CA266B790DE91869AC5B72577E4417B3F0D5D6A955E
+3E6A05B9444247ABB17AB3A288DBECF9C5B02BED7CA2D9F4A3A4F199E6D2922B
+5CCD025DB0D298BF97E5345AA680FD0023EC3F81DE7221AEBEC1770569D79EAC
+32C16379367AAACB56FCFB5F47CF47B780AD679CC8A9C305DD7A127EF0B394A5
+7E3159F1052C191D28FACD28D2F36B05DD0DB0644D8899048E6C5DD483C0127D
+1C006F9F9DFEC711EC89DD688BFABDA31A73300BFAAF90663FF84C5790B946C9
+452676F40D5F45354722CB1F740FD35010C27AD9121C3420BE66D784330207B2
+73C58EBAEB5A8304F71C295B2DE803B4A93EA1860EFDB160B3DB61E9D7708E7F
+140F356A0D6A3DC8486F81F4E9A4E1213FB75FD7497E7DB56100B54A55F37535
+6AC2C091DF7A03AB38A2DD24B0247A650A00E6669B0A078FEEBD54614CAA4ABC
+B05C7E2594EE85BA03FD8AAFB2C43536A26555564C275BCFFE7483B43E81F7AC
+36ED7A0991B7F8218D8F678F31930D7C600B9A47CCD790A6AD9C99D16518D3F7
+18D42268284097143E87D60D28BAA05BA9C9FA47DB0E3DA798ACA86E543BA2BF
+CA5E5F6730FAD3E1B1051F0718737F080A495BC91CE0E7774C442E66E331D09A
+73AFE0AC77DA38AD86A40FFABDF49BAD8AC91D7C31564233D7A9DDA0D9D27885
+AB92C4D2D3B14647C93511F6565BC1D4F03853283729C428F94703BC319C4FA5
+1478B61DE751E27380CC1076BFED2A8B31208F1BEB659C971DA6393CF0B0B33E
+282F93B0A501955378E7B546E6AEE13120661FE7C07491BABB7313557E4E5F29
+7B84CAB3F7370B935AB0AF27963DC6F60C8B2A0DD1E04C9E8911068ABDCD2E9C
+20EBCF58C5F2773B33D2AF4C4F122C5BF9321568076283A5F05B3FD2B16709D9
+C4FD911FDA67C7AA06B91D853F1858EF9660B5ADCD7B06DD0C8C1A12FC175735
+149BF9DFCEECD8D88FDDA94042F7FBA95E874E94A6C5AAAD3E0EA0DF13D6273A
+89CE6513EA5853E7875D15FD022E068E1392B894934685EFEBB9BE1490FE7A82
+67530BD9DDD43ACCF80E748EBB4DEB353D374B2DEB72EAD86466AE0CA235375B
+5FB1AC039FFF57B63EA537B36174E9A050DB70933BD05CD41AD49C0D04A2F313
+4063DAD445A5C612B82DADC6DC11D25CE9FA92ECB56D5F429AF2757F02EC689B
+DFB7464AB8A0CD8B72051F4A98614F4A6E7B15D43672EF5C33CA26E160DD5520
+25BF588577C2236D0D630DD0421B1ECA4CC007D0E64615095950020CDAD9D4DA
+8CE4661D24724C0AC0144A4889098FDAC337BD7C78B0F388A13F8137D2F18A53
+B0B0D8EC066FEDD8C8D54DD2135C3370F0FCABE024EB99AFAC70BDCDBE6BFC5D
+E23ABBE768E53E0DF8D7079B7DDE2442D730C0475C9A4048CF99E1C56728D565
+75A1F64281D14101D695E7DD5FA48C62C0B9B7827FC1854C021FE3CE870F70D5
+19535DCDBBBFCFE327F2A6CC7481AE53370FC08B62D8EC664DDF4B504D02502B
+042F9CEFDA8AF24B738FD3DFD34C9C692F9CB6342D8E8DA3B2A06108EC870531
+A8D1D62B7B7F097E9B2A5775E53173FF538056B03E9C875621AC4EE5EE9C4C21
+18A1906C61159D55BB7C7D109778F428F3DEEE1122469AAF9732718ADCDF9908
+253F74EAD450B68885AA57C5FFA0EB6F6B2EB891971B02FA7EC7C7203F298E31
+3A08A0B5180DFB10B34B66050F62463DE3C014E19D0398A72FDC11BE4EE00943
+36F6CB5C529EE3A19110D10823FE02D4EA5BE365EEFC18F3ECAD3E1101D8CE3D
+5AD44613CFEF9580C1D7FA9EDA7BDCD6155CE8EC6BE79D091AEF19BB89A13AFF
+388C26B70CF3758F86A76C3450844D46520AB16D01BC5F3915109D9BD1F78A64
+BE20556F5DCEFF847841F8365DB7EF06AFBBAB728190E616FB7D9370AA735490
+5C4B4409F3E34BE564FA88D1331CCC1A00BE9E8E186A5D0F1DCCD426B79A7F4D
+C39BD19AFA9C79B3B7A28C24A209D94F666C5837523BFD7D38E59D11E7F48560
+0FBABB5C610DBAE63D2E67A1F926EF4F5462D98D1405A431DB22C9DBC80F67B9
+01A819E3EDB22AC7D1FC748590CD9203F906445788D8820927BCDF1E0ABE204B
+E2A8B6755A17EF844DCA99F4738B26CBA284268675929583B8468A2C3DE9A5DB
+F366EA0C576BB7E10036CBCF86B0C3494228E10FDFDD59A0435E538BA79701E4
+8AA53871869180B0B060151A8F420656E0E2792637E832ED93D8532DC0814CDB
+6D7C7F53701ACE45AE294AC19EB97B5CDF5BCB1D865E62E4D9D1A151CB5970AD
+AFF87E1FC03853EE466390B597C0F6CF149EF9EFB42819CEC8092F67BB50237A
+C2868C36D72BCF0822E093E065635845D604B77C4E4C161DF0239FEE4BDC037F
+58007CE77A3CAB67AE631F29D4ED764A0A126976BB2194A666CF2BA5CA3EBF33
+D37FED40519A3E19DF4F9241F813DC9A555F38E7AF608C046D1C96A9C6DE6645
+B9627D4CFF084A3CF1254749F51B4961B2BCD29271E1A02E0E5B86EE509E8C8F
+26512D8AB22C4C5B6074AE577B86B478ED8291B136AF6113D671FACDC0023ED5
+D574D04A4AD74880707C20645A55F4AB5810ABC0B525F775B125EB7616E7831D
+0360648390D937542BE61662997C487419FFC9BE74D8F4A5DDC9699374D3AE30
+BC0F4E70EC08AAF807F67B1C68D70338093D09F17D2E8D008266C4368409E90E
+6E955E7B935BF5AB28065FE513342CB3A796BEE60F5E48958EE41C0471860EEE
+640C261E37316813473F9BA9200EDFBDFA496BF22ACFDDA70EADFFE257F89B67
+81A55A999CFB3B72F4ECD44E7B6ECB71AB3CF7AC777EA9834CE2998BBA2F8016
+4D3961B8729A4AAED8FAC6FE5EAE5C8DC097359B8C809CBE4B8B69F883CDB26E
+CDF480AE18E65B273B456FD582AA004C076CFFCC6978412CF2FA30142F2713B5
+3A605BA2E3546C4D5D29EF6190E7371F91C2399830369A1CA08592830A62901F
+195A6E57C031BDC678AD05BD31DB2852D817E730821F7FFE13510D698DBAE0E2
+DB801C9ABC5A8EA00F6115F7C9E8317676373F4AA7AECFBE35A1198E32261131
+B5A92F0575A7D965E47BED65E809941F01BA86AE154176FD50164ED22106C802
+5FACDE0EB8D4105EABC0D4638C2F7BBE1C52BC16809B88D982E560C76174DED1
+F313DC7E2D2EE61627D1454934720E54112AF367538A974809E77F7769A30346
+131F149A3FB0682A830E98BB734B67D22C44D06EAAE521B86FD1470471FF2AED
+2305E56B51B61E6B5610FA7B9C6502542B57674F427AD1665EEA2C13ED1A2814
+6C3A1CE2E7E72A0138D9FD8E66156B6907463A8CD97D90991EDCF3137D6BCD8B
+FEEE5C123BAC02289A9308FCB1EA87B4E1D59BB2B06B340B07349AB0C9FAAD7B
+8C480646AB2DD634F028940E0948045D1C694BBF3E5F3B8C83A385A916876DC6
+866551F7635EC87D928A77109804283F8B9A0920C8BD4C968BE08992C7936D2F
+A60435B048A297E10E682E8071327B524F8EEEBDF25DE72884F4E22920322871
+0283BC9D7357E12394AD82ECC92D3F3763B54FE60317B14DD2909F85218BFB34
+A56F1AF75039C022BE26AE2EF3C0CB4F6574BE90466044962071B54B411B6B13
+BC0F61CC32C5249D0517CC284C5D6E50A3AB40D7F46B6B8A610DD2E0A3E1066E
+C850EAFD33533576CDE5B73A2E2C8840C942A533F3E493F0E2C98D5CA5F13297
+9B8C8D5E5D90F8F3E733655FDF3F3A3E346DB306747F2CD5D1CEA31B1EE35835
+D433491B4A3FD5541E1A33448DC2B2256C3A907833D267438B317D3CAB959803
+E2C798F04D3AA06895FBECEFD238E25AC022803B5A9FC1F380ED13A023A802C0
+DE9AD218C0E1855E576DCE2F7941F4932FC5450B18B964FBA4E17E48C6532DA5
+B186659BBAC3FA7FB1A03A969EC8B017849E52ED063327AA8CA72520681D522E
+E0879CE48937AB3E65CC6FD76E56D4DFCADF695D4D869EF72F184F92BB0499B8
+30BAD65908C067BEB7A28344A595DCBEA133EA821873BCA95D26BEF5B5BB14C1
+A1
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -3759,7 +3245,6 @@
 dup 51 /three put
 dup 52 /four put
 dup 53 /five put
-dup 54 /six put
 dup 65 /A put
 dup 67 /C put
 dup 68 /D put
@@ -3785,7 +3270,6 @@
 dup 115 /s put
 dup 116 /t put
 dup 117 /u put
-dup 120 /x put
 readonly def
 /FontBBox{-53 -251 1139 750}readonly def
 currentdict end
@@ -3816,165 +3300,154 @@
 0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6
 472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E
 A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26
-35FD4F5CD7C10D1AA982C30AF9DC9B3B22747B32FDE22742D5E370BF56DBB99E
-43F1ED8DB32DCA5995A24ED64B47DFCC63742DBE5F02F769D2C65ADC78730E10
-735FD6FEAA5D24044B6F8D1A114634BFDFB52020BA2A90461925EADBAC1FF4E2
-FFD8DE1AF359FB85747DDDBDF4577ACFE6254ED56BF78CDA007E0380A3CD8BDF
-B73FD2AD6AC46F6233592DD1CA06DACA2DFA63445C4EC9599489FE090FEE40EE
-9A9AA43E56E92B76926884F909F6A38DEDA3A1562F474CA2051A4E35146543AB
-78A34D8F917CE2D93A4A9D51B55DD2C9586F3949343090282988E8E0A7CF5651
-BD91EEF0DD71C6B1F4B0A9B21FC047729912FDB7DB8DB1E3331BC00A7D9A5AC6
-904B6B861202CD189A7EF310A9CA1D1488E189CC8E677A7287F841285C289DF7
-24021EC39B9E948C791233F3F74935B03EEEBD89C24C97717CB42E7668A399EF
-A6D8363F0AD023B7801C50BCBB28BAA7D6002DCF1BFA0AD0303D8837BC034D06
-E15989DA4D82AC30CBBEC5B66657C47EA427CD5CD9591C478678306ED9FFAC2E
-84B4BF48B6A089D1CDE2CA10EEE191FF2A3727A230E8FFF74C48C2706F2B41FE
-1D985B7B54676E411E75FC00DE787090BF39C49019CA771ED796C700074F2F35
-793DE3C19CF5E2AF8BBFE8835614D166E1E26AEF6B37C8E82BEFB1B1D76A1A91
-DA27EB887BF9E301DF919A020F6466A9DFD55BF35521F270349ADCCD13956957
-4EDE2D1F89116EBCE2A21193D14E70908CE9765BEDC3C5F1391D72B506AF153C
-DB2564BAAE504A9F406F551769D71E2F0DA7FB37A80936923A7A213DD8F539C6
-5AE1F1E880C7B3AAC75C5987407F41C1F3B67AF3AD2BA8553F7ED0C9504CE206
-F77B4FF91E65710F4DA0A1D278D27FF96A8466143D64D9173E511B1B1E96B671
-8610881E7933C4551AF61182A587D674848C85D49CEF70FBE50738C4D48A70EB
-1CAB00C5F13C6754CCC0C5ACD371D678AA03B4C05A096A0427F0575FA36EDBCF
-715AAAC454D71461165521C3400A2D91EBD54165EAAC6E12B9D841FFFD1E215A
-BC9A8E32423D86A01EEC7A28EE8D0F40242F543BA71657258A20BC85E5ABADA8
-42EBE6C015E5DB95CC683B5C41B531239C7A56DDBE46A563E42DA62FCABB22F0
-244F28194D98AFF1DA9F0147C43635488CDA4401BD3B31E1828846390F047D18
-34DAEF7E8E61B5FF5E3B5357EF93C1D5EF16B5556990ECB5E0D2967D4C6424C5
-2C8C5AE029850E5EC1B97DBCCDF0BC1ED1371BB087367342EDC2E2DF6469698A
-3C82B8ABECB9C1DC37E58625B9F76B2FAAF811460B93ED6EBAC7259DBDF4A008
-A2BB38416E43B5E6032364007AF9E4CB2FDC437697BDBC43C67AF4C2F8BC0E25
-0C5669D208D18F446D80FF4DED076E03F99D4959D5DC9A99C2F46823CE81B1F2
-0379B1641CDADF0D07CD6FD4AF25D2DC31A7864E797AB425269C0ADFAC8E8DDA
-E486515200DAFC454A5327D6B4B90CC16E30A6031A4D3F65A1E8A3BD89C21D68
-AF708831DF1343AE2A88A857AB60236B0033CB3712B4DD04563C51D992B3E563
-97DFC9834D4BFBCB4D210D91DC12F8ED66BEE657398C08D1B1724F06A480D23E
-6249FD708E1C4A0DF706681410BD20C29CBC89B276B90693F9139AF5671F4929
-017DAB8BC68131AB77231A8FABEF37F76FDB7FCE5000D7DEC185575FD8812FD3
-0A0BD9A4132BDFD986CF6331D235D4543EA704A3B5961C378A25541B9A1A8C3C
-944A10ABD89A0CC72FA7AB2EA4DB49E97E346615566A67732E38AA4299932E12
-E3606ABE3D2B2FA42C392DF6D9BBAC6CD51DF6AA2825C07779769CFAEDDEB706
-70ECE0B7209FBCEC3CDB71CEFAD3D220B53401FA69E5892B8B45CB24BBFC17A6
-7B0E316DE23B798F5B8BA07A6469117A3D5D6F0DBE971FAC0B52AA859250E157
-CC758C5C634E88474BDF5ED2B1E83DAB5DC4B7C0DA10D5D471083CC88F7696EC
-F4A9AF2A98206F1346A5F70BB6CACF654D2D9305D62E6A0EBAF22B833A4DA713
-E6F3ED176E47B1AE8C5594BD4A261323CF199C7C3A2E4E1964CA0219D3720A3A
-F753E7FFDC756BE5376486E1F0AEB9897A6065356586D218E2029575BE1780BE
-EED6B40B6EFAEBC77BBAD1D369010193A671BE12B9013AF4887BE21C7126C402
-6BEF1CF6EC3C7E0D02B2B1DFB577CBB5D9CE3236DED0B9CC01ED63928C0F540B
-15352F0ABDA3CEB33EB4E103F6FC7350A2494D71FEFF4143B870AE10CDEC3165
-BEDF382B6C10BD8EF0DEE3A55EFA86338492EA37891AF075617FC3E8F5079AB8
-9C7599F2C068961FA3BDBCA7298620E5352661B907B2D7144D6EBCCA6DC3E089
-35D8666F473B72BD7E7BDF0D8073458BEC15F1F6634DF1EC24A9EA8B07F8FF5C
-BF1EB93F18E14186815E8BAC357834665DC3E9F9D76FCAF72D5085E9C35A1546
-8B927AE0AF1A392B094A31E4126AEA7F75E4ACAB9B1925D8557D54A329F4ABFF
-20F8D2AAFC79BD7BF72FCECCED5761748372365C33A263CA1574E4EA87B421EF
-14EFA629D9E5FDDCEA399FDBAA7AFA14F867A5E8AD9EE7046D91E54A428FBC08
-EA946A6CE7D73694ACA1FC67B2F67BBA97AB58C528AACFD57C4A5AC802579EFA
-43A8B8A99AA542E8A2471609D02BEB92F2E51AF04E8DD61D20F938ED4C950A8F
-C466C0EA769EB8B46E265B06B543CA171395EAC0CA72ABE5E62DCA0440E4540F
-019933F59008DE51DD9271C81B395191DEF59AD97FCC60CC93E59FC126310D01
-A29457A1AAACAE19F91368387050BF7129AAAA6613C4829460B65E64C138A069
-2FCD5E0559A5A3AB1924D4FB22F3F5CA1519831F4E41C87678EFD2FA3CF3B335
-266BB07B6D5CF82D3D547BD9020DBE2BDEEEDE61F6FCDD35F896B63E7B1CB104
-C7D488B99B4A5643E1546AFD096C183098D7ACEEFFF84BE9F2FD02F98F90671F
-12A5CCB20A0A1269221280F8DF3CC33455AB3A8DC32380335F8E3E75D0DE1A1A
-83E4A7E7BFAA59BD0090F034C9FED7DC2E8C66814276FC99E6378E7BB0FF38BB
-B5A81DA91AB6474A4DC9A0E4FEB313FA885AB1E9BFBE8198417C5EEF90DDCE55
-453B3B153F4B8DB73683117B6C484D098F57B6DCA65E4C59C8B7050B080DB465
-1D07039B35DF1B3A8A4DC98A77F29DE13978D1854C4B73E8BB973AB40A4A38AE
-9325911E222702054C90DD14FB3B61289FFEDD6744F1E721A57F77D824838D9E
-333EBADED37D76CCF63CD736E5831E9C7D51EE570A8C9AD9717EEA95D42143A0
-048816FA23FAE10C54898998525AC14CD811B0765E6E658879AE7080FFB20D30
-9EAF2D838B3F1D96D51590A2A0F5D484F7548E33C549237576D5D82BC256D925
-E1138FE09B87FCB7540B3E2187FE2DE58D8FDAED0D75651C9BC188BACC56AB5B
-E7C7496C553B7714383ED3E70D6B92F14B05E26B6B0274E44C53C6A84B61CF22
-9273BF78466892B242F58AAA92C038E13258F3C2F9A57098B605C885991025CF
-9BBD909A6F93DB0DE07FBBEBAFC9CB1A87A6A6773A5A5FC417B9F31595750E60
-B50DC0A5CAECFE62543F59E96F51B0D338B7A0C44358C650553B296883CC573B
-C2DD43BC846EB197E852194A2C9835750D6524D63294BF6F4FD3CAE8D1EA16EF
-834B6801D1B081A56E405EE80900D0F6DC00E7800C396DFF63676EACD908608E
-4DDA1DC3A800B63E1368677A2B5EFD2530917BA1539BE6C648CFE0C2244FCC43
-2C1739FBFC39FC2E50875425BC64605B1FB6C37357AE11BEB8E499604036F51B
-52457B6FB29A9126838DFA068EC9D01FE8E69F113F57DC8BC3B52DE2A35CD032
-56F1096B6ACA46DF36F8CE45AEA357C1B7F6FA8AC3C4AA760BAF57B5128D6438
-21EF83DFED26E4144E16AEF1B841CA546B2C54A4EDACDD6D5EC5A6A4642A1955
-65313193EA7C499B168CE70EF13538C30C94DBE6F86FF103029A3A7CA8E0B5B8
-2D6B7B777FE1DBFB279B5E855E19FF08275FEA6A3B9A9D8E719D59CF7D3E151D
-63AC8B3436F913478D7B8E3EA85D7B73FE0DABB9D1EFE917580E2E6B6BC0EFF3
-9444C157805BAB4B00499C528476B2AEA8A98CF4A2530AEFF169786F9BF30B93
-DFD7CF3557CABB61280718C432D1EF9A4FE963B4DC8409B5B38852837ED1C01D
-E6C05FC403E99A5ED5F13E889173C17276142F20F2AA3D8F141BB5C460B41D19
-83C93DD5912F6DD150BDCDDEFC4A27B1A3764FF654FBF0A8CC9EA73F4EA270E4
-A0B7BA521AB41F8869826DF7F22074521F50F53690AD3321ABD7F5EF49545053
-F7F90E8940DF878A9308F5941680A25BD1119B2D003C02E9E271774334D6022B
-64F2A995C5EFA8AA8BF1D6E0BBEDCD698D6781E1C675E632EF7D6070EBD3A0EE
-DB0AA291E350EB1F221354CDB9B8536C2978FE6BB3B0BD6DA6B0B91EE683F6CA
-4621352BDABAEA6CC90B9FD9E94EAFB05E61B62DB5484748A7FF0D83E448DDB8
-9400308AD834C46502D605EB7E08FB5A2671E3FBEBA766CDCADA8B79A3CABB98
-195C456B136E92519068067BDEFD98F4FE4C4AD4294D5176AFCA73439EF93B03
-0BD966E6F1B2BE3B22373CDB626BBDBA1F17A78FF0900BE60BE4D5D39C4B8DE1
-686582842A732094E2F5B09D0E4C20849B103C8F2BE7DE926E5EB9280932336C
-845D9BE95F2C2A36AC3B309786A280A319070DA1FAAC6AD63F4F07971D85C474
-6897955C270CAE919F09E95E3F8C619409D01DDEC5EAB8B8C9CD1C23DB2AEA3C
-FD0E2A2BDECB96389BF0C426D9FD37ABE5F42B1E2C16D9FAD4CA60DA27078937
-108979AB5635BBD83A85AA1FA53ED7AE4E9F62836A405A47FDBB9EE9139E7EE9
-CFD7BE1F069EAC13181C205A4F31E84010727738E1AE9346B013B041DA251787
-DE232006A566ED887AC0DFC66D225FB30056A32BFF52E424F0FB5E7DE74D730A
-3B52A096A0C2C7C88ABE8487245DF995189031D2B83591B41312463C1BCA542F
-CB58F26B6C9C8E33DE5D46178F42B11B09C327B977D9BBF12D84F92C30B4F87D
-A2D656668ED80AA24DE48F60620E6FF319B2D033F228F7819BFB94461CB3D628
-FE05EF240D0A758752C0B841607140C1D8D4469AD4AB47E66B817B2D28115BE1
-57A82769E9530206EFAC4008C66DA918175ADEF5D862D10D0A27145B651053E7
-15042E5E68F771EE1C84B147FACCDD9CB249FD2505EBB3D3CA589A3E7B05E10D
-3EF0E7C2E5C620E68DF375AE4592FAAE964DB394B969ADE73CF9338AF65AA5AC
-04522F0F7054F7868CF38A54FDBC40F85E7804977E5D950F5AD1A2F66EC24608
-A685183DA6AFAAE7CF28B185EFF8F1A26814605CE4D223FD2CB6A079EB5CF7E5
-078E0AA5109C87B3EDCB1383ED7D3E47ED9C30D2AD85F150B9186B609A3DB4CF
-F79FA7BB093B8A243A5ADDD14DB4CCD8BEF6A53FEEE0FA9D300C0EFE06D7BA3F
-BC30F0F22CDE2C36F349A18759F88C7884AEEE21D06D7C02BCF93B3CD17CF374
-9C8C80FF0F29A954485ADCACFC9C45C86147CA65FC34D79161CB7C106711727F
-635D38DC5083506135238A4E750E63DED93E6935D4EB75CC149E6BC3973CF5E1
-60D4C9E8B5DC4F0A4E5B1A4910AC3AD727AA2A27DB3FB5A49A2829149A17B7EE
-AB7FC2C2B9F3E503BBDBDDD7F10BA1A12A2CB61408A23B7379FABB11624DD883
-7364AF01A37017F7D20C4DD20A32CAE20EC709972794AF7426F8CD5A92F68DD3
-C676872ED2CFC73AD91F207A355462923209B449ADDEA984CE93ED30BEBDDFBB
-EA514B2859CB8E6BEA3C259BE25E0E78B2373FD115D2DCB7DBFE1E9B967385F2
-3F784D96F6F9C6A6925BA7054E18F1753855BE9FC4390CE2A394A39E278DEF45
-5B26188A7B28F935FEF2EEEE809BA40250E17BF843E5694007C89010E24889F9
-761BB4D1FC3EDA64295F97AB77D916B02EA4BA866FE2AB03D7A0ACC59DF414DA
-8D3BAF84A16EAE1B42302A21EDC4D8AF38990B936086B399161DBDEA44CCBA44
-3DB4F66F20BDF07C9B28EFAD710186C241F716A69ACD6BBB2EA238B94A0002FB
-DA0B80801918F6E3E12A57E836614703B1D42DB35F27862E58B7CF4233B01288
-2AB48AE700C299C9DFFBA0060C07ACB8AC57031B3E853901844E63BFCB4698E4
-D1C01886850B615E42706FCC15C0A4326C26B78AAD1AA1A2DE32C655761E9E82
-E36EF7DEF7C11BA1D2FBD3085D0C79869C93775622B97BFFA8C88EC793F730C2
-3C7EDEBA218E2616F47448DA23E4B750DFD15D53A1809915EABF8953DC152B2C
-8126931CFA112E100F5F5196918A29C0BBE0D9B57B5311E408BAF5D4F69B22D4
-3330D936A375A7381E6E26166FEB108E719AACA906CF0564A621D5538F88DE5B
-EA8174D416DF5A5E4D6FF766229F6B2A13F6C99A3B813E30EC46BEF614BF7A4C
-88ECB0DE5324D806F63D755D73E000002CA833995AE1CC35951D363EB591A751
-C282B4BA536F4E5E475F32C669F2B40B30E133975A1B066B6F2E9DCCC4394E44
-0D6D73A5A1182BC6633D837432B54998EBC1B7C78F2C97ADCB68DE357609D018
-5DBFF60A15EDEC18AC62C6AF4B9084F6BD2805A3F1295BF9573F03D5F2717F49
-00E086F6E7948EFCD3F1329B874321FEB824E2757ED18DC8DB2CF6E4EC87C36B
-D9969FC3AE3040C0E7CA7B1D0FFE77F45503A52601C1FF22A88F7BFE87CDA6C8
-7F2010682A9D47D020584E1B0589CB3506F30AF338B24512DB82BBC543AA2F61
-7B3A2DF6F0F38BCBEC9CB8E514BC9EA0BE85BA65164EF438DFF8BF8431C04CF6
-EA6BCD20057E86DF0E2DBFB15FB2E8BCD11EDECC2EF55529CB9B8792DE210381
-089B90C19B117BF2B88E5FCA492BFE546D7515C25264DAD4C0C45F6483DCC05F
-5BAE731326420411E7F5773E673CB9A9A84DDC1899CA896F55486C096A4670B5
-633F76A24947654B465E65B1144F3D661B98F7BA2470154DE081588962BD16D4
-94FFDFAE48DC3CF727FED78C56419C328BDCD30FFA2BA50EFB2648D66A1518CA
-FCDE32B5626DF79E03BD7AFCC4EDCA05E2A4F17B7836810E11DD44BC14D48A98
-028A15A853DAFCC4DF862E08AA1C8423DB1EE1C6A5BBE90EAFA8BD72981E0A68
-8B687C155294491941DB5E05FABB7BA957701B448E92BF377DBE7FD6AF56EEB2
-8ABADA2FDDDC6105DC2EE8193D579DA71B2AE335A408C84258813B7F48512E3F
-F26232E759F5566E0B1A65ADB1D98EF2C1E699564E4E8808BDFFF17D2993C536
-FBFFE327AE60F81AEA77CDF2DB327BA884B72EBF28677A5767C74A359DBF2D4A
-5E5B86A99905B95B8A774189B89046BA78B484788DF8
+35FBF325BF62458E39F193E4A10E361FAC3954FEC14A8679D73A7063D5DDD4EA
+8F548856722326C91506873DCDCF0CC5997B377CF36D037A057B260D89EB1E9A
+D7D9A58B237F397341116E4D38A047E459420FB72A765A81917CC32A2A5527FA
+243CABC0E3AA8B8477353A6DB11D04D5FEE6DD4C55138441EA1EA68EE8550510
+0EEE0BDBC75658460BED750BE431B2BAB128513BE0C24D5C4A457F48FBEA8CA7
+69687ABED21BFE933C07B22E4E789C7558A7998FD1B0F9AFAB37AAEEB779C380
+B744261F4E926F58130AE6A0354FC1CF70470D8E1011385D32ACF10A6C4FBC41
+C07C845137D5775C14478C94D8E85E8C293F60DC9A484A96EA2C8A154A1779D7
+7C1353CEB567E0B668FA2E4DF43989497932E19335E291A9B269A177EBF003D5
+3BF2B73E0E6ED42A9810770501159C98335EA39118AF39874F06C53C487BD4E2
+1B588FB8B293694377F9DD2EE8C64A25AAFF32ECDE48D37E456981131A2CDE23
+02B8EFAAAFC28AE1B607EB85BE6BA575FC45AF17AFE385C7D767EFEAAE9694FC
+DBD7B6275D8F2E76EEFC164909B85FEEBE1AA5DDC2F965209C8FF07D951A10D7
+4DB9F497B9848A4A52DF00E6682E93D7CEDA073B35DCFF19FCB19F6605338421
+EDEC20DEEB55E91EDE37FB8938DFCB05261C3289E50D944763B6F87EA204DCDA
+46C435EA512002ACD35114E4BCD453479F1081FD80D3E4213CA726EAE80535BD
+D2E5084C5815EE9C3B2A0B58348014FBF7175E58AEE7320E3C283E97E91FC148
+D9CF4524BA51337B041EE1B66FFA8B9642A638B5E4C1879996B4E626549AFF8E
+A7006965B4CA494592E7561BF5983F193D4CD52430E29BA574CA281168CA7C2F
+7AAAE2C30C31EAA141087C46723B396345776CE4B40FF60832BEDA8B14A24074
+6A9C1900B7CC842E775D97D792A7710C008F4F92ABEE0CEF61472EAF40EA4A9E
+B07A083E7DADFF16F7ADAAFB1E24B1804444AD3AADA43547B7E6D5DE77D0754D
+3A6670574CE430905F622D0C15C82A40A264CDDA2F0723D69C4F8FA64831189C
+59591DD4DFCCBEA66F1849FEC8AC1B5DA22F72C9FB8C3D05CACE303631AF9D78
+2DE52A05A5186FB3A80672DA01223C1F443836BCB004A771CC3D75D0F97DF824
+24D56883525CA3925CD452F6E426DDB6FB79D67197126BA29A12CC14587BCA47
+AB9A7C7A4634A2248BFB972E48BA7A8AE9190AF1D26FB515F3EEE117CD50B514
+E39918133464A359C3C215895B29B1F43A25A983CA427F8A2A11C83B88A3F35E
+C0343E24988D21AC0CF2C38894B01821DC121ED03863F489FC3A4FA01C9FE082
+18E0FE3DA76E7DE983EAA6543E4C93A3A9EDBE11798DDBBD7521DCF0481813DA
+3A505C12324768BC6DD5C2167A399486E32B6CC15CEAE9DD103A01A2B4324BD5
+9A5F9D95CC2339B880A719758BE9A3220FD48539B4A333E6E2A0818AD836B66A
+9DBBD343F104952522158433E717A82BC6BA69170C8854BC7964E39A794C84D5
+0A0316D050BC8616C951AE56BD08BBA4A305E8A9944D0494A182C2221015C738
+BA9810E5ED8DCB6FACA475FAE035C3F77D82DC5B6794C5653323AFA648B79B2E
+39770A1108BBDB293FDD6DEA2886B161396135D0FE52000D07EAFE2DF26A251F
+A04B3531756DD103DA1C63A635573E0825027091D81071A3219ECBADE63733FC
+B04CF07B363A569BDE999F277A7FA3973D0EF1EFDA43E01EA03987135DF6231F
+8C1971A0180D1574479CCFA94B4918C77A0E737CD7D446BCA3D11060D34191E9
+1DB5FC9818C1F913C4BDBFBE1B1EA6114DDCE03B8F8C12899BE8F3F007C985FB
+960287F7094CEC165E95C48A002F4B3E16F9F19280EA17BBE323DC2B0C7F30D3
+7170009D1EE895BD47E63A7AC053407818B28A1849DC60CA313D5D4347E25B39
+39DD51333FA23903F9F4EED2D60B17E7BF66C3F24031F2CD777B1390E66431B5
+7F932ACC4D482C7300B4110D66826ECA1FEDB4424D4CC37057FEBEB1ECC6B1C9
+6F77E84B8644E2F0674B6E94CE96D80293B4786D976E1F769E6086DE7294EDB9
+C23A0466BEB7700247E176A96F11664A1556C0514B36666B7B4A982C192066B8
+81DCAFA0383A027AFDC259BA20AA82A989D2CCA4B7C2162B2F0AAAD5DDB46046
+BA1FB9E23D1C74BEC8BBB0E27A2698AFB1BAD368A644B97EC3581B9F186ACA42
+A9FE7D43F65D3BD5628E314E5ACF89070A87F957D5C540EDEE8B666469D634A8
+B340CB97655064C43C15CD42B60E46ADA75A845173ED3DF1E1FB238391162BC4
+3A252725BA5E2635CBD36E251C410CF5B06ECF7E27A57542648EFCA95A24B96B
+F9C9FF7F663BFE64A189C70C7BD50B2AB40FF22D72595EBA8848AF37C106129E
+C7FBB62BB1583681D2283B0DB5F12A1BC3C520CADAAB1294C9FD1C74CED61761
+A29F99175D1409344F441DDEAF3C56BBDFFED18694B4EB2FCF44DEB5BEA67C44
+4E773808E85407226909515126314BC27955EDE540C67FF5A6083904AF3AB975
+6D04DC2015851C552A04139490BC6BEAF21F1EC65E7BA5BBBDFB0454C3F08EA4
+74447F8D478E3D0760410BCDC47170114524095A32C0E59B68ED41792ECCAB17
+577044471EA3D4824A2439AAA3B9C5AAE4D415C410005B36B328222DE37D0286
+32CCCA9BB96F8F629F5A0DBEBFBD564CE0177A81A9F02BF32C8E2358E4C56A05
+4261DD306247C3111C222498114407F9299F8C28E4D35ED2A5A1133579119BBB
+C2FAB41761E02D116305EF71C5020D7C68CA24407FA0CD448EE9DF5597FC22D2
+B296EA0A1D3E3A59D13D202524E333B4E1BBCB1CB727FCF427D76A91D79B34E7
+15F608F71FF2AC137DDC2C3188CDF8E55646F5058B9DA83B60744BB3E77519A9
+299B5B687FC68B6E7B653C4579C3D9D12DD722A8AC489DDA0A088ADC1B562487
+B968E79851382DFB7E5FF9CB4F032915DB0AC22B48ECAFE58C022BAF0F2FDFE3
+069178057C8BF098A722548759BED0D18AD834CE455FB6A5C68FE5B1B5E4D6A5
+537A9342D958FB754A4B053E1706A84EF748327E6424D52734984300D0E077D8
+54ADDA92A5FEF6FB0B38974866A68831F1446AEAA602A37C88A3BC96E3F3AF1A
+2996138A6B872AC4A450D57E01AB694F622FEEC81E9C41E772D3F6352208D448
+24D321C3AE119E2E150CFEE3CE0A847D6E27980590CBE39B3E1A0378C9EBD7C3
+02C1D2D5ACDA028EE5A540E1B0041D408944505B514DC01C768DB194A386C0D4
+E0E1E2D8A36E3E8868BA6C8C907E0133368AA8022C7333C0DB415474D5966D12
+CB1E33F6EC198DED54601CE3DFA4DC08D378FD12617711756B4389CA644C4BE0
+E9D1792910C69443C01C47BC7533F011BE6DBB4F720739618428E56562E250B0
+6D43C089C6C78B400E379CC12AA15BD0B028947E7CC8AF85B3F7DED6ADCB0158
+AAAE71579F6213450E3AE46986F72489CF5C69E3027D8A294DBAC07207A8382F
+5770F62A400DD0EBF98930427772AD632D0171E5598AA51429DAC052C7E739F8
+804728FB0E36F5487969EC4C3444B9048B9D46DD32391223BA0AB3AE8F2A9A02
+AA6F35429A52A755BBE0148C3448421BAD09896C5BE7DB96149396B0B94B3070
+BE09D44F2C57162F9850C42B9CBA31F76DD4D41ECF927A7C05B999423A7EFC9B
+F6FA0750E94AB2AB65B7B32774E019A25221CC9C6F3984DD3E5C0CF4E2355F1C
+5FAC3D8605529A4D04DB3109B29CECE27829C99182E6959F7620EEFDE491DF3F
+3850A6FAC7D0E64BDC62046A442C57FE2D580E104869B53CB8797FD19B878698
+0B5499518DD25032E7337067DA62CE8B60F2955946C800B7E0B5255E4A591A5A
+2C4CBE12C9B6E82919013C94C99EBA2F2EA24F72F95BF86023E72ABAC8D35E4F
+587DE2CFF61AB6C74E60986F7F6C30546984AD6DBF5D675F7009AF570648000C
+E6C8100E9620910BDD2A09C3E47C895D50288FB2DDF0FFF5AF4B0712755C5520
+F9B2CDA54D09D2C741257FBF2DFAEA3276C54FC0FA912D1E592FFACC99EAA388
+AEB353502840946CF597904A4B31CA18FB2DC3260C9E440AB2C24DB3049D5040
+0740A3307A2D1C003E8470DA2FAF61BEF25B377C6E95C9B7D8C58362C3E32B6F
+5DF8FA84AF49063A7527DC7837F6730B175F4F1B062F78E1EFF326612CD82496
+19A9C21916486BEAB4A1A121EDA377735B50D31BC144C707D7151141A94EAB7C
+0229A951A9E24B4BF874D4424B9FB8DD913284F2F6961716586969C65D327F76
+A7DE6FC4A16BD7A38A7EBA46B233E816E9B9913849EB231F14E0CFB1E2E8F8A4
+D18887305EE6D381F7F9EC772B333772A056CD6F03E03AB9AC2808607E25BB6A
+2AEDB0FF0D61A6C4EC6E11C95135E947582B3AC4D45BBC9D5AE91B31AC10990B
+FB2CF86D1DA5C265967CF5BEF96BBA0EF536048D0EC6438BE2001B89EF47BBA5
+BC719CF14DA1B5B46BEC794BA6877851B8EFD743EA58737E3A79A220BED80411
+BC0D277D9D6B90389166E8AF38D1BD6FCAE22185648B9A507C351239A193F06C
+EB1BCFB97FDF113C00879EA12BDB8C5C4F28EB935CD09382FF8888EC03331E27
+9EB86CA0DE7C2953CDE0AEF67848B12CC9D8E5235341E5967FFA307473A536C4
+285F02007244EC6A2D7370413668A275AF4AE999355B4BBD6601428DB2FBD751
+1D60E35A9CCC764B455AD7C993768F297285B1B7C85DFA298C3C5627FC0D193B
+A71BB4D663857521894B294D8AAC9FB9EA9BE460A9CECDF998D2A960A95C8938
+1D40E635A9B8DFBAA50D10B9A5F90B10AC0EC09100A4A02373BDB448E68A1584
+CE9EEB39D0890E79372BDD73D454FEB2FFBCA80C456E67CDC254D1B48AA61397
+4EF8C41AA9E4ED13451F91E7C607D0724E890B32D0C17E727DEB502741FEEA8A
+A43B43AB9B74F7057CB2516B0ED72211BFA654365EA2BAC33A0A69F60DEE4E6E
+552B2FB05E51F6183B59389AB3845E2FC8D881CD30A16DD1988DA2497CF0A49E
+86C053EBABB80E3FD81C33E1C6E4FBD3D05D030B8A26FF2E979F6FAE58A57822
+8C2613F6D6A137CE1EFC60C6F9AECED6E879051A4220636DF5981EA5B851F80F
+614C95CC1896C7D0E26CC3DCD9F09484C0C3D99CDA5C479F7B5EE59829B2A7D6
+BBF3D06FAEBEE9C9B18BB8F8B6C6A8C63B3F84912832BFBD1910025901DE05F4
+47F3B9A8749465BD4EBEE22093DFED40A5300938E2260887C0AC656CF06008F8
+65C4CF3033969E12C0D39885C890920AB7A3EA9D5C13EAC70C25DF2E1FC7CC82
+388A297A12627A18E942BB27B02F7250EF2200B0711BD799818AFBFCCD4D9704
+89950CB5AD17506E2479B0DAFE312E55B5378F0EF2BA1DF2E0C43AF9EE253C56
+1B959BB8FEF3CF84823E0F19B4E78B45637994652CB9C4EACCA0FB2486AEDB74
+5B1B4C7A055291602BD9F70A19F724E3B3371FAE20AE10CB1D82CF2DF943A193
+07B9B57740D9B40CDC99CE34B490FF0A6CF8BD30926A2195A2E00C6CEFFEE40F
+43D31BFB082FEEEC16E06AE55AD8EB52D1AA56721DC7C60E1818F1C01F78C291
+E187BE3FA62C28118C21451841827AA035C608DF6134AED48A2CB6025E8F3670
+E555FB497FBE5C1A86171E7E9A3B9725319A91C12A397077D791F54ACE2C6E79
+749EEC025ECE1A657257A7314354CBBE04E299B12191F8DF4F4156EF29FC7576
+6CAFB8291486A46C04D3B2AE9CFA67CE3D042B9BBDEE2B694D8EF699F153DCA1
+944FA550A035C6CCEEEAF8EF318F7EB2AF22CC92F7993B414BE7D549B629371F
+6AB0F8E943E162914FC7BA3731B16718B0867DA82C6163BE127875F041C9A4EF
+2129764AA935AD53B8F8627565440EB7CB00F641CD76E9126DCE11AA9E01F999
+638A71BA58E252AFC44A88E01E39D4D401420D53FBCDC69F8452380203DE9E81
+0FE166D0BA3393429F957DB9BF35C97124D7E4C92C0D1E7AB18327C8B976A0EA
+2008625133D924CBA15307F8242405B707B9CB5FED5327564E97189B933D4442
+942F5351629E77A370054BFEB9321E797D00BBFBBEEAEF29E6DDAE0B447DE62B
+3D28503FC288611492CF20D1A2DE1CBFD5A53DABB6A7595B6A56C5923BDAB62D
+EE2D35B0A1DFAAF602051610A27A8677370B13D6EA4BB755FB26F981DAD8E49D
+743A5A4CE7C7300EFDE3B23F1A1840B259B811915D3F88F71C6A23D65E346222
+0D3CAA8DD97826C56FB66905E1DECA15CFF547C893C68CFCD90518CA299750FD
+66B95C5D11412CC91F1896C667C48B34708FB7E4409021AA2751BD85BDD57630
+670F5B72134B749933B0A748A0C3FDD58C159923744B4A1BCF835A187E9EF239
+938DF37904A3F55A18AEE725182C294C2C3DB4C94BCE4E3D1E295106A22648AE
+56EDA4DB08E3BE0C5319FB5F824B9546589F079E78BDE9BF43A4C9AA302A2BB9
+7D7B67FB385C2C5C3C703AC45240698B8D35C9E4131B9701BDAFE0BBDDEB18BA
+7F84348075B03B76C98CF48DD420A7B21C73EBAB5AC826D2AC10ACB69345B75B
+8ED9ECB70B76F90A95876A6B0EF50F015056E2BB203DB6239D7ED436DB69BFF2
+0E1BB9492E9B6A27530A9263B52A5ABECD963B400D81A2E9134E2CD095C18EF7
+A193FB72C33515460F95C495203D6DE8402E9BD7A96EB6BB36EE946D018BF5CF
+9CCEC15B72CAD9B6099875EB23D4B554C781A8B5050EF5BBE7391371BD34AE1F
+2863C79F901A0B7A8AD81A1E5D58AD075E4303D8470FFC72BA88618D7FF7E138
+199232D1BCFD1F9D0F
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -5035,7 +4508,6 @@
 dup 50 /two put
 dup 51 /three put
 dup 52 /four put
-dup 53 /five put
 readonly def
 /FontBBox{-27 -250 1122 750}readonly def
 currentdict end
@@ -5064,49 +4536,43 @@
 0BDDAC3B634AD4BA6A59720EA4749236CF0F79ABA4716C340F98517F6F06D9AB
 7ED8F46FC1868B5F3D3678DF71AA772CF1F7DD222C6BF19D8EF0CFB7A76FC6D1
 0AD323C176134907AB375F20CFCD667AB094E2C7CB2179C4283329C9E435E7A4
-1E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A463E26637C66
-FAD3F83D6DF42D2272506260CB761DD59CB9AD24DE4A642D19C3AF997AA659B6
-8099E7D59BB44B111E1A932A8B579FD310191A56A0DB2CD18017C1366442F8DC
-EBA43FC3BD0DB552CA5251FCFE024E9A70E10BAFEEBFE0D2CF386448A9A80B11
-3F764B6481F3B4E93CAB7CFF2777A02A6FDF8B6055AAFF40437539D3A39A6829
-6981AC9443BF2E0F6FAD7C752E2176E6FC45B0E8DC832592C1945DFB758499D6
-229DCB9ACB6E60335DA76D7E1282CCA3885C0594820652D79BA578CA33A1D828
-4DFAB3F56394921DFD477C10748BB9E4DCF3279CC13D6ABA567E56B2EA89D929
-CB1CA27183C3CD093CF0161375F11A9F70EA649406A7FFC9BFA35FB89C203DB3
-7F3367F31BBEE814D47359332B3490ED4D04AA2E84D7BF1C93DA372B7A32C23A
-4BD98E14B474FB27AA66B42E0DA1ED9681B8C4A6B726A3DE686C99629981D466
-42E000942D3597C56AA438EA6F046E713A3EC3D181D156A57CD9C2A055891F1A
-C22DD4BD5D7921208D336CE5662646F4F8A6768E2ECA08E37E02D09BDB2F2077
-D1CB8839C299EEE9C953B7AEC052758C45B4CFA1A74755EA7FC80249EEACD4DC
-86B75B24ED43BF98618E370F26ACC6ADAA2D4F7F427517835DAEF5EE2ABD5A84
-57D0092DFDA0AFFEF903CDB34E7DB858479AA1FEBDE7F369461B6A24A9FA7142
-4030473DF089D64D93D4B8B2DFABD5FEEBB8875252F6E05D42D51179F9BF1408
-AE56525F82048991E87CE8CCF40EE635A4BA439EC68A3ED3529F746838CACCBF
-0B62334A2901889A7D741604E2B25325EA80B6AE34B98FC906ACCDF3D96F3060
-4B0DF7C5A23A46D05F8437C42B9F348B2EFC8C12B19711886EE6E52A7F6B4E98
-D55EAECAEF4931034BBD81A6E1BB8DD1AA2A9CBF1CBDB6241D3DBC2A81D84250
-34C268EC6F85852AAD8F8DF4EA70D04DAEB4972A242A71DFD71602744B0FB4A8
-9FDD759AECF668607F43F0EC0A2FBD07A0233177E4527FCD82FE807FA584D63A
-5971498C8247A0E02CA84D13D9E289BCFBDD929DC6722913616A5B0F9A3D0181
-F0C03BDB0B59EEF4E6D89489EA5B98E30C73F7183A279F743A02945D5739E85E
-78622F098E0A7D70454612C104A4294D9612D2E5DE37E8850774A2CDD9D91935
-804D771C7A75F86A3D691AF4891BD797445CE29E2CF45B12D60A7F9D51D6FFE2
-538C5F6A2A96F3B468F72A3914FE3E7A0F638C86D29785C75F4051FB8BF33019
-F97D86536A3F5DA81986BEA8CB6EA411C41BEB858CA709D000A3501A64C4EA55
-4FE551B75BA090065656B83D36AB2BBBF1E3631C9E3D86A0BD61184F50BB79B8
-DB217409D7F3D811BB52E6C59BAD723CCDDBB2C9A66834C225F1D5BF8D41DCB1
-9396418AEFC8737F1877DCF148A0217D17D3BA40893DB2E206326227973BB98A
-78B2F8EDB786049697FFE9616C8C6E76A939201B36DE3B6C6B575ACB8E684882
-D49F6EDC7651BD9CE3DC2A217770C45FD1E14699B0DFE4BACA749C4436C57FBE
-461C9872CD2F5CECE6991B68D2A27510701CE02C836AD642732F12DE734D8D01
-78A5621D85BE71ED5BF0538B96D648363C4400D3A85C9B2582EFD9C062EF299C
-DCC9EFEEE6D8A9940F15EBDA58393480154E8A4884DFB2BC1765F96BBC310159
-5ED53A2C2DFE653A292FD8F220DC933524CDCA81A736162BC9F8E858749A3BB4
-C6B309E72AAA1354C1B8176360DB77B10268FA583F47CDEFA4924546A8EE0B3A
-B9A26C480DCD7D8BDBB9AE955F211A5BEEBDB7CBAD33416D7B567E9AC6482EED
-D199A22CE0C4E16BE1F20CCC0B00362248F5740E9819D371BABABDCD011CFFEB
-E40E92EFDB89B3F3DB8BAAE326811F5928E60984DAD99B593BCAEF5F8FB9B841
-18229891C8F1C6B7565195ABB07B29B0635D3CAA602A3FC9C9C500E9
+1E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A47CD4FFE5D78
+D8A2086B7832F31FAFBCE07449CF5470A3D7FA5BA40210C80E40D52A8168B6C4
+B8F79EF950E024857DDF476E6CF741FB8B7026A16BBCBFA4017BD626E957285F
+1AC975D116F281156EE2DB2FF487BE4F137D85A14C1E9AE33B3669C9ED414465
+C0985DE60A4AB1318E34630774EB043DC3DEC20CCE67A7CE92E812F6A91CE146
+5869866E3B9E54B9E0D48650F5B04CAD196E983EB006A971138FC343D39CEC85
+B9433A3ABFD1138D445B74F14ED5A740D014D9330DC6D871C42CA4538D662890
+7BE6E2BAE24A8BD7FEE1100C9F100A626868C6E158FD1BC21480C834D0C16F78
+E4F51BC9200B1AB357920BF9B1CCA4E3D949B5E07B32CBCC7724307B804549E3
+C7DABBBD57F9CC57F2CE4CF5342B2C20CE2D6690DCD1DDA7D44E4E24754B3E6A
+0665C51E66FCC182A3FA98506AE50AE475B62077877E3CEE245D3030D23AB8FF
+77EAE4E9C4CB6B7901DEF2C81F6CA3564D87AEE1C79DDE509D4E921F0C0725FF
+BDBF29CF744935250FE85C81DD5AB96E611E45D34C3F40B1DBCD291274FB5A41
+8579462705B32DDC1344C0E2B43BC93346216B22FBDDC801EA422E0C3BE5EE37
+AB8120B80D9102F904A8F1F176E51BA37DCB9CDA4F84001C8937CAE87FB130CB
+440B9B5FBCD405783E5A43C6785B0D0734B591BA2A88B48717791D8403385784
+3509B2EE4E8C79D7486DF1742ACD1D485EACE5AA51B7FE3AD088B217F82D8BCD
+1C9512845ADB6DA4CC9021E3BA8480972C8212FA35C6F3DE19144DE6C7AEEC3A
+8F2DE2D94D1E01E7FF5D04AE2906F27AFCB862DD5B84BEE1C199C4BCA3E57E25
+D5039E7A0FCA3F6D90171FA9A18DA65ACD8DEAC676D9AEBE201F0F88E462B0E2
+D0B11CBA0A57077D2ADF11ACA05E5A3E62FEF83A14557DC6420330533DA1888C
+3A31087D15E3E6758C86D2A593A73DB3F2A16D1C29DAA1E3D90ED592496C3A25
+D2FF2A373E29E20B6B0A9E0A662CCD361131693C17E4D9984A1E65C8638B08A5
+C12CE4CA01135C566F1D9F38E9E579A150D2AA948970C8FAB48A25CDB82B9F8B
+DEC063E3F423A1EC4F486373A6C759EE5E2B7E5A31E2EEB7B31008C3686B2E5B
+69D6D423EA191BAE706B344415690BBFF1049DD49612967B198719E4392565E8
+9415B54C0E3EADC14FDD83D3BF552DDBDE53FDDF6D9A4530D15C4555629FC863
+D87DA0B0429477C62AA56D01913F5C12F7A8F2DD813AF5F268C5C48A26FAD26C
+1CC5047E93762373B73D4CD33918114A5EDBBBB6B07F548D8ED741141202A7A3
+A1603A820C2E876882F624416B4024D7F455AFBF920BF7505A5D067382CC462C
+73B60CE47BB5195B95F1481F8FFC4EFA50EF3E6B59437D89E4924B21FB217A06
+BA982DED7865D26ACE859648BB38ED7CB37780C1C3E9911103A5646C114C5CDA
+6749E663A4BA39C195B83331A0254F1D4D782CCFD44C48A89C37323558634F54
+6FDBA3F8172331599B682B6DB2C1E5C04F0003F2A0AE3EC73EE32519EBA6EB3D
+C35B87DA853FA0CD74B34B9C6446128BAB825F5EF440917FC9246A18172209FB
+CE32F8492C2DAA56A80DDA566ADB5D5B1925001BAD90E552FEA358FD673C81BA
+E7F377D703A7B798
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -5163,7 +4629,6 @@
 dup 58 /colon put
 dup 59 /semicolon put
 dup 61 /equal put
-dup 63 /question put
 dup 65 /A put
 dup 66 /B put
 dup 67 /C put
@@ -5180,7 +4645,6 @@
 dup 78 /N put
 dup 79 /O put
 dup 80 /P put
-dup 81 /Q put
 dup 82 /R put
 dup 83 /S put
 dup 84 /T put
@@ -5265,445 +4729,432 @@
 B0E7A0686602568BC87422F32486CB50776C7EAAE7F1BF78B228CA3254510653
 3D6368A4985C5FF5A48AEF16E1AB71D7CE2C6649F2CF4B2879D4FA042239B504
 F988D2FBE87C3BC784E55B8EE36F1BB5EF14FD5836CA448E139EF8FE221E827D
-0608A6B90E08CBF44A30669AF4E20CD5C0C8051E5F86062204AF362DA690B74C
-B952C9F4799FB2535E47AC019175950A1F3A0D0937016148222B545B1E00A91B
-39D2121462F51F736802C523BCFBA894EC11C3353F9BCDF0892C00EB583A4D62
-247118996064991B816F9F490FA73861FA614FEC7FC23A5D45310527B6559781
-F1C805F0EC931D0C60E70FD5AC55F22E6379D369303F63A0E7069237118DA0A6
-5BB55FC6EA1797BC51C1D053401ACD4E9B5E724F4AEB149C38DB0E2BFEE811A9
-A94A7405422CDC911CDD97EC4976E27F766A9E3F84387C04C6367509157E4D91
-09A1F6DDB59AB9096FC43A6F9773ED9CE3DA6B56D10AEF99FD277F8666E72028
-807AEC6C26E5A142496CD41A80EC051E875DF9F547BEF060B969B197AF97608B
-F7A3740B3153621A680DAEAB0454706C65581255CA9B40078FA6D352737F0165
-D834359ABCFDF5C212F8AE9FD50BEE9683E7D5969D183C058E8BDA78F61B61AC
-98746B3A1750093A40C17EBD4AEF36BB2DFA1C9AC2A12834DE4623CCC76BF5A7
-92B2B2E368D1DF3471D83495B19154836569D2A30F9CB05C0EC499EA5D3184CD
-BAE8D2A2CF80C6359275B3894B4DAD7F92501BA9A6BD215256CF9F35C2BDD40A
-D1D949000633FF0B5FC7674BBED71294AD28FF25710E968E85C3FE71046BF0C1
-71EF48F8024C28959FBE6E896BD1AFE579764616672C724959FD66C8398ABB5D
-6C02C5619866453708E3FDCAC2754E9C333C1123A5F746DC5B2CA9D430263645
-A88C743EBEF8C82DA0236FB73D3DCDFF874A1A5928406838A81E40F34816EBEA
-0D7A89406A6F492E5E5E6C8C4D85A2B9A83B6A4304B05AB541041AE014C845B4
-283CE3F75DA22CB7CD78C67A1F067C79B209BDBA6705D80FBF08CD0FEB9D3293
-D9955BF6730BD59495A1F81B708292B509537089D8AC34A06DAE5E8BBB9B0A0D
-F09BA6723DEA964F06C0E1A6541656470E251F5AFC6677043DE7C6D85B60D3EB
-B8A4415DBFDE3F29D5FAA0B5CE4BE9559595265FA8BC24A172FBAF9B1AD0A4E1
-1CADABC2B71A43098146DBFDF7E126069259EB490CAAB07D5C9CE0AA888FF3F8
-6E7AE6C7E5A8A38CE61D5407B7D163846F8CAFEBF385257AEC1848DBBA60B7A6
-ED708C86C7E773802F491C636CEC4A15591428383D56204E70E383AE361F3E47
-4C7B9C5EDCC13E731F6B67BD79A09B7C29769D4D9DD71A21AF20D347193CE5F1
-BE70B010A0E02A49118A0E5B004D6C193C6BD5A392F360401AC1742546A60CF0
-3CCD14071C31DF91E84427DA969E42D357A3EBF440A3C5114B443162D8D4A968
-045BFD9762858BB82E98AA5012EF61EFB32A6EC4F8D3D0FF770F4EBD8CB47101
-BDAC234FE799494AAFC3322769332895AC076528768ECF4C69318F4C4287D30B
-09FD4DDE2436C0AABBAA14C9E4F4E1103FB17FCDE3F4BA395FE9950E700C6733
-C6E7C1CE9BE99D275DEEF49BFAB8EA926FB9EBBB5917B66E73161BBFC50CB621
-A33B4734FDA1EFBC5F6C0032F63C3C32631FADFCB9BFD2F7ACE080C16D1DF08E
-8FD4B291900016094586EAD0EBB75E3CBB0152DE572521EC96669A3983B13309
-5C3E8907744F25ED623F08849675A75D8BDACE3F86A988CDA9C1434E50D4E49D
-FDB354D7F43A9EA6AF6E45903ABCCFF2FB6A216E100755067FDBA531BD3A3A07
-CBA99ACC978A28D49C8D9F293DCA7BF4A63F48E775AC7320346C07BAC826DFE3
-DB999101CBEE0F6E729B40E6E2F6170D02D325B8545F39EE052A9E883DD40B90
-CBD1447EC852C226A5B3820A6C7329BEAB0831520BC96A966636AFA75914EC4D
-94AA9D027F5E9782EEFA1FC08BA671FB7CF3DFDE40A56275AA008FE44185FE3A
-20F8F75D5EC2ED8DAEC21737F08088E9A46E607E81D2123596E5917395B7961E
-B9BB98DCDAE063460FF2AA64845B4D2385D128EA79AF54DAAAAFDEF37E7171B5
-7F023CFC72D929BA153D24EFF7ACB9A01CF3C21495BC225698658EA7AE007343
-18D6CE00560DBFD216DBBE01EC999840437AE367E44EAC72AAB971D2C189CB6F
-2465619D1F26D7E1B790EE761D79FBF12504137134AFB745EFB606B843CE0CE7
-B50714E2B5A4C514260115FCF078002A777DD814E9B1670A4E00AA89AD5DB378
-1F3382DC2AFFB13A1EB945304863D34CBED5279EA6A062127A77BC4FB4C58CF9
-6C42EF3689986C7ECF800BA9A064C4BF26E57297FA0480CC593D0473C499B9B5
-07308F8C2E11FA0BA0FDE55D2277814FB0DC8FBE2B77E5D56E6249A95C58F024
-71A2186CAF2BE7AF5F742223BA650408BBEEEDBD93EAADC0B9AB63F6C63E0115
-E007265B85C144F97C00170DAC73D11B14DD6DCC8955EAF77FC5036ADC8D2A43
-7FED7BC3E9AC937E2BE081CF724B83142C0300C8467BB057AD1B652BA1A086D2
-0A6C40538AE24837924138CC67631F0FB1B8ED1D22765FCDCA819A23128D9AD7
-15BADADA5B2AAAC4CE7A3EA3A9C9C398365875B0424C6253CEEC826C50A1812C
-F8B8B2B11537F7CE554FADD8648885E8CD5C3BF8F9FA9D6D69BF3043F02D68D7
-2EE216F948A2B0EDB37001498A346B803D8D0B013830D219EEC534A1D779C7C2
-591470B7A6FDC337442538EB3422956EEF135315A3504B7D08162ED89791CE49
-27699C67C9D1F57FC66E110B02024410F0A5CB53A56622B63310C7D971ED2759
-16438B5EE81BBFE1B9A16C7356357B6E7E123546D0A46BE587032CFA86F541EE
-0CF088C6D4912647832EB31C85FE05F89DA37D7D0931EB19E382D08E26CAD346
-81A67034769F21F21273C52E0009962534F0A1994C984101136F731BDE489961
-A0992B7359BDA9C6C3C02FDD072F56F64DE2E1E973B48540BC4BC14FB0D27FE3
-516DD831A7FBAC02506154B7324F5EBD97EFFA8F58AAB00DEAFD2F0C21FE022F
-E3D62EBCD654EFC54C233EDDD39FEAD2EDE01A975F10A62B05578B0E1D553B60
-4A62DDDE020C53A759B2DFCE2C73FB6BA73F1256C8380C62803CEE16742DD7D0
-955A325812E7B2AE721F28D4AE711234867ACE54162DBA80E88C6113D4C6E7DD
-D7BED4A2EA232BB545691A0189CE1DE85F6944A37CF2B66683CFA322DA002553
-16921443A0A5E4F4F176F36D26BE08EC91A017ADE6C54CEB42F8F002AD97CCDC
-72C3A27B9B6E8D3E57B2C253CD9D26688C2DADE289DACB4323DE4C15A189C43E
-A6CB97703CF7ADE63405D877B2A8F91B87AD8D480BFC3A24EB8A908940A99DE3
-0269905EA8C922EE243B7E01A39CD0D151F16906626ADD9724BB77CC859EEF27
-09CC58E9E7E83A720C61E71A682C530A3CBCF5C99FB690B8319B5FEB9E58502B
-AE17D595E8EB2958894C46FB151D12E785631C03647B6406CB0CCE48FA78CEA0
-1E4511900523B88BA7F338A052AA6980BAF111ED55C2872D1B87E92497C07D64
-82D7663B93188AEE5D587878401119922B947E19A857F4E2132D90A1ACE58EA3
-E35CDD12BABC3F6BBB50D4324A299773CCC1A90ADAD8FE50539A141B3E12BAED
-909CDC998E815F6F2E837BB975DFF9389AE488D5B5535925DE707E9CF9881D80
-3A3F8AC81D97A685F3CA52738A87A921EEE0007E71473DEA037C3B4E7CF5F26D
-4E418687B7AAEFE2D5327C3F8ADE51D394CFA283083BC0FBAF122AA1678684B9
-21E8D998F70873F8170307908B4DF06D3D1D692411F8DD9BD6ABE89EFB7CDE42
-2A6633432636E65AC72D1B8ABF55CF9250A14120183080D2E95AFE5BB39AB713
-D31D251AF007CD8BC63E87BAB56C8588DAEE97309DEC367C25C60E7A06D5451B
-216809F9D23BB48598F4A677AA281B32F73D0842E7C16A35061C93B0421C5AA9
-0D24C2477B230804475BFA52F4426DA6F4DF979754A0F4DFA0792F76A710AA05
-3A14DB027A641CC11F24F821ABE5709FD8C860FE5D3C3164D6C906EB2848F2DB
-ECD5CE8CEBC52A427F432C618563FEC50FC35C51CF0C4C31DB05CBB8CFF2EBB9
-51DEAFA4E8D0F8100A91E8DD6FDC74D6A09092E4C5BE635D685C7D0B5D1B6A35
-AA1894CD13F1FCC2838BCE1C957143A340B96DC3B08484920958D25114C7DF8F
-DFE2D1A6E58DBE6668490E0A3F75A016EB40AAC8DC623EB008D9677FE604587F
-2CE0B16B06DF82B6BA800C1DB2CAF259A1007401B2CACFAC1F55053630152D0B
-9765A4D34BBCA0E531CA90A03EAAB5F5857BC3914D24E98076B2BD7701678EE1
-5B97A371FF084FDF64BDA12E708C4BABF6ADC776CC057121C84395504806962E
-02E31C1EB36F914B6463A390BEF4C35FE25916A1C51337325A97C450D3134C43
-94B3B14DDC11C933A813182206243D0EC32703DB33E76B181F12015BD987BD6D
-550D7779B4443F226522A3CD00229DE2E74A2C9B000C79770CB49C82266B9A40
-04218F81207FB109F16CDA49BF83F9EC21378A783F7F16B61D62F6D94F69B76B
-2239EA2F0E7DE13FA0411FBA5932FCD80E8F241AE46198A2C7B442AFF8EBBE19
-71264B66744E93ACB7DFAC8139372E818CFAB79297E316800FC5E8744757C5E5
-D23FB58CFF8370128CAF7EFA09C8906AC06D259193AF137E301CFD08FBC48F07
-BBD510269C70C03B9F511C755654FB3B23D4EA9DB3082DAF53613CCC08A63C91
-2C2AE73AD0F48BF44D9221281F3166919AB2EB1B251CF5C8BCC50FA9E9CF5D95
-5C039C42DDF3D00D829024B27F6C7F4EF80C55CE7FF888675FD69316AAD371E8
-8AFA37D087F5F3D7E38E74DE37BA359F49365267910272AE65CDEFD5624E3695
-03A5120E55B4F60DE25883CDF9C9F8AE6C5BE923B41BFF29729442A711B9A92C
-34D3BEECA65C06C31A45164A40572C06BC82FBCBE6C75461DF336207C25D2B96
-29682D5F782509220891F98B04A2489CBC9704B597D29109F099298E8F067423
-4C7AE016FAF83DA75D50E0D93CCC7B4ED67E80BE5C2F8FD40E869C61D32A5BDD
-1C5519DFEB07546B8C928078491D01A4CB8DA28FA516A76668F2A755E761C865
-FE949A5F1107D7A99DBB581AAE3D6332ACCC7930BDA7EB264FC152691D1ABAC5
-1E47BC5E5DD8E6FF1F80397683DF63C3655C064E243B9376E6882C9F4AD0E4B7
-473E3FD32D908C3B7B31E0FE6452A102F8BB24DAE554BD01D377862143E97BE8
-F1EE9D4747FC7076B52F633A33B9271D457B0DBC787867D4DF9CA587FBFF5F29
-2C0FA99CF6497062FBEB531CC148667DDA814A1A2569BCCA0A3A429E53463D18
-41268AEEEF94B3A6806747664F2B17AE3C12EBA5D53CFA8D22D7DB3A16DAC814
-C3EA18E2BF3A712F36815E9DBF973C7EFF59911B3C218BB9ACB5B1010CC9801A
-DBB7BE1CB60B10CC12B57DFA4E7F90033821383CA184F579B3176705D310F7A4
-E94A519C59237ABC27E6426748B0D089A2D389B58AFA872B2B85C5E980DF5E4D
-0944ABE5A954C928C82266E2037FC98137B068E34F4C59FB334019F8EB7535BC
-8BA352C2F77C1D90413B205E112AD3E4B983E6E0A54134F96ED09F72C5E6C43E
-CF951467988E87E795F1BD54382D45F1A903D76E7BAE608C99560C6E24387628
-0EE9F71C2619724759EFFF8A04151DF26176E14CC8A2F4062923F66B852673D1
-2FD86F20B1811E40125023C1B2389F63F87F1DAD3D578A2C1CFFA6E8DE85D8ED
-4B25FC597068648A2DAB6DA122B93DC5F3C8C74545DB7B0A728D2F359ECB05B2
-BD9C8A0F473C00BE655F9F114D662A6483484D1B08BC781E1FB4BFB489B7FFC5
-A16E3C2A5EF93AD571B60448FFA9A390A04D5246EF386AB02658A3229B0F4B29
-2065B73758EDEFA94108AAE9F4E9E8E1432340AF41BD7BBF18300D37BD442A15
-6B07B92AE7CE617F89CCFB7ABC99556FD467D771F218A30D6329921331608C7D
-DC34D348B612685113F8D1C9D8156986B7DD4DD252495E1CAF091DC43033E763
-847299EF4412169982CBC70A2B2BCCDF9A3B0468FD36B0315D0DAD08CC9CA302
-7A33F01D9558FD2A0D0D067F78841A3CAB2D3122E54DD5277BED97BE71411342
-1FADEE5374C1C4137491FFB729CD81C1C6C783803427BFF3B6C5B2B16FB92EF8
-70F6355305E89FDAE6C6C5A33B29C142A4250D19701E59B4FDFCD1F618D3C34E
-EE661E8658574020290E2C6D1C6551F29A1228D6CE402B618BD9CBFECBCB9AC3
-EB24B26DEC2F6B74778379F72F3EE3EA4E2B5EF258BF38FECDA5E30C2CF46C23
-FD05C8FC04D3F7C1CD776604316CD9FC65CAF1219E1E8BDB97C8C6D6303252D3
-57C549686B9FAE947C01003FEA242DA11CD50C18ADF9C41048C7A5B74C755AEF
-9D1624AE9835ED60838C7BCA29246FA5A9B13E30886022280B1223EA24F8251C
-EB134BCD8CDCB18CFC461672907EFF2C6A7D516CDEE63EAFCDDDDE3E85F9C0D8
-795A69ABAAABA2B18DA6366AAB4BD17E263D61D454C1A0FC3860BF29A7ED3214
-840CF222E1A880867D597354C54E542119405C6C2EEB54E6A4D6D04729E80042
-AA9B0B8B1D9DAD231F2B55B09BF7193207E6FF5AC533691BD919E423176D7A26
-30F80324D29DCDA2184238107504E07EBCEF343BA5C139CF85E5536B7AF8B7F4
-4260B36E99E81BE4709A5EE85B9807FA4F46FB72868E9AC422A48F3EAC86360B
-423DB302B84E5CE857FE0FEDBC3FB065DB523FAC7E3F6EF2CE959B273FBAE6EB
-4BF558583BA69E1008ADF8B38D8A84347285599CCF6B3E84AADB8AAC3ACA920B
-13D7D59565D908E98DFC94F5555031A78F252A5938F012BECD507C830B440750
-24F1A7D07856BCC2E6F0B590ADF962F11B2310B298203B1777102946E70F2575
-FE1A075A27A318B738015DD0C60F3B67CAB9B1D6190D065012134861160A4861
-5A806696D952CFD418719B3C18BF15CF6BC55FC15372B335137ADD437ABEA7B0
-53D1CF760CC084B531EF350A5AADC3E21981B9411941E326874462C77A90F22B
-AB60322289D5E05AFFBD0A1E843A50468DCC9F6A616FF066CC0D77637CD5AFB7
-0D17B55B21C50BC89529749B66AC2D1AD3710B4FDAD98A48C7E71B2418C25478
-365488EEB01886830B5119E30247462C9C36F225FD569F4B2ABEFA9687E61F23
-EC48EFC1501C2580F14B0F97C2FCFED1E9460343744DE472C9B8B8716BC60152
-15F777D23E3C67CA2D726103FD4324FA4E307A94244DDC3AC4FFE5D977A6FFB8
-E5A5C8047A9211B5B26EAF84D23AEEB2E6B08F88C9FBD82CBADFB64825227FDE
-C9DD19B06F844525AD631AF7D464CF1A314769FB30C4A8F2E564F32F656A113B
-8C610BD45209AB3F8C336BEA9CA6B2A6DA6096CB37CD20D713F9548E94284EF6
-404D5AB2E86E23DA2009D3E0A1AC9A3A325C95CA2982D070D9C528DC088DD605
-237E6636D8F63E40D0B183A90274398F517AED7FBEAFF1F06A1CA60AA23C71E7
-59702319F84DB3532A8C268A743434B66171DE5D000A96BD14831D44F9E027DA
-463F5951E1641BDF7B9F25B3A25C3B46327227FB61B1AF4D3BD6C1D68901B6EF
-23344A04BCAECCC56801EE609657D4EC9B3AA49A974F6A6C2D5ECF790CE6DD19
-D2F882BE5245167369E4570733ABA9D79D74F11A8283C320399B7D4FBF7575C5
-153307158C9C492B6F2A131C268C7A182D5230361174ECF404CD8A012CD731E6
-E770F4E5EFD25E7FB70B7A6078FD7B8471490AF9D0F733096DAA30B01A0EB250
-A9AF91CD16CC67235AE9DCDB7249B8C6FE3D81C1B9706F8D2674A6AFD13E5480
-9E6D7E87E0FC70A113ACDB7F765DADA0060821690456E4F0988AA0C65D78783D
-E3DF13FAAB8598902A2363BF0BB07A571826754738137F3AA89F08C2CB61B4CC
-8D0D93FB040FD17DB5509250259C62C70EB3EB3062591D5DB888482677ACED2B
-C1F4873A380CBD76885AA4732D5961178456ACE597058C034652951D1C5FAE6F
-4573082CB8B2C26D08205838ADC1391B5B66BCF142489825B6F76636B729E9FC
-17BE4C672AA919444CDEBF939E6C4E28F6ECC22C53C3A03A3C29966675311EFF
-10A9804B7BAFE3395ACA791CA6BEE8B3EB3AC50C988014C1443B6D9399597259
-D4D887B9BB7B74EAB86AC984F71D6AC804DA16C3220A1C8E3DAF65CC9458FEB4
-4D816C244A964DC1BC17562B85E4638F7EAAC3220DB56B04B33EFDE1E95ED640
-9C7DFEF6D8D9DF10A49161AD0E28CA9A789F499F789DBC6383A8E0E708AD49DF
-870F9561158DC629C27F4712B1CBD50C9E9BEFA4DEC0C4A524CFD675C6A79966
-47AA075831D51207D440186B5B26C6DFD102BF1FE943B63A936635F5855913F6
-C2F8F7C95BA09BE94C35B9639EDF7D470F259F1C478C4013383A012E8A5CDC98
-662B88B69C105C99C27369A02CBCC2EB0FA787F1119F3CF0C622D22ED801CBA7
-839BC1941E7B4806DC9812D66DA745EFC609F96820D29E0A3FBF4FE863461527
-A5EA491B95B469959F1702A227B5B67973E1F77058FBB40CEA89C9347F4D8A50
-BBB9B1BE716B880B1EF4B2134AA07A352C7DB177C5E8B09AC26E70A947A105A0
-31EDFB08C21DFB1AF969047B3F890EF22DF9749328D98E9A24CB717518F5E955
-7D3771005C602BBB9440C4F8C88F7AF1F8DC5F9D46E95407791ABFA4C9899D80
-519B8317709A4BE26E566837FFEF6867644049545F85556CBF47F1A9F1DE392D
-2796BE25C7E87036A719ACB6DFA1448A8E54DAE20C2B940CF598DF723BEB9899
-493DBCBE9523C0ECD4FDC5BA29E8DBE58CC930F7C42A67536573028777A716DE
-4A48F7183C03CC8A63D0C53856EEF5801B67CDB0FC80223D328D30E153C5F623
-71A8CFBCB12B69D5B568ED82A8EFF7591A0C9EE0CD4DF44F3B4F3B3F9D590BF9
-76895A0725E330A4070EADDFCD30DEF05A8AD92D4D3A2829E2B82616745BED98
-783CA03A0B056B86798EF20CA09FDCA263D48534E092D5237DCF9373F8D54D82
-82AD8C598233222BDC06FBAB7A27BAAADA72A1AB5F8CAE2C148B132D0BEF5352
-241818857BA7C4EE599C9BAC5B645C8164D9D234B343975C36209D8C4E07475B
-5225142147B5F869481A7BA9ED0162A27A11C12C581DCB7A4344EA37941214CD
-537F5DAB0F52F7745D1B8CB7BCA462DF516E3F1FC1D6E6C156CB3F230B3BB24E
-540B749058E4BEF20EC09D6BC2E4C8452B2A48B1CEAE146BC359D1735B5EBAFC
-7C2337974BD76951789ED282B6B98DB4C8A582B887BCA1DC9AB91B3454D3EA9E
-3B822E7FDF7D4CF64874544706B0D5CCA429C2CB5FAE1CBBDE8A2B2E1C1BE51E
-85E47A455FCA235242A0E2C335034D61B507B3030E5690DC636C726E2749F0ED
-3D6B56778B79D6110683A34C615CCECD0F80F4DE47DC05484750DE06DF3A49D2
-C8B4A9EF6B0E3F64F717E441FFF0D53A239348A6074372247DDCCEB6080FB50C
-EFDA0831DF29CB9561AC5F9B47175708BDA8A69F1EC0BC4E17E2C0951404AAD5
-F691E917CE40D0D7EA70C9C19B1817D21B6CF694CEDC7C7F3C2B99C40EE6A1C3
-B790A6A27DC6D12AE1524E7699F79D61061DFC4C7D2E7EDA2AAD01938E731D4B
-23EE052305D1BFDB6C0A804A8FAACC7341F511CBBBCC78AE7B7BE4FA3C8D149B
-1E6E78DC058F254E034B976E6F9033B58BBB4382C0C21DC5FABD92FC82EB2974
-90FE54ABEB9174656DBF8B98E5908DE55AA46CBDEC25F7A88CE6BAEB56299F2B
-01D7DC9ADA415055E3D5755306219A468C475B809A0FDC9007F1FF6E7AA041A9
-ECD7F0CBF222205878761151691BC63BAAC5B11FED047F336F4F4F4626C5B27B
-51987B37B4D9B0EE7C111B0E7157E6CC6CC05E871CC7EC0BA4EFE831BA1B3CA5
-6439BBB0D546EF01A3AE05D1855D1495F766084DCE3C2E85D6F224845F24C8B5
-70F1D2675A6FFCED8150930468FBAEDB86113271544690BD091DAAAA8AFB910B
-E4683935D47BA09A6235A981BA86DC8BB3237C802D2A224A8817EECD00DE8A2C
-ACE71321D5D6B04FFF4C05BE365D8409CE2A223BE59EA90D39F6CF7C243E57ED
-21B25A946A54450C3BC68CBF64B9261594B0A89403A10FE739F6000BB214C4E3
-6C632355CC35BE7F65242ACF87D9768DB04072D4928E34BCAEF1C29EF429B517
-22C14638854D4DC259D7CDC13947B8ADA051A0C0B84E5D486589DBC0CE0E3AF4
-2048CE778AF0BC3CEFF57FE4B3BF9BBF1A6DE676C83CD578DD39EEAF8E26FED8
-895078A2896A6FF6123E89346ADBD8ADB3D80BCFE21BFF8BACA038DB9B3FB51A
-B9307E067BFB7BEC6FE9C2D3F8660EAFD7CD79274E061AB390744100995DB0AF
-83A0D9C783C73C1F9FE1DB5629B0203961660A31D7874616C4EC1E63AD15B034
-5E3EBFE91A93329F635EBF9BDC93F413A38B0F9467BD292DBE2D72442F8C8E6E
-0A3BEF27D2D12198AD26C6277ADADCE99EE4569A0CFBAB625FF41AFAF724E533
-404AC0035A265FD62DC541541D58D0A97943338791408439B3E7D93E665A9A12
-1CF61691AD1C9A7F8628CA273991B514E525273605BA5E30D8B9E04F1888D04E
-458AA66B6C1588B29A1204B1A02301A200AE4A00BDF28A33D2EDC73CD5AB82DB
-547135A13BCB8E1E03B9FD9E13C95E0F6E38DFCE0A51999C5EBF7898199501F4
-AD52F2D5538E097E7E781065EE6D4A87A7F627EFF812071A67FCB19BDFCEEEE8
-10719FB31EFAD71CD4051CF1D38A808CD394CBA71E700B9AB4FED19F92B8438C
-3616C25A07A0B053223B5CBE4859450AF6773CE9157896EB5AA8E5CFF3ABB132
-8AB1170B6324C491F7CB9DDDF277C98FF261F8713F28444B159F481AC5735D5D
-343FC764D189709D3E61E30EBF197B14D882A3EC5CE4A67F5040676EE3DAFFA7
-822F8B8C0D77115EA82E98957EAE5355B2FC684C1AFF87BD7E01D34E2A1C483D
-43808138BB932221E1592BD40C28E2A3DDC904080B4043CFDF6E1BCEECB63F8A
-7921B196C2899B1A1D7E401E070AA38F2951E0E91E39EBCF9CF49B278A875F43
-408F7D9E1A9FD45F75DC8864F3E4362EC91FC89D32AB1500429CA6367F2EE6EC
-CC572CD9313EDD7449E30D6661D25062ACA2A8C3A2BFEA28B6D1440003474D32
-B67A644BCACBA7200292D3F7C7D4D15CEBFF6DA2C250C87F59E9A752565A6406
-9912455D7E0EBAC53D581FBE8D4AE467A19DB210149E641386890E9F2A52B0D9
-6515E9694820289FB20EF7EB89753F7C1E2C4F69F6FCB42D466E827D84C1332E
-5B9D115EDE73C1EA6AEF6511E73025391FE7416D8B5A9CC0748E83760DCA3852
-836A77E89A58299CBF9878DEFD74AC2DFF777FC5958D87678A4E2B630A240F59
-1C01FB19EAFACE097921B443547305832641B1399ACA75D53B910173B18F02EC
-3BE6C5DEFFA1F5E98FD79959EBB7E42CDDBA6B7976CEE5DD667C48B5F75E4DFE
-1C951330B27FE43B58E773C02AB53D7C904130B1C7ED8928DE339F8C803A095F
-954585EBB1F4018199A39631D8A9E6737499594A1C79D49A34D225BF4BE0A772
-D87C144EAE091B979535D78B1D095D3B34317BA78BE03E07C99598299BB485D8
-F9462A66038824EC833F9CA801402B46CEEB6E85EB7F85FDFE901BEDF14FF5AE
-76592C021B30AF59440F291029988900060FAB77AA1145383881B29F6FF5BBF1
-A6934AAD143F438F586580D52F53E4625BC7977B4054A3C78893DA1803890B18
-61D27D893B8B695E90922A051B0B253F908AA33BC79E9053873C5D1D8467969F
-952F66C90DA35D40D43CB7C4985A8C56C65562F8C973E09D8795EA47BC17D958
-6D6AD83D0773EA0FA2BD247C6C46A9D52ACF9A7A668A91B683E9659D0048D180
-492A03306515859295E4F0F6F37198428A561BD3CA11FFC68E8B25058B10F6E5
-1E5E6FF5D47CF21A8F16337F7B6A4E55B7CE740C903224B8106CE8BB9D75EBD5
-5CA31A43A539D23D06860DDEF0E1958832AF79F60C35E7A1B0E6007A4B33831C
-2E8B69B2529D141D7FAA70EAE528C64EAE26F2573ECD02C1EB53AF8933CC1C4C
-5AE760FF77A450D9B20F119A3C517C2731A66D77820533E5D1C50AB69C7543DC
-402DF620941AABCDD40C8A63662113475C85568AAEC4103A8A12AA6AAADB9F9C
-084740C19F9741030948C3A96ADA98BB0827DD92AE0D48A2AC354E4154A6BDB1
-F8C4004802E862260492EDC2D19323CEF2689253352022DA1FC4F819BF8C9AF2
-DBE7EC4B038F1F2457BD2DDBDFAF3E6D2664812621663F76F8FF5070742E2304
-C4290A34EEEBC442AC68479EA4867D9B1DEB8902A96968B86DB9A667BE6A21E3
-57FB5EC820191151EDE70D3BE5F8A46B7E58DA2CFF1BD8761C7A18D5DF52390D
-177C00DFAF3B75C839ADCB54C8D519DCEB5B4A69CC0AD480208F3659D55DF9CE
-34EA4F8F307E6253F093C5E5CE3FDFD81657EF753D7534B0790883652FFBA396
-BDF1A53FF28A6297838EE1576D6B785FE21A51FCD175486BC0255FDCEE3F98CD
-F1855B740023523E6339A234E5C193F639B729C0EFF1F47CE1D71DC8AE8FE223
-7092FABD45755CCF1AC2ADE932E501830310CE3288FD1918463FB6B5159DCD8B
-A5500932C00A7ED40E72B4F3E4DDC7B79556293D6E6A3B1757E2BE6E0BCF0569
-6FFA2A76A4BC9B63A7C7ECECCCA63E47EE230835945F77C044D7041885A1B4D9
-8AAAA9EFF655E9BB08A5FF9690A1DCC4278A936EBD01A4FEFBA23635F32370BC
-50E6B691CC6F6ECB885084CF1BF3159ECB00B12E9C4638CE63A734CC70388438
-71D3AA2764D7C640C9674CDBFA58CF0497B4A122E2BD413D6AB0E6D69450D7D7
-15890F1560A9BDF04E5AC7130BC74E174E4C1B26AE4F6529D28047CB3702E553
-04D3CE6568B08C741732674910456621D51E0AE9A8836A024ED1B84CC0B50F50
-B4E1486EB0DE384A4D38A8746068FABC7681586CECD15838ED6E2D4F83CD56F9
-288832775D02735DFCBE4DDA0D42A5777AABD381827B58F6A0E6F6592D6C589C
-08A9D77E318C9EBFBB2A6EC80A4D578A09C7AE51ACF6C98277B250C634D10BE0
-5090B000C2DEFA31CE5716051B373E0320DFB13617BFB851E2C2DE62F4F8D311
-8DEF6B1F3839BDAD34ACA5F9E7F284236A0B60BD32AA119E3BB52081A4573CEE
-32FCFBD6B69AC63ED5D9CD17C518D58F7C9BD965AECCB19D6D8B6D504DA48A68
-6085558D7B6D42A4EFB77437A8B58B981E4297150FE710E7F7AA5F87729FFF07
-87A7E807FAB33B1982E484A1C08E25658B714704905C37792F47A8B9EA781DF9
-369354C72368A472B296A6551E49CA5CFE02E3197BEE5A86ABAEE16E6F0F258A
-65A64DFCF7B3F0EE40080BB21CE1834F46A773802C5A708FEBF22574EA7C7198
-0D91532FA9CD3A786F7E1191E12FA5F7C20442A2D6FC0142AE58FC402EF1618F
-EA180FF78F5B93ACF3B9CE5AFC6F41A22AE94DC30022266B422F74CC7D570B6B
-64229DC34CF230826B231C85356C4837B9D6A6AD003D1BEA440886F514FC63E3
-50FE689586012C9CCDF5996521BF31C2185F6C65CFBC5584E4AE7D3C1A343A35
-142C0BB17312B44DF6740E0F9AF65386347DD8D69EBE379E18C6CF46D61C1B21
-35AB57BFE55A395113CBC4D41DFBF5185CB45E368A04787746D297F8CE1C0CEF
-FBD9584F6B2D1D61B733EE59DCEDE9F6BDB990CA0A669108C2A85B5665B03832
-28A3E560928059AE05B8E80571CD3610FFC8518B676C4AEF162372BE864FB8AB
-8015C6836465929BBCC2FEE3A0C613EC25650024FD13A289B82BA2B0BE696F13
-DBEA866EC680CD7E42C86BF80B45B5C5ECF342ABD136664CDAD92A422D49FFA7
-0FB47BEEB2FD4E3EA132AFEBCCD34F3E5E1CF51BAD2181D04E03B413C538B126
-7F217312064CCA21813D77DF616B30247E53D51BD248C80610E072323B89D5EA
-A8B9B163D512C08EFF57C99F6DEFBE91ED1CE7FA927C2389FF95810E2B8DF154
-0A30FE206F2F85B7DA182C0FDB71D0BD02F925978A42901AB831E570BBFD6C2C
-B4ED0E80FB6FB6B6293EE363ACDC2D1CDC243090531258D7AE90E1812A5F7557
-55366455F4BF66F9A4A57D49DF77DAABD116D36C2A5CD6E6C2A718267F14DEF0
-35A87C64E466CFDE1DC5DED7CE60AA47D59BB7BA71F362E8A9714DE908713E09
-27A0DF391BCBE797139E36FD84DD7306BF873DCCB6A64CCD6B023075E3747BBA
-E43FF3001FA79E1CC98C91BCA94258C3FE43E32C11F5A5CCA6A64974E0BD665A
-4DD80AD770E9295830405568C3248F49BC0D748C14BC16620FCF2FEDF6888007
-2AD2670F77CE5F1D440074687A204A2F6325890858CF205A57CFE1B8C363A19F
-2CE148F491BB9606CD1B2BC626D753E4D779C8F24105494EAE5B3E799ACB7F61
-7D3D7E0B5E1BBEC92BEAAA92FA6E1132E8846152B9F0615DCBC3271DCDCE1F6F
-29AE49C1A8B5E8770049610F82ACBBBA7B434C7E5B145D56AB8DE5D3473D3F07
-567C6E31E88B524A8C3ABA2C2D0C5545C024E2DFD430EAE576C1216E81B8DABE
-28C72EF57592CEC9EAFFA51EEE04341F0687FB07497E7AA4A7E575D683EFCF33
-BAECD7D71412F8DAFBE104E1D6087650622A5D239E1F4EAFFADB86D6794D4CCE
-7790456D430B6668A02DA597C70B61E03A4CD14D02A008B6D7D686ADB64A440E
-81AFD61FF2A9FC97376769A4326DB15A4FF5DDD0C0317297D0BD41F28BE0AC0C
-2259AB099372BA053904A027797DE20D640E877D298A01806E5DC46910F5D31E
-71A999B46B1A19C518CE681738BB2ED7093E9A74F60639D45EE2CD646A2807C6
-8530CBA45D116C6B980F2B211FC564F970CD5289C52B01EFAB75B57581E293C3
-066FCD2268889A3F47F329E7CDBB7F9019509D472169F1B00A62EF4F21424883
-728C03DDAD1FEB5198609C90F7027E8CCA5F100525D6E03A38684D650EB0CB2B
-7D22851B9B6F7EBDFA8D4A2335CE24691A49778D88C0D2680A231329ED745945
-3B86C2361D84D3C87100564BD9DEB35C90253E04C626BC2CBEDB3406A402F3ED
-6F67CEF05EF17CCDAC05F56A2333A2B5B2FC37C78F533CA3158FFEE04158E5CA
-8FA1387C315D3A4C8FA898986FF7AC12EDD96D4FEBD56F14189DC680933865F5
-4E0DC552158016DB9ED913E1F4879E5BF1C7DC56642D96589A91E000230F3842
-38949CA1D303100BF24F4918F777DC76282D942F200DF3B663B1DF1D933182B0
-EF1ED07DB6E07B88E36B864CE1B81FE81DDDBC2ABC4AD23051AEBCAD5EF7E7EA
-0DB2D397C2878B13D9330AC104C4A752DDA7652E5B0C35DC2D5091AFD7F90563
-D9D3D7BFE5AA4C637CF137A342D08679E064873A48C44FEA42F59E40D47C9C7C
-75530E47D997D76755255FB3367B4F864C34C2D64CB1C2984DA0094868D150A1
-C87195125B2DBC301BC089B6662658534549DCFCF850B5EAB954C7ABB39BD0EF
-FEA4254DB6B81D3AA70ED21E94817C2702B764EBC2BD495ABB05DE8502A007FB
-40AC7FA63E3E8045DF21E71A09FE6D13BA6B5476C062CF5A64F052067AD7C3F1
-1072644BA4EA5A360EC22C2F57FCBD125FB2B722E281CECC9291130A997A912F
-9BBB252A25FCC1BA9BFDD85B98FF459F07A1F70E027020076BF4BBDDDAB4A7B4
-7A2B8EEA2DF9FF5811925FF288F2CC482BC843B20D1ECEEF4C843B4172FA20C5
-428910D7A8F033808AD26CA716821F35C9E94A8FD1E06D0CAC2AA0BE762A15AC
-96E9ED29509054E335F0E8C842DA612F7A47D180414522C3F9F2E6DFDDEAFAEE
-DB9EE0E1A5B761A2805A5C385BC20722F8F015C7D2C5FAD395C12FEC73F418AC
-445B5B60068EDD382AD436F3AFA556C14655D021AA32A7264FEB6B1622094E9B
-A522BDC1A6BBB23B256A0ADE9BF8F8FF73AE65509D55161BBEE3E4FD358A45EF
-4F007288B94C83A1009AF476D4AA1FF45D2505D259DA50A13492F8012043900F
-84558C575C1407F0F7C6B9C6CE0FC0F54CB30073872B612332C0C7629275243A
-1FCE81BC6113C8A6FCA1AF89D92ECAAA98E26310BD49F1B8916CA89C1E07413F
-6379D309DB3B2E358DACBE0924E91C808596FC898CCD90D4F54DFB83E5343D4C
-CDC26A6A45690FC0489417A3E76782DCDE0D6A80F6E38F2922925F504E962F11
-6BE2F7EB05F92CDD840147E27CC3A06419525A96C3A3D422CFE0B89922F89BC7
-F0C894F9ECD3896BD841A367A0370E6269525B13EF6A3958C2819F1F22D8EC46
-E56A69E0C0D07973112650295BB4ADD9473C80BA28EC4882308B5EBE74566BB3
-9E74ECA0936354C5D7967A55FD27900DDE0847150CE4329BF8AC43280BEADA05
-D269F2B2B6A93A5C2291DC2A9404721DE03743F7DB35FBB2223ADE243D99059D
-D2EF4D2A54E292F5347391957832453A112FFF97CD601E95970555ADE0FCBA29
-FC251D807496E83B2A867214B4779C8FB2C609634581D37023FCA0CCE534603A
-620CEEAB7302288E10E128F9AB6979D8C7CC2320E5B9CC4B671109CD756E45AA
-B57ECE0BEE44E78896EE230E6BF9562D0268771094656521B0E730D6AF1B9A8F
-51EC6648A153432C4E64FA229BE91F14EC871E87C127C2EE463A3EBFAA5948A2
-68FD8440793B1546A66EC4A0C7B907728D4DFAD83A0ED7766F01EA8593538591
-C677B24128E763098513DB3B2FB81AA9486C976ED364FB5DAD6057AAFB7008C6
-E24D2E9C5E8D40F4488C5AF28F87344ECC0DC6DF7C9B4C3608EE48E6891691ED
-F836549F27378888FE6B2C2FC8F3CAC540A09A287824A41C8BDF7D40D65EDEF3
-3A8EED1B55C46AB1E948001A888A3A02400673DD32A184BD970DF4A98F3E0FBD
-055987E208E59B9FB51BC204E034E1567B44E31C0CB2055BE299ADFD1F6825E7
-168BB8D7605C3521BE873AA47E7839A3B1481954FF57F79ED07CB72719614BA2
-CF55BBF66F1FAA899C323E2503F434C4003D1D524F2BD294DBE0E05B32F4597D
-E345A45EDDD64ED5D67383BF05D1B4732C658A283412DF12F88B9BBC2A4394E1
-050FEC8676373E44EEE95A6AD2349964ABD773F0D9866D8ED6845A5F94810164
-BAD4F749863809443888D41B3BCC54FD3D525BEB352DFB9D30FB8E28390EC381
-5549A1CE9FA955815D7CAEC2AA91041DAAAD9141B0B65CC0DA9766A83921DD97
-8001E55C2D51E169E8AD9CB86B93787970D9B68AE9406A5FFA6857ECD7676F2E
-D5C825D41C0192F9A073608445A7385D8BEEC341E76252A39254D518DAD1B16A
-B60AAD1D68449381A2DFA852F762A75C507F175E4B7FF3E404910D8C39B28DD1
-39A74946A98BB8DCE335359B9CE8181334DB4A3C4224D70E4D6739B93871C88F
-5CB369A889B8EAEA00D56AEC596E3D5903D6416E054515D4C21A45CE0CF9FDB1
-C7AC3E60CDD7BBE49F7F47B8F14C00EFEE5F607205CA663B2A566B17F457958F
-AAB0C1E7CEA78197697B56FACCDE80DDC72373B8DBE8CDFBAD81C9170F503F09
-4D0373A7FC641C249989C210A9EB004302C2D79B0F4B1ACF3222FC9430905C39
-6F01EB2A5110E254AA6301EE362BA00B5CAFFF134A8A9793B34917006E7C66CF
-C13424DE88780F7D4F565A1B5EDB8E988795DA2792A3B2667137A622F358F000
-01C0C0006B0FE604EFBA1C51B8B75850535DA2F50E753550E231C2676D77417B
-2A22C3C60F462457B46F937BE1827DFCD2EE7A6048902AB1AC8BBEA599873604
-855DC992FD093CE3BCCBFD4ACF62C6235BF6A170A71EB9CDF3BED980B5CCD556
-7A30AEC1AE5E518CF25CF4862E485D2881094675CD81B0AEC174D9167BA4C4EB
-DD91CBD701CE5F5EF9BC460C2EBD28A2E751D4AD8D4B9D117631994340DF2942
-5DC7CAEC5EDCBCFF932C2D2CFB66A8C8441A997404899063F45A52CE7459FDCA
-8375C047024F0BFFD81346ACA95211224A1182731B413197A812CA78F7B78F47
-D7DD957693959A3E0250615C76602D4EC2B8F71A27EF1C349B8D2225BD3554CE
-250AE611A971A16592931C0D6D7B9573C44780411173815D436C79A945C42C23
-CEA659B2209C8A29F135781554CCA8A95F01FDB7411487ECBB0033DA95447534
-37986FBC4BB3827D57187F667EFF299562A8837B12BCB2E00ED91498EA8AED40
-D2963048D70DC442865B9BBCC383FACED8B5E5037513E4E0CE5AF90903BBC893
-3FDDFD1FB8D0D9605E0B13ECAD84B6351AEB8F2CE65680718198C7F01D1AD6E1
-FC0F30F95238FE4774320FFBFB502B4FC2C283F8D070444A9E64F0E93082308C
-4AB1EAF661A34E6F0052D0CBC66296E0A21AA83E1AA311D7D8D1BC2285AF574A
-EB2274222C3D7156CE001D1B95FC432B50E5AA83C67DC4F621D8CCA5EC7A2208
-5500C4303BD1E7B92A488C64E2E64FC53F7B1C3569C83A8373CC9CEB8E510FFF
-292BA72D91178330E126B41410AD8B2D6E2DA491DFF83DB53F78C5084614B5D8
-96FA2CCAAC2955B61B37E5C19F10FA5F21B0BC62A5EE30D484AC3E5E714D7DF3
-1E7DADCB845A13C11E091D60CD64C10398451A69ACFEC83FA83E1CB0DE506860
-A16F1C217D3F0020EDAAB524A92A30578724BCAFAC6E52164A6AED93AFEE2FFB
-67A390C8222AD7A024F100CAF4F698EF2FACA4164C9E4A0C229F205607BAA25B
-DC213430A2C0A5B12CFCDE601FD91CECE8102E0F3CECA0037327A9E4111E5A5C
-3D0204DD6CFB226308FDEE442F98B6952A447082A2A92E97EDB4A83859F5AB71
-599093FCA362CED5A2A52E8B23FCFF9264A9D5BADBF0FEBCD7348BD815965103
-6BE41D998C20531F289A4EDD859B72B83AE1B8FA22598FB96537CF035E0B4DBE
-8BD1B054B39276823704440CF83C812670B69DFF35892EBC00A6F04F028C70F2
-8CB07644D6216CBB94E864253D584553BFD38BD7C822D81F13CE287C6777F904
-65DB3A1FBA4CC7C2C2049139F4653B6AFD15126D1A9B5834F3FE175D56F8F626
-2AE11C5894A66F4B65CC7164DF33FF5EE0851F0D57DA7C969E51015ABB611F5F
-8DD09CB0035992AC74F043904D982F6272C66D804C86E50EDC2165697A25FCB0
-F92D814CE1B49AF4612AF6C8755F89762BB1A80196EDBB23608264970E66AF5B
-6551B21D349360944E5DCF923E5F6FA81751DA63F5A4A3C240A71492548830D8
-851DAF93D2CAA4E256B4C84B8EDDB59FBCB6F7100F131E73B33072767AE7A579
-DB379D0D359B257E424B57E1A09CA559C4454EC792814C49E12B086580438424
-05631FE7D717DA17B6F8CFC21516F0890A6D3E6DDAF61294F3C05D450DC3D00D
-B628A9C65A65F9BB3A0A2F9713ECC022F3EAAD56537E4DB8FFF97AB55B261405
-800171F4EE9D20E489802A55809FFD41A750CAD891396096E604F24F2E342AE7
-5F74CB49480C77B3FE13DA043651969A77E4A30A10C6DC00D2686EE11A9A0CBA
-4A4BDBFDF38FA82EEBED4F5FDDEA418A2FD90795D076394F31CC0888EFE1EE69
-2A679AE0E278E985FAA578734B25B697C54EE8A1E7890748FA4F72F70ABB6178
-602EDFEB42BD269825A745D008150ABDFED71ED9D45CCEBA6E7DC5C9FB3A2C5C
-F65C73C1E45100586ED2957DCDD38A56031D75F007E90F0759A6EB22491D8AA2
-2DDDA2507260F3B5B2F963D8572D457819DE915C07545006A363B21D5759AA48
-DE12D0A58C37E51712A7854678E3F90BDBE7E9871A7177751095D64C91D93BFF
-1865C5435C3C7F41812002DF6F33E22DEBBBC66FCCD68A2C7AC0FBEB126141FA
-A399B2DA947B67A437A829AAE5A978444BDF7C015E6F9D7E9E29556E0E699718
-1B241DB33D766E6E8AF229792E3219A1744D0FD78BACAAE5D0C45B1D8BF1D5CD
-058AF76E0DE5B062E1D8C0401C4BC29BA5E0C5BC854FC5CB6BAC40218BF00572
-136131412EC3522003DB4AA1F8FFE59268908AFC28DB4F345F8321AEA8200DBD
-BCB860FD60E841B5F13DAA51BC03189E533DF9A8127E4B031B99D270F600802F
-AA9756A102777A7C7A60328E5162B304B9DE6ADF694314E0E206F7BF8DACDF99
-B2EBF7AA2FE4F890AB200E7677C19BF5B3E9AADDB61DE2F7ADAD9D877429F0F1
-6CEB88E5F1DAAFF17074DA50FD6B3D98DBDD26D855001B0A42D4113E2B1F670B
-ECA23F1AA3591BCB2F0409706869191FE908B6DD296D592B4C8BE550DBBE3A7B
-323A2D5A9A59E3742B252E97244B1F7746CD97C6154C6BD96CEEB14DBD25A5D1
-0FED0700BDEB8A8202A377AD8BDC4008DA96C5BF3BA9FA617D418F8A376F5105
-44EFAA85413C8A657F84038E090C728D1C4506CE9306C1DB6032D747C8
+0608A6B90E08CBF44A30669AF4E20CD5C0C80518B7AF4FC2F56904C2849F7F05
+BD9E5029B6C79D25E34E18176A2755CA288597D1CC18D81511E93FE88B94DACB
+67F312A4986FDFD913164AD228F5201FE02EA6C5FF3F6B1BD792FB99819E2589
+7BFC7A527E99FD1C1163D10B83BD61D7CB962C4EA67E887FBA85DEA3B2A1698C
+6A896388E3CBA13AEB278D02354D5D40ED45A86BAE6F213806E9A598FB92FF2E
+8F498BA926D0DC8E167B32DDB47D5A71212CC63EE2BA1332B23C48433BF78C22
+E5A050397513C7B9A954B20801ADE837DC725EE53845DAA89D59C4CC24F9C849
+0A7DDD7808E5E31755CE6F8957C95FB68823B9F944BACC8E18307C10E9D566D1
+D6A4BEA8A230E5C3ED80B9BD0F2A30F39C905F11843A9C3B873F2050025DD297
+F61A7D44A58B63C18C16C4BDDEDBA73979AD1CC2C211E15E42F6AF3AFE4B686C
+9EA058B6A330AF99BB0673333FC04ED65CF45BAFE78F1899DF782FC2E0C10A45
+622720545FE9E04DC3703FF862999D20CD6BBC8944F7EF1EA84EE89A863FEFD2
+9C2E61C7A244AA254CB70319C57F7BC4E7EC1B7ED0E2E0BEFB7BABA64360690B
+32DE9FD9158DAE19BC5605AE0006A614D4E3D70321708BA09AF5774D4EF62EBF
+6CDFD17652326A6BFDEDC298BCAAB0B20209AFB82CD9E4AA63BE5CAD1455AA9D
+C5D6170F697E088ACB6FAAE3427B3A26E0D8D0E14968C973CA0D8BC90F4278B1
+BDB067AB3428719BEA95A88E93D13409A2A02A7EC0773CD94FD43625A90B2141
+2B341C59871983359614089B5292C2BB9C184A5F3F9187988A4F6627C63FE9BF
+1212A94D185FE803E6B9654524E569ADB223E8DE809E44DB791D1C46AFE2BD85
+2E5382B3968CB9762BF37A38626A385D5F03D69C90B1989EB0996CEE0E1C7AF3
+DD198CF50AC697B3489FBF119FC29242EA5A6F02B7041833027D327EB8A9AEE9
+28681EF627A2AAD81E6881C369D9C09FAFCFDF22C504167CD5C4869C1B13A1C0
+5114C83FF30BB4BF72E1D6B8495CC1460BA66BBD6E8DE75815F8D410B5D77A25
+9F05A9B5BFDAF5BA7AC1A8A94C1F616A83CEDE893E318D6FCB285FC1F899E2C3
+B98CD8627E2D04886868124A172896FD7968F0334F740B5D0EC5164435AB1F0D
+9EC8C2915AAC533B5636416B93F927C921BDA6CCC60D936E22204864DC7EDEB7
+EE3CCD6A0831C619C88BE2CADA252BB9020FF58F68C92B0505107BBA248BB496
+6ED801DDC778CCE3FB2566FB08AC653063D8181B0EEF17359F2A522B93C189E3
+96C011BA889A0E80DBDC1A033127196229673C85611949DB21D5861C4AA64B5E
+B2840063EA4FE76D692D02AD3E12BE05C3D8105C35DFC065470D94EB71DB354E
+1F25A74C5226D235B1A655564A4363B10788E36C49DE391472E8023BE4371853
+E987D02F2632AC597C15E4E6C4D83CE8550CC1A205C77F5137C5489AF3D94C61
+BFF963D2919ADCE9F0ABD9F1C1C3EC506D3DC560D16118ECC03997372D317902
+1D4008A6E8789BC70CBF43BBC3B76CACB286873E87173271BBFD15452034F697
+D3256D363DA9D3A7E444F771C92A8128967655C0940DBD814A8EF1C9C269F995
+AA8672A51989186523E39CFB6C0BC6C1973736992346BBEEB1A8CD72337AF836
+E6DAAB6608C5FE315041CDC36C0FF9BFBEFAEA0E96C7089DB3C78A290B4A666E
+DB4068DF4E3782EC8723DF10E23BDB95E8AE6A74099007E85E882D3FF20AF6DB
+145BC61707619CD6A12CA375071A03305BB94E0D75F2437F9070CC02B80621C3
+96E7E4F245CD91C996953A312D89B7E73BF19E99EC07A8650F6FEDE55FE847EB
+3807AFF920AC373CA29DF815EEF50EAE0C9B43DF224D31E73CE6716C74D3B05D
+F5BC74B9A067969DEFA2F846A04272DF2107F24C756D0222C5C07511A17B3F59
+A31CD82AD0D5D35CA491A2289BD1E81801B0AE81CDEA1522336D8F82B8A41BDB
+F6F9CCC837B6FF6502CD33E70014AC1B47950B7FF1DE01EC2CFDE8C49F70AA8E
+BFFBB5959B118640E012F089EA8A65EB50FD4299A54403A3CEAAF063C2E99322
+99A9299364B1F833EE3B7C9A98ACF8ACA4CD0F6E1C964E10F5DE781F6157BB02
+D7BD91A4BA08E1EE988D90B35E0C22C13F14E1ED522C65B16C3A80510DFDA6FB
+221CE6D6DC95BAEDBE97D3677103B78B352C247A0087475733E7A8D097FDE084
+A6D94F57C2BF8B2F35E0C700B72BB04F79EB35AB5DE1A3DB609B63773FAB6EDB
+E6CA587EF43309C59004D0B2D5DA23DA3F975831FCE21C8D642EFD6CFB2AEA1A
+A10C5BE458FE9D322A3AFD7340BBBF61D341282064B16B6D28C54B4AD98351B5
+A77E196D30261BFAADC461C724C1CD616B2E7906DD3BF08BD44DA6D81D75D804
+A037E5D2CA572DC1C187CA1F440AE412A0339105355546A66613AA8705CBC210
+5A2AB6094B5F839D900B253037E8297099CD6EF2964A4DD2176307E0DFEDA368
+9D2C19B7760AD73C406368E2125C27AB9AA0A81FAC1FBA81870C709722D8B5A1
+220FABB6891E4A908D5D662DA0CD8ADC7DB9CD14D096DA464532987013598353
+63DF6D590FB414BB31F4F542E46D7A47E9A0497C294CE8A6E9672C50D3E123EE
+90C28DF302A1F20A9FD40C63FF35447FC7ABCEB580FC5DE1A57377198C3C99F5
+CABA9F3758577325F5A13F08C9EF50A18014C083E37BD3244D972BC2F3E9079D
+B098B57681796764037E2667E941E8338021C47557B60389E4300764FCD078C3
+7115B18105A2F4A66511B2242DD8D9E77B9E33204817CE18C752CE2735CFCE37
+3FD8A96CB7CC3B983B989CF2B92569706D00121AE4A5F53276CD11A149FD5F9C
+1405AB2D41428AE62939A93703424F6637CF546ED5DF652F4B1ADC1D03F9557A
+B389997A1E3230482AEEEB27CFF5A21A6E68BEDF0E790705BEFEDA3B32EF5790
+497D468A631EEF4FFC8997795281D9A1E25E321182E3FFAA10FB3778EE1D0B69
+65CA86516C155C522293DA6342B2A208CA1B78549FF78DB30729C40EC1BFC1C0
+C4A4DA1E1ADD8588E2E18BB5E5ACF44FBCE81600C48CBB96FDB37678D7555A39
+FC55F0005C875EA01F2FD93E8EF5881243DE92203D918B9C69FE58AD838122BA
+CE6B963D6B5696AC4D8DFFF1A74BDEF9ABB45DBD0F991D5056A3FDF1B4A79AF9
+145AB0F3FD0AE81EDC92B3FE165AD6DA66BB023A4688ECC977E0BDF16721708C
+4CACA4BCAEE2E6FF1BD6C76E5E0B9EF7F21AD515607B76786DBCA3A72A6B1856
+95303AF370086F0E1CE1DE5BCF968C22DE09F56A47D5E7DE50A1E1801A014D5F
+BECFCB7C6D3FA390106BEB420B524007A7DBF8505C639517EDF8293490FF5F63
+42C4EB59FE76F90EC8F4E047E96F8EDDA86F8A3B829FC5B788AE7DD9B3CCAE94
+BF7B3FA5BFA554C16F183EBE43A31B17B80B07C2D1901CC7BFF8D0A70A966328
+ECED7F7E97A4C5EEE972B224FF2DD2F13B742E3D445A5E6C5A6D67C46125F7B8
+CC2324A94FE3906DDBEB723B583429C86D41B940CEB45F5992A113C315F0B49D
+FC7138529BF0E21EC0B69EFCFCAFC59A5414655C871FCE0EA10FAA465398FD11
+9779FB3C66DEFD748447FBE7123D7E66B5A8084B8BC3DA5BC6B5735735F9D942
+CEC3A26E008FAE6BDC5F0E7B3B8D6FB56C9CE4C502DD9777110B520F4A8E7095
+A9A5A7742B29CF46B9EB3FEFE516EB0F825C2DDCE1A639AD2932EE95184F4911
+FD1FCEBCABFBC74BBD62BEF3F061E72FA6832F1E93D6753FB9D48DED0FC7DA20
+97378A044EB47E272E40BCD4C05210954A6E30C6C29B442795DD360B7615F65C
+C207AE1744AE15386A4B35895D11C2E2D4B60CF1B2BB9EB0F2FB4EE5EDD53FF3
+97230E1F756AA82815CEB783F6CACAC8159654B069F66DF417437AA653BF2759
+7C65A5F9CA089D92BD38A91156ABC24F2739CEBB6F7C09F70E378A814536D39D
+A75429E7611E4B96CCFD8A337F6CB47532DBF182727C141F6F32590FF7FDE062
+36BFEEBBF23B1FF7013B6C6053822475A06B8E7B8717B4AFA162EA77753AF5D6
+0041878F458921E091ADC16723D6EB25836A59ED6F26BDC7917EECB7A2D94A39
+8967C074B7421D9DE22D8BB31C29C60B9A5765646A501EDBF6DBE731DFBE6FE3
+59F48FB5D9B56E9D0E56AA5ECF12A497D0CEC596B1007205B0E393CDFA9B500A
+420A717D84F0FAFEE9870262C8025438219EC025A67D02FAC51804A10F509631
+D19F76BAA63540C273D5344208A9CDE5721EF8E23E285F1F98191A2FDE6BA6E5
+3D7EE783B1E5EBD07D863733808A5610FC7C944BD3E39D09976017227E18D41F
+8FFD835B9B6E868A53D1F29C4161623255F8B772FA532A87929E2B03B74DBDFB
+D1880FF98AC8868BA3CB947412B2E2D643157F67EF7892B54543108D16CF9BFE
+BAEA5AF42A95D4FEA12C2E5C49659E6E80D0C574669D2BD7F747CA6407D2F40E
+5C616E5D3E596E74BD7F0A188EAADF7DBF1C2923590271C1DA1B196F03CE6B62
+B6FA306C3719F2AB8FD088C24F84EA673BFC2A19F870E055F26C21B2B9EBE7D9
+174B4E663F8A8E6BEB92D306F12603CF320413A570DAB96509800E13BECC5517
+01B8DB3BDE2D69D6260D5E06BA6F8B5FD674D6FDB83444CAA3EDD4242FE3D917
+B78A9D6EC12076CE6A16B32CBB8949F544ACF3861BA689697592A01C1AA1BC35
+26DCFC852D2E79EF1DCB0285D242561B322249A8D78552F973487F59C0D0DCB7
+80AC276D2B5DF818859197CDD20AE6FAB2C2FF51BE9FE08CCC0D7DF6F1DFEEFB
+37F450D8C3DE246E2BB40CD01BD870138B6BE355EE58990976A4BC6D2F42B715
+435513963B2722CF0C810984351407099F7DF288F821568F205919F8D1E459B8
+38E27399A62AE5A6EEF35C082EE5404965FCACB6FCD58DD6349E79B0E7986367
+3F4F2E1A3A46C71319A9B1FBBD576DFF236CE2DB3B91543D12D529545D70036C
+8DAB6EBB9DFBEC17F47770E6FD0C2216124D530A516EF189DB48293D4B134126
+72072827FEB2EC157DE68AB4C9F58C9C792C1D26851C86AF59F67E0B9B5EAF2C
+D0061318B7CA1AFA146F064841E47E7C7CFAC603E6C660D7570B9004B4813CB6
+7D7B399DBA374371E34D1DC6848B970A20B0DD62A004815161F47AB5C4672873
+8E5196251D13F7EB23B505A7372E0381B51E27E4D3ED3097F4021DAE4F0EA95F
+F234495DB83D8E55842DEE5D9B4B7378C215091EE00423B74EA60614528E19A9
+98061F15A36C35E223B6045E4CA324A5E3F8C2C4E7F9702D6293FA807587797A
+C14254C69CDA1BCDF6CFF7B24C0C7B2AE465E7B5119C09BDFB833851ABD1D67B
+DDEBE6AD8A439A67132CA131DC429D010D451188848B9684D449653310948B63
+3BCBF3E55FDEE736877957D607CC605679A4B24EA65CC1B3B1BC27F8766B3ECC
+776F2EDDD42054FD090715842C67A5D55209AB1CE96CA7B60A43D254FE172ECF
+346F077141D8F9DE48FC18D3A5F9097AC6741DCF2FDB2546880B7AE66F565B69
+539D85D99221B46212756724115EB9C1F03266D4E693821C57F35F61287DBAA5
+9069EE2952D8DD5B4AE77F73A3FB3FB0021E7271B948A314A21F3B6B2EB72A55
+ABEAC3BCC8D7EF0B654498E0B6FBF31564B9B1676117F3A7C60521D49B7F9C92
+1BA99CE95397900773B9213148EC59D00013329CB8B6BFF87A3E5F53E3E20B1A
+09994B2EFA35E4D3166265D37CD6AD6527B18993660D5D53983B82AE557E4B71
+F121437E379029F256343FCEB86D90C76130F75A9C987D0F8414ED12B80FB666
+240260BBCAABF6274739088B13FFA0E596F380F6D18F04F98C1A93EDC3C97376
+53139A5F95327D52BAEA3B789D096BB76D4BAA09940381480D9998FC379DE60F
+EA9CEF2C154A06BD12E8AEA2D7B2D06B31757BD997C6AF21DC1B8511A785D8B6
+9EA0213CD1AB4EDB7FE819D0B31904868AD127302796442168FF13C622C1EA81
+144BD1FCCD299815721D3A93F17B89C4554983330846CF24E2F12B512CD56B67
+43BE983B51BFF7355239BBA51318FBF9704D439D7EAAE073C3399D1B2FBB5342
+7116C1B33142999846388DDA69F9D8CDFB38DC642F6EE1D2E3FFA363230F070F
+7E3FDDC1DEDEC9A657EE09BE0AB17132B9AD236FE2F444CFECA125AABB10A24C
+40033BEDBEAA82C59039432CE1BCF64A07DFCE60DF611CA6E902D2E2479D7610
+AC2C2E91A01EBE0B00B456704A550C2EABDD8453C72AF0FFF533C4DDE23D8386
+C282DBE78322449AD91B864FF52E487167993910D0819B9326E0D17AD9AA1C14
+6705E96C65278A1B276298539C262FB4920CF2659BD48FEC636DD7E7C456D005
+FD630E208ED20D50491A3A392FEE2CE839BA2F675EF5EA4C6CF084ED86199730
+3EF6A18621D0C948CDD282C782CD4FE56C1460FFCD223F55AA9154EF7FF75220
+4BC7F3D18FA20B7CD850CE5B7603F1784CDF540830BB969EF6A4C6F113A5221B
+BE3E02E000002F4376E79C8069866C17CC5CB176791A3AB76052FCDEE557691E
+EE016735B5C59D3EF129AE6083DA3A25E40F97A8DBDA45A597983E1EAA282290
+29B0275ADA205A9F6584A8AADE92FEE35175D06A3699E12834CBEAF2CF8A2886
+FB816C4B8A1F5C0A340D5643DFD3C873A772365F4C08796E2B3DAB0F6B2CBE8B
+BA8D231542F9CD66DAA6B70AF72945AEBFAEDF458A85D473A6954F65736E77C9
+714E2BEFE5B1F73C5BEBC52BD084C0841E986FF09D44B020226AA465F4616F8A
+782661F78045BD179C7F0BE660B1EC7FCD5026D5AA4844D8B12D33140D488599
+D556A3D79EB5E5B7BFCB463EB9F7263D8F56427FD3C3F07914369177D02DC8F1
+F09E50412EB8E12E116851F68015313BF135D458860CBAA3AD6EF2AC4315BCCE
+C1A3261BC39E106EE01291C95ACC94FAD6B42EB939498A46EAEF7AFDA795405A
+7FCA75EDF4D672BCD33C9BDDA1D6788CBC81149BBD9880FCEA37F7EF047B5F99
+DE6B952948BA8C958ED736A584772D28FB9939859857EB3DE97D66DB8D701873
+7FC6DB2DDFCBF37600F0711E47EE9A89C034F422958525B8EAE5E691AF5FADCC
+500DB1114C54C830872A689AB44D2F669B96159DDF806530D15C552F7C8AD335
+C3F1077C1C690585572686233876BCDDCDACEF789DCDC4E609DCAFCB59F24DAE
+4C1164EB2E46D4F43DB8B58352A36A6A7EDE1C7F108C69EAC19E3D7718360164
+08C438CA7B1361930B392BC5032C4EA943BE74B07BBB3C1E026F6BFA5970F87D
+B989E391E34E9BCBC5A28FB44B7B0FC5E5F62CF2BBEC8339368C0176E3D5D7E1
+AACE1BA9E7F613D8B17877190CDB644A796089ECF4FFF325A2827500DA90D5F4
+C4070D91DA84C492153891F9173CF871E16F10C5B988CB63F294C976D136C6C9
+826E7440C9D157E2BF78E502F289B76A9C35B10F6761F84B337C5EFB378E68FB
+170804773B517E45E777C36E6E21A53DFA8B85CD22E603F6DC388C852AFE5F78
+AE3E4E0DCEBA3FD958EE95FB9FF0DBC3B0FAED611848061B0C58A7E7D185BE0D
+8A6E88D81B1194A9E2F6DE3A6C1A72A04540CE1E8EC84630789B7CF63FBA3321
+61356132AB4F72653D9A62CF238C47972BDDA213894255895DBD9A40E0B8B434
+93AE7A4C9E47E0859418B7B2E1E346FCF17293777914461A20B111CC03EBCB0D
+56ACB7E67530B986308E1A3404213B840A71059ADC5E74EA6648CFDA1E9211BD
+43FC7C6B69D4FABE495B7F97887999577566777D51287D4AFFFBA74A6FE9B7EF
+1331F9AB3ED7B28082CAC8367BAA5800B6097D8FF96CC89242FFE0403CAE2809
+695E58FE8CE682EB271E617B7934A0BB80CBE34600DBEFED53C5FC2AC6E1F9C6
+35A2266AE9914713486993B4E04CABC2DF0504A92F80AEA8280FC5D0D05A1B3F
+19365C89E67CAEDD7C45938C2DFD9FA5041D1ED96994FF6BE9BDFA831065F9EF
+586F102525E7B392D5D3AE2B9662F7C1C3F0D0A59472CFA9A59AEF80D0BEB7BC
+D3DF1E7B9DDCBA536B90A608FF5D4C96D93977B5471705DB44C3E0E43E54DEDC
+B6287089BD5A516736D44DC1E2305BF6BA0BD369922668D294F410D61899E707
+F6F9EF1662E97A41FB419BADD17755324D97ACAD25DF5E1A98DDC48087188527
+BBCEFAD8EDF6EFADB96493AAB96D1505EB2ADFF9D98E0E5CE89A754EC0DAE62D
+5597A195CD07688AB36C84869FEC67388D9C5E9D2A887A1FCE39F8F63364CAE1
+E95483170E2F07EA3787DE08624416362D25DBB16E140F3FC43261C9E7D0E9FA
+346DD0E1B829B0DDF75CC4C8357689B5D15B52367C5182F960567A7635D2F188
+DC27208AA1D50C070A7D69F99B0E728D7BED3E7A4E932579AB28CE8A4453AEF7
+87D0FAD35B8149E3C6DE16D8071F4A0C16D16D2FD000612427883C2892B19F56
+1E1DADA4583292557B0A046E405C01B8299606AB0CC957AC013670C72E2761B4
+493A413723B2EF00596223BE2C900EAFC82E1CD1BF5AA9A84CDDE77D615D970F
+E5E428386A5D2C1D0E52598F303B8281C616A5A8AA7CE942EFEDC5CD4E38F5F4
+1A28818C1B0FF3BED0E9D3F6D4A5C833AF6202C4C982FC8A23A328969DCA8CA2
+8BBACDE62C3B8F22B10F12C6ECB041C8682320C734696CAF1FD9452660686D1B
+8BB226DE32C77CDB3B64FA0798630444015460C21E61E552769A5E4A8DABF646
+3B147F6EFC19858AC17E377ABB883CF22CBE2BDC726E4048DD37F4F163C6715E
+C20249780BF823CBCFE6EF1347A8F09937D13937FDC85370AE5F22B3F048C729
+3A68F7FBE471036EC208571795FF2291A00460D44F83807C93D696E23636DF0F
+26829339427B24398D43CFB5C8B8A91E0D7547F1DEB9CE75A14C2D6F489B445C
+D5362A562175AF26DE4C51D1E1D40E487BD310D7DDE5B712F697C9C960BCCEEC
+537B807C5592826489C08DADA84D6940D03891CC68D71527148B95A0CDA1F098
+C0B55E1ED1D713830F49DC7781108A50A07B17A6BA388C2A451332B435B8A2D3
+F4EE4EB56B5641D0D09F85AD63559AD49B6C76C104F89CA6F568A3D650A642F2
+41F257301A272934C218CA49791C7630D3A0A79006BB47355A6539B6E0BC96E3
+BDA15F1F1DF322FE6037B10F6F6DE070C0B070F7FA67B77750973E725ECA612A
+57278F5E6B12D311E88457AAE0C2BAC209FA0097748F8E42555772465E24E876
+B6B10C0C4124BA32C085E6EF9885CD0E0ED54A8B584A5BC6B5251C670705FCDC
+7922D164A52A3E5D3DC6E2DB837DB1AEA383B3EEE440730B2535E501DEFED2FA
+2A10A43B2F6B78D68E084CA2858F42F21FC03CECDC80235888A014BB5A464EB5
+D15511D8D30BD3A28A427B4CF801DD74C36FC35A7A9AAAD810A1664D92060D9B
+CC75B9FAF50B634AC7EC82AEFCD9415D13A9317CC704DFC221F808415AC8369F
+F1D422C1B4009054249F168E8956BE2225CEA4635503BB5F723912ACEE1EDBC7
+32F80243BD779F6137BAA6B483CB2CD589DB5BC7F10E7DC1B9288D3554D18C0C
+BEAF0C09FE4222F450A89B944E1BEB72904A83E04FCF21DFCB54A501C1F487B1
+7F29A436BB30DEAB245BAA384CE17F1131DFD6FB1B02FAB60F60D8D0A1A9F279
+1564C806450857ADE4B523BA69BA589F9C909B0804458037445E92CCDA40699E
+63CA2FF45ADF1C9376A79E7EE18E229A7C2D6451126205D3377765BA8B20B819
+0D3A60FC6C736663E06A154B31249C2DE5D58FD17F741D9D9A338061C2FE3904
+8676BAB02AF8E5D5E29DFE90774B948EAF9775BE926F6DBA28ACB2B4FD6D4CA0
+E1515599C3A3A9BC1A061086B6A2EE27112475DB8F0DFA8B34E2B11C5E3F0D02
+66C7E18B5C6A9F3D3FA42EC692A8010C2B8A2CD4D06BC4B11D899305BDC54765
+D56E0810C07CEC9EDC12005347FF47500877D16BBB0BCD04B4200F9F0525EB41
+291215965AE6A4B6AF4B2FEF5A1F6E9E3FB402C7162B46E2DCF254BEE9CF5F3A
+286F48FCD8937E7C668E09AD0D619C674AB32C4A7536410641D5A68014D1A698
+07CAE5F3264AD902F4EE1A0C0E6D27FE84EABF6AB4C6FC962A77DBADB31EE526
+0A5695693BBD735B9A5F9DC3C316AF47FBB3A21DEB4E56F0D5EE43F9546FF5DF
+3F1FF86D3D7B07B4D55A0B361C33A84A3B9AEFDCF575898939DB95BC0880E89D
+8BA318F134012C8ADE74CC9AEA04E55EA9BA52F49F434D94BC9FC6DE2CC7F2BF
+25D553EA37460841B33F3FA75958E6C4419C88155AA874A85D3DB4842E522B32
+8DBDD03BFCCF67AE9593C5DAA2939D6F7E7732015ACF55F8D57E59ECB9ED1973
+F7C8637E018198DACA85B4A239999EDF552C1F8988A92590E05F2628D94EFE98
+F2714AF680663C2D7A0834F09EBCDB462719D7612AD5B27B897AB0A7056FAD3C
+0CAC592C66CFEECF2B5E99B3416D7A7D5F9B9D399CF3A02BEA3CA365EBE7C80A
+7667F349A7E7179F7D1F9041E68087DCBB19E96381906CB06B40F3632CCE51AF
+86E82296C01DAA2721DD5BD1C45D64FD598EFB98E25E795BD2876F3B849EFD96
+1284556D4042542E85B9AB8B39F35272CF8A79C8B70542BE40A2C6E026F11102
+129BCEE80F95AE7EA00DF4955B1356FF6FB1E518F27BA677534B6AD2964B4435
+3314E5B1B53994E99074D66D6DCF06922C74E8DE5589F8E75FAE3778F76BA690
+FB4155AE2D426ED9B41C388B70B07A3ABAC4727D541C86F15C864BF12F21BD40
+AF7E67797C1C84713C3485F8FA1556ADD5965D228935578BE5D8D91A1367156C
+3A59268562B0544C024438CF7DF1E0574B3B7D8EDA35210031CFB15916D81FB5
+A3E543DFA501D9AFC15C12D79116B4E893ED78FD2B572F00B2C3A6411C24563E
+625CFC0CCD9A1BF7BE5D634168E9F81B8F50FEF891D8447861A4A10A1C97C854
+DB1E848773E88AAD2A7661E208C811967ACE23808A38F182768ACF82D8D5BC2C
+837C21652EE47B9651A307FFB7EAF5C7C71E24CBC8183E0563F89C2C01E220BF
+81F0A6434783C016930283963CECDE5E8D1D4D3AC4CE405EB8E51304FDD68E18
+BBA7B058D22CB15F6CC2780617D0A3641ADAF889A645F2746B608A037B575463
+98642803BC3EBBD4C82BF3FFF11FAEB676D391DDEB0142FA9AA80F1E8BA5BFE0
+9B801FA05BE5F6E81ADF3BEDB1289720A5B8832838522072C6E4F463B1C90580
+116EC5C6A35A4EB4D6995F3A0EF17192F3BE9508791C4A717C5C42BA7F563C95
+C97E5ECAD5A3B0134BC37C79A9F922ADE764BCEFD265CDE99FA037A1DF1AA46F
+7D0A4370E15F6C2186B81297C6D5AD259385AD187D4FBDA96A227A8228F838AF
+A6B5D3167DE49B1BECC59AC798CFFE9C0577DD4579E7DD1A92F0061325E8D881
+8E920F452C7FE07AE19E9580BA5C888454842CF73CF7D160E65504264CC52172
+ACC09B18F8D7316395E403CB62B101F2A126EC0DD8BCFC4F8BAAED9181F4342B
+744DA2D4A96B1AC4529B8FDD8E59505A1769DC307D8CC9F1DE37ED39B362696E
+7DEEBAA327515967BA1B76E4862D611A47467DAD6F3ED5AB5ABEBF93123743EE
+5920771488F1DE813891F780F67C7AF2C6B5C4ED4115A4CF06AAF33395F424A7
+39DEF80AA4246CF4EC9AFACAE11061E04E9835D94E481B2893814DF000C86442
+416528C830E31278F16B0AEE501335FBD0618DBD441D0AC158D31CD29FCC696B
+5ADEC6994ADF5705D263DDE9B3348D0BD9931E4C1C675F960E3606B07D767C3D
+F9F1C1F6E4FA361D4DC9D7E6CBD7A0F574399C70652D8B1EB95592604DD3F1A9
+9980C9839E41B35131C743036436EFC9D39CDD072BA2B5F8970440467664B592
+057908E3C467F5901FA10FF7F84FADD39D0FAED3A5AB26DCAC0C102792B60B40
+18BC1AE22C5D6BFE5CE451DD7BB973FA0CE8D51E5C92565DD6FD993F3BE5EAD1
+0DA61A6416F3C53515336A5E5BBA9C01EA60CBFAE88CC639E77DF1F1C6F84764
+4CE12699FF7B2B894847DA6EAE51FEF861B5B2473CEDFC581DE1675A624CAE0D
+E9656E50D67AB8A18FB93DEEDC6FAA1EC6B72EB3A32FD5BAEF1DC1EB2D2050FD
+2A0853197D5DBA501AA30EC13FED962C491E337437761A7BF83185195A07A29C
+B44D3590F3D90E75DB051FDA90BC33D5BCD4D04532678FDC7BEDE64D19825205
+C00BE04BC1F4A0E42D433063DA14811F73AA3662CE8B9312E99F5EABC0511DE8
+3B2A2130F7B05A8144FC151388A2D77FD9337A77ECDB0032473CF428EEAA9CC3
+BDE8D1A33DC4A7FBBB671E502D6BAB9137010C62C0B2D53B0CC3B8223B16ADCF
+BB5C66DB96885932614934A236279D21AC0ABA1EAC44629A91974697BE1F4A4E
+5153F442E89A3845718BA21C61DDF64293F660DB1940211E65CA65D3E541F932
+3CD42DDACC8205EB8E7A5B60F47987A27053C8D38420DDC98085C0026F54F356
+4D06965C30CE66FCB1AC7DA8569BE294C66FA274E51C95FDDA10EDD1F3C71044
+49A95EB268107117F95AC958176307DDFC4E7ADB78F57674279E8DEB2FA1BBE4
+2BE2289F18A0AA76974EF43DD72468B43550561898EBAE14FE6C2A1A3FC0084A
+01215CA57897C78EAFCC360EFCBC6D8B9A87197427A58A6259EF01A1F92D0DC6
+942848ECDB0008BFB79F504328B74ECAE90D087589D12C93A3051E197C1D1DEC
+6B4B59A495998E9AA23C3BA12B0312EDD361007A88189449E8366F74390511E2
+1B94312B8C0D49A098321F8E8863FF6D722078CE23314D8BBCEB634049F7F2A1
+1AB0DC6F6800F2A3A37966F48AC6F25ADFFFC6D65B72F9E4113EA7F4164F5CD5
+003C8063FF3F6498602BB0D05FABA495EEEBD7CE0EAF4B9EF6E06E9B7B46BB79
+4B1BAA79B27906ECC5AD5492EE3D6862D5BF3985EF9A299BF3C7EB92D5E0B7A6
+E3B4CCB547B86C15E74F8114738618986183EFB2964FEC3633C257465E881738
+FE917BE6165E47599C9A96588A27B233E55FBC46EC426D95B75610C81305022C
+04D659187C3C426CA4CA4DEF4D29D4D159EE107F1E49DAED3AE9672493E0E4E6
+189DB2A66059E375608744067B321BE59627C7F6A411D762462D013860A0E00B
+92D54CD2F1CEC18E269AC7405327D182B28B7BF80185FF39DB6E7BA6116BF4F6
+3A767605FFEE1477DEB5671A886C6F477D89F757B579AFA4C0816D22FA5EC321
+A5916B86943E39A80018ABC6665A76C201DA0ADEBD9D340A62632AC076EA6138
+1A3AB5F1C4D5DAEB83B7E7268776A9DF839C3755048F9636B4738B2BE7A10A2A
+6EE234486D3ADC21B34F49EEAD88A0A53B06DB5B94C5B743BD094CFDC8D0249D
+9D750F862DFE406016A9DAAA951F5700DB79C3819B3F7B3E460755BC1617D2BB
+682D60307A13E25EBA4719143A25DD2A332FF0FE3623F1CA37EDDE1464BF5770
+9B06EB096B3EF528E4DE5B388E3F4531A9446A9870A8800F0282D0D26EA4DB13
+68D2F26F881B5241A159D4BEEB24891EFB76D305A7C0702479A941D5C7A57874
+CE446D22F81BE7DA7F461BAE40E71BFD0EF3FECAA0CBDCDAB51951AA98BDF73E
+312CF7794FE9C3994BC0C800B9D80E6A55FE53917EE4A3782C7895EA820CA192
+E0DB82D32F105656A0D9645B4107BCB7F30D0235AB79F871C92A6F31A009699A
+9738992AD82533921E49ADD41BAE823BA54DCFF4692EE61E4E065B201BD466A1
+A70B5B5A46D0374465BDBA521F67CD3CF58B18F00658B5065E1514079C6BBC54
+F789E2E80BC3C3CCB97D1AFA1EA3A2B5025322CCDE7D17BF5C986B4613326C58
+2AB57963C71028E2ED61E4FD683BE8167A425F4930650127B6EB6410BE7AD1B2
+FCC2D8EDC8BC93B07065E1F219C6D859BBD187E0727619CFCF2BA3B53B8DDE6E
+597745D22AE583FEF7E3C4EBB50F501BCD1AEDA38CA9E1CB69BBAAC09680717C
+988C05B869C340C83E9BD0A5B9F4C6E49C9F897052B2CFD0C974E181E0A1FA4B
+07D9C4F69DA6D5662CCD8A38FDE53BCE2AD0ED51427690D01DEAF59D32D5A012
+5ADD4D37928A9CA125B053A3F30E86DB537DD1B2B733A07E3F78EE28559468DA
+EC2ED0DA8550103FC1422BADC190FFD568064EAA5DCA1CFEA5EEF3B2EF013CAE
+CFB0C8E837B2F0E1C342E6DE6B455973A84421543B5813040FB909206DB35F74
+BD079E397D4B7DC3109FD1F82C055DD86DC654506EE354CAF1A9B37D4C90D320
+4657B65382FCE35E41FEA7666803F006466CCB8D8C766FE0ABE37D8001021B73
+9466F263AB61A71C2257276AA111A2A43BA503F7F4B5627AFE948D3C950EC020
+2AD8FCD3F3779CC83D2BAD918D47099B01CD04DD13DC14DBBD9262C838E74A5D
+B32E16EC16BFD020DFA218FC749FAB5177113900995944BE33FF2EB403BF78E4
+D628CA1AAA43DF5FD1A55795B5E784982373ADD2C24E41CED77BEEBF433100FB
+C7284C3087B7F482FAB55B04ED60E3C1EF26991784CE2FBF344B74A6278DB508
+FC6BD4B6608EA3C2FEBB17FA8C62D04FCDD096374ED308FD0D619A01870F063B
+FB48BFC3FDC972BC2FA7BD620AEA2EF2732CCF01DF3FA161D813B1E1F59A830E
+760E8A979B4733472C0AF3B78BF869D59CC03F8CBCC1E7A175B4003E7C705793
+F6DCB6021CE7D3D9FF561CDAC0E97B33ED68E96B52157EC32F8FC63EBE1B36EC
+5741DA32BD91DF5884FFAAF5C217837E88CCB0CAAE7D053DC2B516886BB2047D
+34F91AB227C1F45C4E96C49AC48AB9660256F73700367CEAB8231C7C0DF7A14D
+F75EAD88E0EC8765DC99CA983B3F570AAC0EB18DF5F6E29A7640109202680A7B
+CC3F5F6A7C53833CADA95EB0AF84A564A758D41B50E25D7DBAABF0430DDB564F
+1A63D3DCD8FAAB2F88BFA81EE431464076DF9F21BA71376BE9A4148DB90E1B3E
+DD3C74A51CC7B677B6D3CC480683C02B72E00F324C184E27FE8EDE0826CC894F
+EFA920A2BF377507627B333D83DF452ADEA1915A556AAF054B993159F1D78CC6
+4BA6AE5BE406B2F77C1611820F3F9246537EAEF5A4AFE381A60B93403F34E661
+3F03A2AFFA22874B5D2489C65E09016029C743A86FF381D7F2B2F385DCAE5B48
+BE3EC8BC2BDDD7509440ADA9CB5178059B6027A12156AD392E6C0228EE33DF2B
+0F37925ABE7997A4AE16FAFC63EBCF9706322A9F954BC945F1611668EFD0863A
+CE70E948B212BE1679964B46C7EF1E442E6B98725305EFE8ADF4B0F200179C41
+9E2C19F788F67C1519852A24BD69F45A0954CA3865E21906C3441622CD8004AC
+259235361163C93CA9885446E8CC38A5558E9B5BA00C79F587CB949865F58BE5
+AD2C05EC090AB4132F07162F9C36F122444440D60DB5ED134BA722971FF50CAE
+2FDF082B0BA77072CD1235DCE3413284F4B8ED474E7CE6C9B828ABACEAE96D89
+1CF3A71C93CF9BD61C5639E39ACA320571CE20E490F2C4B12CE69D862036C543
+3D34ADE2C62E1BE6081E3593C5D975A64121B92DB6DCF9808B433046C276B4A3
+7B466BD07BFFBF19A4973B7DE4B3779602A17BA259E992FDC7DB442794BCDED3
+04162C1C1FAFFE0F7641E1A41128C871F3B3DA5222BC5C42321FDFB7BBF1CEA0
+B646E09D746DDF3CA8347C2CF0DD4CA194D97266296B24B1CB954FAB6A2B5DB8
+BF63180512E8C7C8B1661A2285DA1CEF58CA0D9287136663B2A0037197887DD4
+DCFCD2F812184BE3CDD49003E5C8DDB0332493C6909DD0FC7240C8C040319C5C
+CD95115AF08C64889A7441FFA8038F533C800B19BF39AC3C937ED4E015B6C159
+937F2E7AE2456932EC87456761BF53D6EE34BF53132E2ED69E5E90B627317FAE
+F70C95F1522DC4774C10A8A57E6C56F9AA6BD0E3B1321074B02FD2FB6DD8291B
+CFAAB186196C1ACF6B3CF36C727611962713E72F93907B824E99CE9596061E9F
+AF6CBE77B92EED6AE1643269E1804F32AB2AD9B19ED940B1F1CA412BCE3A8284
+AE622DCC4D628A6A5C7518DA4C30CD8F803780BCDD76E57E0A0930A0484E5063
+9E8671A173903B3E2FA6C4099D530911F952AF2CB1B684BD604DCA964F000190
+B2A22D9DD3DAA1C1EFFD5069BD4D480272790CCBAC18129BC2DD30B43B864997
+C55042F798185B94A5A1B686C797DDD91AB776372225021BC424183177229D42
+D9AF2D351C6B29C7E28E60E5B5A5F7A1E43BA9A42351F4D8EFE97370C94A28C3
+9C242232B3DA7E01EE8F0B400BD2B52A04D1B0A15678D03AF0B8A58F518DB8D1
+13E82B4ADD069718805B99E4F09DC6380CA2946B7E973A3B4134DDC37F598632
+83ACA4F59AC6C83F195D6780630AD2D065C7444E0EA52DDF2C698AD2A73BBF0F
+2870558D45E7D271FCF54F26888818F337ED4D1BD6FB9063744E2992E7EFBF10
+919810E483CB88F4F1F115B07A88ABE9B9D31DEA8D07D05DEA863F9C615309D0
+3CFF63AFABA2887847574929E3940431A08A4F8BA576E0D4A5F962FC98D643FE
+6C83333A346FBDB24ED231774413482D56B81D4C5E6CED4A5D551DF282C120BB
+2547FD1F2BAF3833C49111EE3F7748483746E0CC02AF9D4A4861E57F191CC377
+7D32CBA2A07B4F2FC3AE9267B19D1E8EC4F5C2C95BD539FC2DF8512A68815A17
+58D6E367EB4D787C44DCA9D3E350D00765C4B74C809F76623B8E8894FA28E7FE
+C0C0D4885BBE5E4C1AF4F48660FD3E985D68A6DBD2854BA0C3A3714E9D2E3A07
+FFEB7D7B8AA1DDCD4EA5FF3D238065F0D1A4586CC26A0C794435ECDDB1BB212A
+273C4A2F5F8B34950DF3FE6B52A6940B1E7B9F6B3AA5301B515C23386B3B06BA
+1038AAD5EA72A3DE36509AA936C1B2F1BC90DCEEDDE20DB0DDBD1E7BEB19655E
+712C15CE752065CACD18FF85525EF11C2EC887CAE6E958D49669FDCDB295AE03
+390B0F7C0C15D19AA733BD65CD762CB9AF2265D21A7B686201BC3467E4F01915
+97FB9B69DEF4F01406A2FA4B10D7153174F2B757F544B20FF1F0BE594EE9C7AF
+124A39686C20F600B5178BD8828EF49EDC1B934C11B437601C586D510418CF21
+7CB6363B7354191964E874642878A7C2C38968440A9A0A0D60C31282153E49D1
+CC4DAA00BDD455D8CD0352F77E35CD8B4517E76A51E716E813EECE8161907FCE
+0084D3D3609B647AAFD3E89C88DBFCF9DC8950778CF69B69B8D9D8E1B267B05F
+1ED351E8339E712241473610C9CDB7981C6BCE5AF627E5524CBE9DD32936A144
+65CA5F53E8DE077CCE9CD943E58C9A141AE843642FB4B54085B9A0D3404F9F15
+71A8D2AD8D0A75F73029E70ADFFE2841C906F7D25789616801B2D55A00CF1300
+8528DFC29C96298557EBE1FA4834ED68A526380226DF633CC78A212F86EAC9FC
+5CB72A361402C961153AB100902E2E96D38CE185AB62DA6598D02222D9BBE239
+4E91E45537BF2FE35DA51D2FF406BC05A36582A3F2E506D6BBAF4CAFACEB5E40
+3E0732E051DDBB7D4CDDA853F369C1B1E83DA9D311F599B86DE5781D90567932
+59372A73EBFB50E16349D4A98C799372A40E44209F4B49F049280EEF20F2F15B
+F23C0BE0E4C7DF12CB3A26A6A51A768DEF2276F8170B01FE810200E45EDE1DEA
+D447494167F086B4A8E1F0358DCC7D89F32D7AFA977BAA8BA33ABDD36E0D499F
+E26D160BF8D0EE1E5ABA82C2D484F289153CB4ACBBD6C6BEF22E9EE723D0497A
+A0297FA37E82412EE0751FE6CD5A07D241FFFE35315DA65AC3C0C3FDD113EECE
+74DC56AEBDE651834C922994A43FCB24DC96E445098C396E04D1AF12C8451F97
+E365B54C21ED97E03DD908B9FFEA578186C223BF658DA8EFD1C07D9B3C8B0866
+1ED264B806EEF5BF239AA8392A344285AA84A74BA564B91601A9C8C223718994
+73112224C3EBC94C20CAD84E95C4F355C6EFEC3675F7F47338BCEC2A214E826D
+20DA9849ED82744532F4F296F0B4F6A045840F1D136FD7EA72A5E8E5B5659D3A
+6F581456CF0A1D5C847EF38B0351497111683190F3ACCBA435D54142E1CC4E27
+1CC22939F8CC61A14220DD4C1F894F9EFB7848C4AC980A28266C3BB50BE27D41
+E09E93BC8BBD9208010B740D5856758C499DA64968136809A0EFEB5993059C9F
+45C2E66E93D4B211F95AF7DFAD933282855731ADAF6579E605F7E8D01B758F3B
+CDF0C960A0626E29880FBA763F5656CAF7DCC3A0135B2EDB19307A640D1BFFBE
+AB543C3CD0EA5DBAFE25B442070B996E5EAAD8F3787BBE3560EB9284391D71A1
+445C4AB7951699732AADFE8082D22F863CCEA610B6088301AB723A60DBC46C41
+72E50405707D2E8E34693FD510585B3E5999E01E565809A5C8F8EC35908D2E9D
+914B884D8587441B4720BAC26172342B06C0C6BB4766DF4D981390CBE00169E9
+F0A47B5DAB7C3F2C2B17B51A4BC02EF478E30819C2D9324C2C9E2E94A3EFA5A5
+22C10DCA37F8B47070749BE6A458C82CB96A647451D778C619168BD8195FCA35
+67E5AD4643448A42574F685569AD48A91606223294CCC857A2080C71DB25F41C
+FC6EAA2D134CA6AF028D0E8D261CE741017125537AD28913EAB68FB59F51E8E6
+E7C5C1117A432671EB7AC52F3F6EA676C6B31C95FB85248988C150E07B94FB36
+2A08E1839598F0456E91133C26EFCAF2A0B52B73645F61ED5E670BB72232EB9E
+D8CE74C27781EC2C22E620B08529D1C086DEF08FAC7648642232C09C5F786ACF
+8D022471B8536083E20307275DE3CD05B0F7AF7762D4B2465BCD470B49CA8D86
+148B97877A74EDAED863611BEEDA9DD16E7CEE88DF6B223B5003F176B87EC6EE
+370ECFF2697DA8BCFDB5E0B2DF3639F2C291835B3E6BBD006655F88E1C28C796
+FC46F3C0B5E915AE9B0669176A9F9791E529F2E5449DDA5FA1BD984243D99801
+10F5C6B9D302B849C83FF96DDF957D9B691A8F0D14FF401B271E46E4EFAC90DA
+33AEE9E6FD19D5ECD028253A96CA67D8B89E22D50FC038ACCD8460FA2913E49A
+935FC62560D950784CCBA8B03F9671AD71C05BA7E236545912D2A253F1532192
+D981F04448647645100FB96BF3C2B1AFC1F7B5B5E7FF398E5AFC308750259885
+82BF820FC4ECD25EDDD22E7C41D3BAF2CF2699CDFCF6A2DAB0DEBF5093CC2D51
+48F014E5C69A77B679BF71E407E0CDB76F7E57E9558D58F4DEE8CEE9BD51C0B6
+1719485266F40DFACCA273DA2639366B058DCADE19FD2715EBFE25F50FB86319
+BB296E7F839F637BB1EAF9AC98F3E2D5E4B896FB548905BB969FE28B4B6DEA96
+CFCFD97D9C6C647C1E3455D3F7958C68B5E7C243FEC9BEF88AA3F6533C3AA2C2
+3EF647307853D04C2559F185CEF764094159FF559B0FD81D95EF7E36F5748DF1
+CB39EABAEA3A4C8EB08E03A56798F3BE4A3378EA86DAF0EC01C242E8AB3A7BCD
+F3EA1680AB53CC41C2774A9DC8B3EF8CA4EB907D027F7A2BAAAED65348F7A97F
+3C52C383B7617E3995C80E4CA7A82D97926C731331166DC8AF2712CA01647A8B
+4DBB00A1D87A5D957FC5952AE713EBA53CD5E2DDE96965F62653F58831009867
+EF7FC551FB7E2F22D368F483B9CB3F6FFF81436C80F2CE5FCD03CEEB211D88BE
+59021F4B0D1632763B8DCDB52C022487144E3653E8C8A490116FEB5E5298D132
+4746422888187900B47118FC36C9
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
 0000000000000000000000000000000000000000000000000000000000000000
@@ -5716,62 +5167,57 @@
 %%EndFont 
 TeXDict begin 40258437 52099151 1000 600 600 (main.dvi)
 @start /Fa 138[51 6[51 6[53 103[{}3 83.022 /CMCSC10 rf
-/Fb 152[42 42 76[65 25[{}3 83.022 /CMSY10 rf /Fc 255[52{}1
-58.1154 /CMSY7 rf /Fd 135[44 3[44 1[44 2[44 2[44 2[44
-3[44 1[44 44 44 97[{}10 83.022 /CMTT10 rf /Fe 152[38
-38 68[77 33[{}3 74.7198 /CMSY9 rf /Ff 163[28 41[28 28
-28 6[22 22 5[28 34[{}7 41.511 /CMR5 rf /Fg 134[26 5[26
-26 2[26 26 26 1[26 5[26 26 2[26 55[26 26 40[{}12 49.8132
-/CMTT8 rf /Fh 134[30 4[23 28 7[31 1[22 3[28 25[47 2[46
-72[{}8 41.511 /CMMI5 rf /Fi 148[35 1[23 29[56 2[54 72[{}4
-58.1154 /CMMI7 rf /Fj 140[40 3[49 2[25 44 7[44 23[74
-1[39 4[73 1[68 66[{}9 83.022 /CMBXTI10 rf /Fk 134[32
-2[31 37 24 29 29 28 2[38 54 20 33 25 22 3[29 32 1[27
-34 16[39 4[51 2[50 2[45 69[{}21 49.8132 /CMMI6 rf /Fl
-146[42 1[42 42 5[42 9[42 5[42 42 1[42 24[32 56[{}9 83.022
-/XYDASH10 rf /Fm 193[48 62[{}1 49.8132 /CMSY6 rf /Fn
-134[0 3[0 0 1[0 1[0 0 31[0 24[0 2[0 1[0 1[0 2[0 2[0 0
-2[0 8[0 12[0 15[{}17 83.022 /XYBTIP10 rf /Fo 134[0 3[0
-0 1[0 1[0 0 31[0 24[0 4[0 1[0 2[0 0 1[0 0 2[0 8[0 12[0
-15[{}17 83.022 /XYATIP10 rf /Fp 133[36 38 3[44 28 36
-35 1[39 37 46 68 23 40 1[26 1[37 37 36 40 33 33 41 13[47
-1[61 49 4[65 42 34 64 2[57 63 55 58 58 5[21 21 58[{}34
-74.7198 /CMMI9 rf /Fq 131[78 39 1[37 35 51 35 41 25 31
+/Fb 152[38 38 68[77 33[{}3 74.7198 /CMSY9 rf /Fc 163[28
+41[28 28 28 6[22 22 5[28 34[{}7 41.511 /CMR5 rf /Fd 134[26
+5[26 26 2[26 26 26 1[26 5[26 26 2[26 55[26 26 40[{}12
+49.8132 /CMTT8 rf /Fe 134[30 4[23 28 7[31 1[22 3[28 25[47
+2[46 72[{}8 41.511 /CMMI5 rf /Ff 150[23 29[56 2[54 72[{}3
+58.1154 /CMMI7 rf /Fg 140[40 3[49 2[25 44 7[44 25[39
+4[73 1[68 66[{}8 83.022 /CMBXTI10 rf /Fh 134[32 2[31
+37 24 29 29 28 2[38 54 20 33 25 22 3[29 32 1[27 34 16[39
+4[51 2[50 2[45 69[{}21 49.8132 /CMMI6 rf /Fi 146[42 1[42
+6[42 9[42 6[42 1[42 24[32 56[{}7 83.022 /XYDASH10 rf
+/Fj 193[48 62[{}1 49.8132 /CMSY6 rf /Fk 134[0 3[0 2[0
+59[0 2[0 3[0 2[0 2[0 0 2[0 8[0 12[0 15[{}12 83.022 /XYBTIP10
+rf /Fl 134[0 3[0 2[0 59[0 6[0 2[0 0 1[0 0 2[0 8[0 12[0
+15[{}12 83.022 /XYATIP10 rf /Fm 133[36 38 3[44 28 36
+35 1[39 37 46 1[23 40 1[26 1[37 1[36 40 33 33 41 13[47
+1[61 49 4[65 42 34 64 2[57 63 55 58 58 5[21 21 58[{}32
+74.7198 /CMMI9 rf /Fn 131[78 39 1[37 1[51 35 41 25 31
 32 1[39 39 43 63 20 35 1[24 39 35 24 35 39 35 35 39 7[57
 57 77 1[57 55 43 56 1[52 59 57 69 48 59 40 30 57 59 50
 52 58 55 54 57 6[24 39 39 39 39 39 2[39 39 39 1[24 27
-24 2[31 31 24 26[43 12[{}64 74.7198 /CMTI9 rf /Fr 134[50
-1[69 50 53 37 38 39 1[53 48 53 80 27 50 29 27 53 48 29
-44 53 42 53 46 12[66 53 2[65 72 75 91 1[75 2[75 75 60
-63 73 2[72 9[48 48 48 48 48 48 48 2[27 32 30[80 1[53
-12[{}47 83.022 /CMBX10 rf /Fs 133[39 3[40 48 1[39 37
-2[40 50 1[25 43 1[29 3[39 1[36 36 9[69 5[63 66 53 63
-3[71 1[36 69 2[61 69 59 63 6[23 23 58[{}27 83.022 /CMMI10
-rf /Ft 133[34 40 1[55 38 45 28 34 35 38 42 42 47 68 21
-38 1[25 42 38 25 38 42 38 38 42 13[47 61 6[64 1[32 4[63
-1[58 62 19[30 32[47 12[{}33 83.022 /CMTI10 rf /Fu 135[59
-2[62 44 44 46 2[56 62 1[31 59 1[31 1[56 34 51 62 50 1[54
-9[116 3[62 84 8[42 3[74 86 81 12[56 56 56 56 56 56 49[{}29
-99.6264 /CMBX12 rf /Fv 139[34 35 36 14[39 49 43 31[67
-6[25 11[25 46[{}9 74.7198 /CMBX9 rf /Fw 133[39 3[39 39
-39 39 39 1[39 39 39 39 39 39 39 39 39 39 39 39 39 39
-1[39 12[39 39 39 1[39 39 2[39 39 4[39 2[39 1[39 39 5[39
-10[39 39 39 45[{}36 74.7198 /CMTT9 rf /Fx 132[38 34 41
-41 55 41 43 30 30 30 41 43 38 43 64 21 41 23 21 43 38
-23 34 43 34 43 38 3[21 38 21 1[58 58 79 58 58 55 43 57
-60 52 60 58 70 48 60 39 28 58 60 50 52 59 55 54 58 3[60
-2[21 38 38 38 38 38 38 38 38 38 38 38 21 26 21 2[30 30
-21 4[38 15[38 2[64 64 1[43 45 11[{}80 74.7198 /CMR9 rf
-/Fy 163[30 39[30 30 30 30 30 6[24 24 5[30 34[{}9 49.8132
-/CMR6 rf /Fz 202[33 33 33 33 33 33 6[26 26 40[{}8 58.1154
-/CMR7 rf /FA 132[42 37 44 44 60 44 46 32 33 33 44 46
-42 46 69 23 44 25 23 46 42 25 37 46 37 46 42 3[23 42
-23 1[62 62 85 62 62 60 46 61 65 57 65 62 76 52 65 43
-30 62 65 54 57 63 60 59 62 1[39 1[65 1[23 23 42 42 42
-42 42 42 42 42 42 42 1[23 28 23 2[32 32 23 1[69 2[42
-23 18[69 46 46 48 11[{}82 83.022 /CMR10 rf /FB 139[52
-53 55 1[75 67 75 4[37 75 67 41 61 75 60 1[65 13[75 100
-12[88 1[97 1[102 19[45 45[{}20 119.552 /CMBX12 rf end
+24 2[31 31 24 26[43 12[{}63 74.7198 /CMTI9 rf /Fo 134[50
+1[69 50 53 37 38 39 2[48 53 80 27 50 1[27 1[48 1[44 53
+42 53 46 12[66 53 3[72 7[75 60 1[73 2[72 11[48 48 48
+48 48 2[27 33[53 12[{}33 83.022 /CMBX10 rf /Fp 137[40
+48 2[37 2[40 50 1[25 43 1[29 5[36 36 16[66 53 63 3[71
+1[36 69 2[61 69 1[63 6[23 23 58[{}21 83.022 /CMMI10 rf
+/Fq 133[34 40 1[55 38 45 28 34 35 1[42 42 47 68 21 38
+1[25 42 38 25 38 42 38 38 42 13[47 7[64 1[32 4[63 1[58
+20[30 32[47 12[{}30 83.022 /CMTI10 rf /Fr 138[62 44 44
+46 2[56 62 1[31 59 1[31 1[56 34 51 62 50 1[54 9[116 3[62
+84 8[42 3[74 86 81 13[56 56 56 56 56 49[{}27 99.6264
+/CMBX12 rf /Fs 139[34 35 36 14[39 49 43 31[67 6[25 11[25
+46[{}9 74.7198 /CMBX9 rf /Ft 133[39 3[39 39 39 39 39
+1[39 39 39 39 39 39 39 39 39 39 39 39 39 39 1[39 12[39
+39 39 1[39 39 2[39 39 4[39 2[39 1[39 39 5[39 10[39 39
+39 45[{}36 74.7198 /CMTT9 rf /Fu 132[38 34 41 41 55 41
+43 30 30 30 41 43 38 43 64 21 41 23 21 43 38 23 34 43
+34 43 38 3[21 38 21 1[58 58 79 58 58 55 43 57 60 52 60
+58 70 48 60 39 28 58 60 50 52 59 55 54 58 3[60 2[21 38
+38 38 38 38 38 38 38 38 38 38 21 26 21 2[30 30 21 4[38
+15[38 2[64 64 1[43 45 11[{}80 74.7198 /CMR9 rf /Fv 163[30
+39[30 30 30 30 30 6[24 24 5[30 34[{}9 49.8132 /CMR6 rf
+/Fw 203[33 33 33 33 33 6[26 26 40[{}7 58.1154 /CMR7 rf
+/Fx 132[42 37 44 44 60 44 46 32 33 33 44 46 42 46 69
+23 44 25 23 46 42 25 37 46 37 46 42 3[23 42 23 1[62 62
+85 62 62 60 46 61 1[57 65 62 76 52 65 43 30 62 65 54
+57 63 60 59 62 3[65 1[23 23 42 42 42 42 42 42 42 42 42
+42 1[23 28 23 2[32 32 23 1[69 2[42 23 18[69 46 46 48
+11[{}80 83.022 /CMR10 rf /Fy 139[52 53 55 1[75 67 75
+4[37 75 67 41 61 75 60 1[65 13[75 100 12[88 1[97 1[102
+19[45 45[{}20 119.552 /CMBX12 rf end
 %%EndProlog
 %%BeginSetup
 %%Feature: *Resolution 600dpi
@@ -5829,22 +5275,22 @@
 SDict begin [ /View [/XYZ H.V] /Dest (chapter.1) cvn H.B /DEST pdfmark
 end
  523 365 a Black Black 586 448 a
-FB(An)45 b(Enco)t(ding)f(for)h(Censorship-Resistan)l(t)i(Sharing)566
-740 y FA(Christian)27 b(Grotho\013)1239 710 y Fz(1)1276
-740 y FA(,)g(Krista)g(Grotho\013)1889 710 y Fz(2)1926
-740 y FA(,)g(Tzv)n(etan)g(Horozo)n(v)2599 710 y Fz(3)2634
-740 y FA(,)h(Jussi)f(T.)h(Lindgren)3326 710 y Fz(4)894
-882 y Fy(1)967 914 y Fx(Departmen)n(t)d(of)i(Computer)f(Science,)g
+Fy(An)45 b(Enco)t(ding)f(for)h(Censorship-Resistan)l(t)i(Sharing)566
+740 y Fx(Christian)27 b(Grotho\013)1239 710 y Fw(1)1276
+740 y Fx(,)g(Krista)g(Grotho\013)1889 710 y Fw(2)1926
+740 y Fx(,)g(Tzv)n(etan)g(Horozo)n(v)2599 710 y Fw(3)2634
+740 y Fx(,)h(Jussi)f(T.)h(Lindgren)3326 710 y Fw(4)894
+882 y Fv(1)967 914 y Fu(Departmen)n(t)d(of)i(Computer)f(Science,)g
 (Univ)n(ersit)n(y)e(of)j(Den)n(v)n(er,)e(USA)1532 1005
-y Fw(address@hidden)606 1065 y Fy(2)679 1096
-y Fx(CERIAS)g(/)h(In)n(terdepartmen)n(tal)f(Program)i(in)f
+y Ft(address@hidden)606 1065 y Fv(2)679 1096
+y Fu(CERIAS)g(/)h(In)n(terdepartmen)n(tal)f(Program)i(in)f
 (Linguistics,)h(Purdue)e(Univ)n(ersit)n(y)-6 b(,)25 b(USA)1591
-1188 y Fw(address@hidden)1580 1247 y Fy(3)1653 1279
-y Fx(Motorola)j(Labs,)e(USA)1572 1370 y Fw(address@hidden)827
-1430 y Fy(4)900 1462 y Fx(Departmen)n(t)f(of)h(Computer)g(Science,)g
+1188 y Ft(address@hidden)1580 1247 y Fv(3)1653 1279
+y Fu(Motorola)j(Labs,)e(USA)1572 1370 y Ft(address@hidden)827
+1430 y Fv(4)900 1462 y Fu(Departmen)n(t)f(of)h(Computer)g(Science,)g
 (Univ)n(ersit)n(y)f(of)i(Helsinki,)f(Finland)1513 1553
-y Fw(address@hidden)p Black 759 1916 a Fv(Abstract.)p
-Black 43 w Fx(This)i(pap)r(er)g(describ)r(es)h(ECRS,)f(a)h(con)n(ten)n
+y Ft(address@hidden)p Black 759 1916 a Fs(Abstract.)p
+Black 43 w Fu(This)i(pap)r(er)g(describ)r(es)h(ECRS,)f(a)h(con)n(ten)n
 (t)e(enco)r(ding)i(sc)n(heme)f(for)759 2007 y(censorship-resistan)n(t)
 18 b(p)r(eer-to-p)r(eer)f(net)n(w)n(orking.)h(The)f(prop)r(osed)h(enco)
 r(ding)f(mec)n(h-)759 2098 y(anism)36 b(supp)r(orts)e(b)r(oth)h
@@ -5871,8 +5317,8 @@
 3095 a 523 3095 a
 SDict begin [ /View [/XYZ H.V] /Dest (section.1.1) cvn H.B /DEST pdfmark
 end
- 523 3095 a 119 x Fu(1)112 b(In)m(tro)s(duction)523
-3427 y FA(In)n(ternet)40 b(censorship)f(is)i(a)f(p)r(o)n(w)n(erful)f(w)
+ 523 3095 a 119 x Fr(1)112 b(In)m(tro)s(duction)523
+3427 y Fx(In)n(ternet)40 b(censorship)f(is)i(a)f(p)r(o)n(w)n(erful)f(w)
 n(eap)r(on)h(for)g(oppressiv)n(e)e(go)n(v)n(ernmen)n(ts,)g(corp)r(o-)
 523 3527 y(rations)g(and)h(pressure)f(groups)g(in)i(sti\015ing)f
 (dissen)n(t)g(and)g(suppressing)f(dissemination)523 3626
@@ -5885,14 +5331,14 @@
 3925 y(tec)n(hnical)25 b(measures,)f(individuals)h(can)f(b)r(e)i
 (singled)e(out)h(and)g(sub)5 b(jected)26 b(to)f(harassmen)n(t.)523
 4025 y(A)h(common)e(requiremen)n(t)h(for)g(censorship)f(in)h(an)n(y)g
-(form)g(is)g(the)h(abilit)n(y)f(to)g Ft(r)l(e)l(c)l(o)l(gnize)h
-FA(the)523 4125 y(ob)5 b(jectionable)27 b(information.)648
+(form)g(is)g(the)h(abilit)n(y)f(to)g Fq(r)l(e)l(c)l(o)l(gnize)h
+Fx(the)523 4125 y(ob)5 b(jectionable)27 b(information.)648
 4227 y(The)21 b(goal)g(of)g(the)h(enco)r(ding)f(sc)n(heme)g(presen)n
 (ted)g(in)h(this)g(pap)r(er)f(is)h(to)f(mak)n(e)g(it)h(di\016cult)523
 4327 y(to)31 b(iden)n(tify)g(information)f(stored)g(or)f(transmitted)i
-(in)g(a)f(op)r(en)h Ft(de)l(c)l(entr)l(alize)l(d)h FA(wide-area)523
-4426 y(net)n(w)n(ork)21 b(where)h(man)n(y)f Ft(untruste)l(d)g
-FA(p)r(eers)h(w)n(an)n(t)g(to)g(share)f(data.)h(The)g(prop)r(osed)f
+(in)g(a)f(op)r(en)h Fq(de)l(c)l(entr)l(alize)l(d)h Fx(wide-area)523
+4426 y(net)n(w)n(ork)21 b(where)h(man)n(y)f Fq(untruste)l(d)g
+Fx(p)r(eers)h(w)n(an)n(t)g(to)g(share)f(data.)h(The)g(prop)r(osed)f
 (enco)r(ding)523 4526 y(sc)n(heme,)36 b(called)g(ECRS,)g(allo)n(ws)f(b)
 r(oth)i(con)n(ten)n(t)f(and)g(queries)g(to)g(b)r(e)h(encrypted)f(while)
 523 4625 y(b)r(eing)g(transmitted)g(or)g(stored)f(on)h(the)g(net)n(w)n
@@ -5901,7 +5347,7 @@
 (handling,)h(reducing)g(the)h(c)n(hance)e(that)i(they)523
 4825 y(can)d(b)r(e)g(singled)g(out)g(for)f(an)h(attac)n(k)f(or)g(held)i
 (liable.)e(It)i(is)f(imp)r(ortan)n(t)f(to)h(note)g(that)h(the)523
-4924 y(primary)19 b(goal)f(is)h Ft(deniability)k FA(for)c(the)h(p)r
+4924 y(primary)19 b(goal)f(is)h Fq(deniability)k Fx(for)c(the)h(p)r
 (eers)f(storing)g(and)g(transmitting)h(the)g(information.)p
 Black Black eop end
 %%Page: 2 2
@@ -5919,11 +5365,11 @@
  523 232 a 523 232 a
 SDict begin [ /View [/XYZ H.V] /Dest (page.2) cvn H.B /DEST pdfmark
 end
- 523 232 a Black Fx(2)237 b(C.)27
+ 523 232 a Black Fu(2)237 b(C.)27
 b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
-Black 523 448 a FA(These)h(p)r(eers)f(m)n(ust)i(b)r(e)f(able)g(to)g
+Black 523 448 a Fx(These)h(p)r(eers)f(m)n(ust)i(b)r(e)f(able)g(to)g
 (claim)g(that)g(decrypting)f(the)i(information)e(is)h(infeasible)523
-548 y Ft(for)j(them)p FA(.)648 678 y(W)-7 b(e)23 b(\014nd)g(it)f
+548 y Fq(for)j(them)p Fx(.)648 678 y(W)-7 b(e)23 b(\014nd)g(it)f
 (acceptable)g(if)h(a)g(censor)e(who)h(kno)n(ws)g(precisely)f(whic)n(h)i
 (con)n(ten)n(t)f(to)g(censor)523 778 y(is)28 b(able)f(to)g(matc)n(h)h
 (a)f(request)g(or)f(resp)r(onse)h(against)f(that)i(particular)f(con)n
@@ -5937,23 +5383,23 @@
 (as)g(anon)n(ymous)e(routing)i([)p 0 1 0 TeXcolorrgb
 3002 1177 a
 SDict begin H.S end
- 3002 1177 a 0 1 0 TeXcolorrgb FA(8)p 0 1 0
+ 3002 1177 a 0 1 0 TeXcolorrgb Fx(8)p 0 1 0
 TeXcolorrgb 3043 1123 a
 SDict begin H.R end
  3043 1123 a 3043 1177 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.dingledine02mixminion) cvn H.B /ANN pdfmark end
  3043
-1177 a Black FA(,)p 0 1 0 TeXcolorrgb 3066 1177 a
+1177 a Black Fx(,)p 0 1 0 TeXcolorrgb 3066 1177 a
 SDict begin H.S end
  3066
-1177 a 0 1 0 TeXcolorrgb FA(30)p 0 1 0 TeXcolorrgb 3150
+1177 a 0 1 0 TeXcolorrgb Fx(28)p 0 1 0 TeXcolorrgb 3150
 1123 a
 SDict begin H.R end
  3150 1123 a 3150 1177 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.syverson97anonymous) cvn H.B /ANN pdfmark end
- 3150 1177 a Black FA(].)g(As)g(a)523
+ 3150 1177 a Black Fx(].)g(As)g(a)523
 1276 y(con)n(ten)n(t)23 b(enco)r(ding)h(mec)n(hanism,)f(ECRS)g(could)h
 (b)r(e)g(in)n(tegrated)f(in)n(to)g(almost)g(an)n(y)g(generic)523
 1376 y(p)r(eer-to-p)r(eer)30 b(infrastructure)h(to)h(enhance)f(its)h
@@ -5966,13 +5412,13 @@
 0 1 0 TeXcolorrgb 1520 1805 a
 SDict begin H.S end
  1520 1805 a 0 1 0 TeXcolorrgb
-FA(24)p 0 1 0 TeXcolorrgb 1603 1752 a
+Fx(22)p 0 1 0 TeXcolorrgb 1603 1752 a
 SDict begin H.R end
  1603 1752 a 1603
 1805 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.perng2005csr) cvn H.B /ANN pdfmark end
- 1603 1805 a Black FA(],)h(in)g(whic)n(h)g(censorship)e
+ 1603 1805 a Black Fx(],)h(in)g(whic)n(h)g(censorship)e
 (resistance)h(is)h(de\014ned)g(as)f(the)523 1905 y(inabilit)n(y)41
 b(of)f(a)h(censor)e(to)i(restrict)f(a)h(targeted)e(do)r(cumen)n(t)i
 (while)g(allo)n(wing)f(at)g(least)523 2004 y(one)f(other)g(do)r(cumen)n
@@ -5980,13 +5426,13 @@
 0 1 0 TeXcolorrgb 2637 2004 a
 SDict begin H.S end
  2637 2004 a 0 1 0 TeXcolorrgb
-FA(24)p 0 1 0 TeXcolorrgb 2720 1951 a
+Fx(22)p 0 1 0 TeXcolorrgb 2720 1951 a
 SDict begin H.R end
  2720 1951 a 2720
 2004 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.perng2005csr) cvn H.B /ANN pdfmark end
- 2720 2004 a Black FA(],)h(the)f(adv)n(ersary)e(is)523
+ 2720 2004 a Black Fx(],)h(the)f(adv)n(ersary)e(is)523
 2104 y(gran)n(ted)26 b(extensiv)n(e)h(capabilities.)g(In)g(particular,)
 g(the)g(adv)n(ersary)e(is)i(allo)n(w)n(ed)f(to)h(insp)r(ect)523
 2204 y(ev)n(ery)33 b(request)g(or)g(resp)r(onse,)g(transcript)g(the)h
@@ -6009,20 +5455,20 @@
 0 1 0 TeXcolorrgb 1821 3001 a
 SDict begin H.S end
  1821 3001 a 0 1 0 TeXcolorrgb
-FA(24)p 0 1 0 TeXcolorrgb 1904 2947 a
+Fx(22)p 0 1 0 TeXcolorrgb 1904 2947 a
 SDict begin H.R end
  1904 2947 a 1904
 3001 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.perng2005csr) cvn H.B /ANN pdfmark end
- 1904 3001 a Black FA(])h(sho)n(ws)e(that)i(censorship)f
+ 1904 3001 a Black Fx(])h(sho)n(ws)e(that)i(censorship)f
 (resistance)f(requires)523 3100 y(a)27 b(form)h(of)f(priv)-5
 b(ate)28 b(information)f(retriev)-5 b(al)27 b(for)g(whic)n(h)h(eac)n(h)
-f(op)r(eration)f(has)i(complexit)n(y)523 3200 y Fs(O)r
-FA(\()p Fs(n)p FA(\),)h(where)e Fs(n)g FA(is)g(the)h(size)f(of)h(the)f
+f(op)r(eration)f(has)i(complexit)n(y)523 3200 y Fp(O)r
+Fx(\()p Fp(n)p Fx(\),)h(where)e Fp(n)g Fx(is)g(the)h(size)f(of)h(the)f
 (datastore.)f(In)i(return)f(for)g(restricting)f(the)i(guessing)523
 3300 y(capabilities)i(of)h(the)g(adv)n(ersary)-7 b(,)27
-b(ECRS)k(can)f(ac)n(hiev)n(e)f Fs(O)r FA(\(1\))j(complexit)n(y)e(for)g
+b(ECRS)k(can)f(ac)n(hiev)n(e)f Fp(O)r Fx(\(1\))j(complexit)n(y)e(for)g
 (its)g(op)r(era-)523 3399 y(tions.)24 b(Considering)f(that)h
 (scalabilit)n(y)g(is)g(also)f(an)h(imp)r(ortan)n(t)f(goal,)g(w)n(e)h(b)
 r(eliev)n(e)g(that)h(this)523 3499 y(is)j(a)f(reasonable)e
@@ -6050,24 +5496,24 @@
 0 1 0 TeXcolorrgb 1695 4625 a
 SDict begin H.S end
  1695 4625 a 0 1 0 TeXcolorrgb
-FA(5)p 0 1 0 TeXcolorrgb 1737 4572 a
+Fx(5)p 0 1 0 TeXcolorrgb 1737 4572 a
 SDict begin H.R end
  1737 4572 a 1737
 4625 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.clark99distributed) cvn H.B /ANN pdfmark end
- 1737 4625 a Black FA(])g(and)f(later)h(termed)f
-Ft(c)l(onver)l(gent)j(encryption)f FA([)p 0 1 0 TeXcolorrgb
+ 1737 4625 a Black Fx(])g(and)f(later)h(termed)f
+Fq(c)l(onver)l(gent)j(encryption)f Fx([)p 0 1 0 TeXcolorrgb
 3276 4625 a
 SDict begin H.S end
- 3276 4625 a 0 1 0 TeXcolorrgb FA(10)p 0 1 0
+ 3276 4625 a 0 1 0 TeXcolorrgb Fx(10)p 0 1 0
 TeXcolorrgb 3359 4572 a
 SDict begin H.R end
  3359 4572 a 3359 4625 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.farsite) cvn H.B /ANN pdfmark end
  3359
-4625 a Black FA(].)523 4725 y(With)k(con)n(v)n(ergen)n(t)c(encryption,)
+4625 a Black Fx(].)523 4725 y(With)k(con)n(v)n(ergen)n(t)c(encryption,)
 j(the)g(existence)f(of)h(m)n(ultiple)g(copies)g(of)f(the)h(same)g(con-)
 523 4825 y(ten)n(t)21 b(can)g(b)r(e)g(detected;)g(this)g(kno)n(wledge)f
 (can)g(then)i(b)r(e)f(used)g(to)g(increase)e(fault-tolerance,)523
@@ -6088,9 +5534,9 @@
  523 232 a 523 232 a
 SDict begin [ /View [/XYZ H.V] /Dest (page.3) cvn H.B /DEST pdfmark
 end
- 523 232 a Black 1036 w Fx(An)25
+ 523 232 a Black 1036 w Fu(An)25
 b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)238
-b(3)p Black 648 448 a FA(Unfortunately)-7 b(,)26 b(it)g(is)g(not)g
+b(3)p Black 648 448 a Fx(Unfortunately)-7 b(,)26 b(it)g(is)g(not)g
 (enough)g(to)g(just)g(meet)h(requiremen)n(ts)e(related)g(to)h
 (e\016cien)n(t)523 548 y(storage)c(and)h(retriev)-5 b(al)22
 b(of)i(the)g(con)n(ten)n(t.)f(A)h(public)g(\014lesharing)e(net)n(w)n
@@ -6099,7 +5545,7 @@
 (trol.)g(This)h(op)r(ens)523 747 y(the)c(net)n(w)n(ork)f(to)g
 (malicious)g(participan)n(ts.)g(Th)n(us,)h(the)g(enco)r(ding)g(sc)n
 (heme)f(should)h(guar-)523 847 y(an)n(tee)24 b(the)g
-Ft(inte)l(grity)h FA(of)f(the)h(con)n(ten)n(t,)f(ev)n(en)g(in)g(the)h
+Fq(inte)l(grity)h Fx(of)f(the)h(con)n(ten)n(t,)f(ev)n(en)g(in)g(the)h
 (presence)e(of)h(malicious)g(participan)n(ts.)523 946
 y(The)i(enco)r(ding)f(mec)n(hanism)h(m)n(ust)g(ensure)f(that)h(in)n(v)
 -5 b(alid)26 b(replies)f(are)g(detected)h(and)g(that)523
@@ -6122,216 +5568,179 @@
 f(those)h(in)h([)p 0 1 0 TeXcolorrgb 1897 1843 a
 SDict begin H.S end
  1897
-1843 a 0 1 0 TeXcolorrgb FA(13)p 0 1 0 TeXcolorrgb 1980
+1843 a 0 1 0 TeXcolorrgb Fx(12)p 0 1 0 TeXcolorrgb 1980
 1790 a
 SDict begin H.R end
  1980 1790 a 1980 1843 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.ebe2003) cvn H.B /ANN pdfmark end
- 1980 1843 a Black FA(]\))f(and)g(prev)n
+ 1980 1843 a Black Fx(]\))f(and)g(prev)n
 (en)n(ts)f(the)i(retransmission)d(and)523 1943 y(replication)d(of)g
 (corrupted)g(data)g(b)n(y)g(non-malicious)g(p)r(eers.)648
-2044 y(This)20 b(pap)r(er)h(in)n(tro)r(duces)f(the)h(primitiv)n(es)g
+2053 y(This)20 b(pap)r(er)h(in)n(tro)r(duces)f(the)h(primitiv)n(es)g
 (that)g(ECRS)f(uses)h(to)g(ac)n(hiev)n(e)e(these)i(goals:)e(a)523
-2144 y(sp)r(eci\014c)26 b(altered)e(v)-5 b(arian)n(t)25
+2152 y(sp)r(eci\014c)26 b(altered)e(v)-5 b(arian)n(t)25
 b(of)g(the)h(Con)n(ten)n(t)f(Hash)g(Key)g(\(CHK\),)h(a)f(primitiv)n(e)g
-(used)h(in)f([)p 0 1 0 TeXcolorrgb 3317 2144 a
+(used)h(in)f([)p 0 1 0 TeXcolorrgb 3317 2152 a
 SDict begin H.S end
- 3317 2144
-a 0 1 0 TeXcolorrgb FA(5)p 0 1 0 TeXcolorrgb 3359 2090
+ 3317 2152
+a 0 1 0 TeXcolorrgb Fx(5)p 0 1 0 TeXcolorrgb 3359 2099
 a
 SDict begin H.R end
- 3359 2090 a 3359 2144 a
+ 3359 2099 a 3359 2152 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.clark99distributed) cvn H.B /ANN pdfmark end
- 3359 2144 a Black FA(],)523
-2244 y(and)e Ft(KBlo)l(cks)p FA(,)h(a)e(no)n(v)n(el)g(construction)g
+ 3359 2152 a Black Fx(],)523
+2252 y(and)e Fq(KBlo)l(cks)p Fx(,)h(a)e(no)n(v)n(el)g(construction)g
 (whic)n(h)h(adds)f(functionalit)n(y)h(to)g(the)g(ECRS)f(sc)n(heme)523
-2343 y(while)27 b(a)n(v)n(oiding)e(a)i(prop)r(osed)f(attac)n(k)g(on)g
+2352 y(while)27 b(a)n(v)n(oiding)e(a)i(prop)r(osed)f(attac)n(k)g(on)g
 (the)i(triple-hash)e(primitiv)n(e)g(used)h(in)h([)p 0 1 0
-TeXcolorrgb 3078 2343 a
+TeXcolorrgb 3078 2352 a
 SDict begin H.S end
- 3078 2343 a 0 1 0 TeXcolorrgb
-FA(2)p 0 1 0 TeXcolorrgb 3119 2290 a
+ 3078 2352 a 0 1 0 TeXcolorrgb
+Fx(3)p 0 1 0 TeXcolorrgb 3119 2298 a
 SDict begin H.R end
- 3119 2290 a 3119
-2343 a
+ 3119 2298 a 3119
+2352 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.esed) cvn H.B /ANN pdfmark end
- 3119 2343 a Black FA(].)f(These)523 2443 y(primitiv)n(es)k(allo)
+ 3119 2352 a Black Fx(].)f(These)523 2451 y(primitiv)n(es)k(allo)
 n(w)f(data)g(to)h(b)r(e)h(inserted)e(under)h(m)n(ultiple)h
-(natural-language)c(k)n(eyw)n(ords)523 2542 y(at)g(minimal)h(cost)f(in)
+(natural-language)c(k)n(eyw)n(ords)523 2551 y(at)g(minimal)h(cost)f(in)
 h(space,)f(and)g(queried)g(using)g(natural)g(language)f(b)r(o)r(olean)h
-(searc)n(hes.)523 2642 y(F)-7 b(urthermore,)27 b(the)i(primitiv)n(es)f
+(searc)n(hes.)523 2651 y(F)-7 b(urthermore,)27 b(the)i(primitiv)n(es)f
 (giv)n(e)f(ECRS)h(the)h(means)f(to)g(iden)n(tify)-7 b(,)29
-b(encrypt,)f(decrypt)523 2742 y(and)33 b(v)n(erify)f(data,)g(all)h
+b(encrypt,)f(decrypt)523 2750 y(and)33 b(v)n(erify)f(data,)g(all)h
 (while)g(a)n(v)n(oiding)e(attac)n(ks)g(b)n(y)i(a)f(non-guessing)f(in)n
-(termediate)i(ad-)523 2841 y(v)n(ersary)-7 b(.)29 b(V)-7
+(termediate)i(ad-)523 2850 y(v)n(ersary)-7 b(.)29 b(V)-7
 b(eri\014cation)30 b(of)h(con)n(ten)n(t)g(b)n(y)g(in)n(termediate)f
-(hosts)h(is)g(made)g(p)r(ossible)g(without)523 2941 y(rev)n(ealing)i
+(hosts)h(is)g(made)g(p)r(ossible)g(without)523 2949 y(rev)n(ealing)i
 (the)i(k)n(eys)f(necessary)f(to)i(decrypt)f(con)n(ten)n(t,)h(and)g(the)
-g(amoun)n(t)f(of)h(data)f(cor-)523 3041 y(ruption)28
+g(amoun)n(t)f(of)h(data)f(cor-)523 3049 y(ruption)28
 b(an)f(adv)n(ersary)e(can)j(inject)g(b)r(efore)g(b)r(eing)g(detected)g
-(is)g(limited)h(to)e(a)h(small)f(size.)523 3140 y(Additionally)-7
+(is)g(limited)h(to)e(a)h(small)f(size.)523 3149 y(Additionally)-7
 b(,)34 b(the)g(construction)f(of)h(these)g(primitiv)n(es)g(mak)n(es)e
-(ECRS)i(quite)g(scalable,)523 3240 y(and)24 b(assists)f(the)h(enco)r
+(ECRS)i(quite)g(scalable,)523 3248 y(and)24 b(assists)f(the)h(enco)r
 (ding)g(sc)n(heme)g(in)g(encouraging)e(load-balancing,)g(distribution)i
-(and)523 3339 y(replication)i(of)g(con)n(ten)n(t,)g(and)h(sw)n(arming.)
+(and)523 3348 y(replication)i(of)g(con)n(ten)n(t,)g(and)h(sw)n(arming.)
 d(These)j(primitiv)n(es)f(\(and)g(their)h(functionalit)n(y\))523
-3439 y(are)g(describ)r(ed)g(in)h(greater)e(detail)h(later)g(in)h(the)g
-(pap)r(er.)648 3541 y(The)e(rest)f(of)i(the)f(pap)r(er)g(is)g
+3448 y(are)g(describ)r(ed)g(in)h(greater)e(detail)h(later)g(in)h(the)g
+(pap)r(er.)648 3558 y(The)e(rest)f(of)i(the)f(pap)r(er)g(is)g
 (organized)e(as)i(follo)n(ws.)f(Section)p 1 0 0 TeXcolorrgb
-2582 3541 a
+2582 3558 a
 SDict begin H.S end
- 2582 3541 a 1 0 0 TeXcolorrgb FA(2)p 1 0 0
-TeXcolorrgb 2624 3487 a
+ 2582 3558 a 1 0 0 TeXcolorrgb Fx(2)p 1 0 0
+TeXcolorrgb 2624 3504 a
 SDict begin H.R end
- 2624 3487 a 2624 3541 a
+ 2624 3504 a 2624 3558 a
 SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (section.1.2) cvn H.B /ANN pdfmark end
  2624
-3541 a Black 26 w FA(con)n(trasts)f(the)j(curren)n(t)523
-3640 y(w)n(ork)e(with)i(mec)n(hanisms)e(used)h(in)h(other)f
+3558 a Black 26 w Fx(con)n(trasts)f(the)j(curren)n(t)523
+3657 y(w)n(ork)e(with)i(mec)n(hanisms)e(used)h(in)h(other)f
 (censorship-resistan)n(t)d(systems.)j(Section)p 1 0 0
-TeXcolorrgb 3226 3640 a
+TeXcolorrgb 3226 3657 a
 SDict begin H.S end
- 3226 3640 a 1 0 0 TeXcolorrgb
-FA(3)p 1 0 0 TeXcolorrgb 3268 3587 a
+ 3226 3657 a 1 0 0 TeXcolorrgb
+Fx(3)p 1 0 0 TeXcolorrgb 3268 3604 a
 SDict begin H.R end
- 3268 3587 a 3268
-3640 a
+ 3268 3604 a 3268
+3657 a
 SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (section.1.3) cvn H.B /ANN pdfmark end
- 3268 3640 a Black 26 w FA(de-)523 3740 y(scrib)r(es)j(the)g
-(ECRS)h(enco)r(ding)e(sc)n(heme)h(in)h(detail.)f(Section)p
-1 0 0 TeXcolorrgb 2476 3740 a
+ 3268 3657 a Black 26 w Fx(de-)523 3757 y(scrib)r(es)e(the)h
+(ECRS)g(enco)r(ding)f(sc)n(heme)h(in)g(detail.)f(Finally)-7
+b(,)25 b(Section)p 1 0 0 TeXcolorrgb 2735 3757 a
 SDict begin H.S end
- 2476 3740 a 1 0 0 TeXcolorrgb
-FA(4)p 1 0 0 TeXcolorrgb 2517 3686 a
+ 2735
+3757 a 1 0 0 TeXcolorrgb Fx(4)p 1 0 0 TeXcolorrgb 2776
+3703 a
 SDict begin H.R end
- 2517 3686 a 2517
-3740 a
+ 2776 3703 a 2776 3757 a
 SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (section.1.4) cvn H.B /ANN pdfmark end
- 2517 3740 a Black 29 w FA(lists)h(some)f(extensions)f(to)523
-3840 y(the)f(basic)g(sc)n(heme.)g(Finally)-7 b(,)27 b(Section)p
-1 0 0 TeXcolorrgb 1768 3840 a
+ 2776 3757 a Black 25 w
+Fx(discusses)f(attac)n(ks)523 3857 y(on)j(ECRS)h(and)f(con)n(trasts)f
+(it)i(with)g(previous)f(w)n(ork.)523 4064 y
 SDict begin H.S end
- 1768 3840 a 1 0 0 TeXcolorrgb
-FA(5)p 1 0 0 TeXcolorrgb 1809 3786 a
-SDict begin H.R end
- 1809 3786 a 1809
-3840 a
-SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(section.1.5) cvn H.B /ANN pdfmark end
- 1809 3840 a Black 27 w FA(discusses)g(attac)n(ks)f(on)g(ECRS)h
-(and)g(con)n(trasts)f(it)523 3939 y(with)i(previous)f(w)n(ork.)648
-4041 y(This)d(w)n(ork)f(builds)h(on)g(our)g(earlier)f(pap)r(er)h([)p
-0 1 0 TeXcolorrgb 2036 4041 a
-SDict begin H.S end
- 2036 4041 a 0 1 0 TeXcolorrgb
-FA(2)p 0 1 0 TeXcolorrgb 2077 3987 a
-SDict begin H.R end
- 2077 3987 a 2077
-4041 a
-SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(cite.esed) cvn H.B /ANN pdfmark end
- 2077 4041 a Black FA(])h(whic)n(h)f(w)n(as)f(\014rst)h
-(published)h(at)f(A)n(CISP)523 4141 y(2001.)33 b(Since)h(then,)h(the)g
-(enco)r(ding)f(sc)n(heme)g(has)g(b)r(een)h(revised)e(to)h(address)g
-(additional)523 4240 y(requiremen)n(ts)29 b(an)h(to)h(impro)n(v)n(e)e
-(the)i(securit)n(y)e(in)i(v)-5 b(arious)29 b(asp)r(ects.)h(This)h(pap)r
-(er)f(re\015ects)523 4340 y(these)e(c)n(hanges.)523 4513
-y
-SDict begin H.S end
- 523 4513 a 523 4513 a
+ 523 4064
+a 523 4064 a
 SDict begin 12 H.A end
- 523 4513 a 523 4513 a
+ 523 4064 a 523 4064 a
 SDict begin [ /View [/XYZ H.V] /Dest (section.1.2) cvn H.B /DEST pdfmark
 end
- 523 4513
-a 102 x Fu(2)112 b(Related)38 b(W)-9 b(ork)523 4825 y
-FA(A)40 b(large)f(n)n(um)n(b)r(er)g(of)h(censorship-resistan)n(t)d
-(\(or)j(at)f(least)h(fault-toleran)n(t\))f(publishing)523
-4924 y(systems)30 b(ha)n(v)n(e)f(b)r(een)h(prop)r(osed)f(in)i(recen)n
-(t)e(y)n(ears)g([)p 0 1 0 TeXcolorrgb 2170 4924 a
+ 523 4064 a 111 x Fr(2)112
+b(Related)38 b(W)-9 b(ork)523 4426 y Fx(A)23 b(large)d(n)n(um)n(b)r(er)
+i(of)g(censorship-resistan)n(t)e(\(or)h(at)h(least)g(fault-toleran)n
+(t\))g(publishing)g(sys-)523 4526 y(tems)g(ha)n(v)n(e)f(b)r(een)i(prop)
+r(osed)e(in)h(recen)n(t)g(y)n(ears)e([)p 0 1 0 TeXcolorrgb
+2004 4526 a
 SDict begin H.S end
- 2170
-4924 a 0 1 0 TeXcolorrgb FA(1)p 0 1 0 TeXcolorrgb 2211
-4871 a
+ 2004 4526 a 0 1 0 TeXcolorrgb Fx(1)p 0 1 0
+TeXcolorrgb 2046 4472 a
 SDict begin H.R end
- 2211 4871 a 2211 4924 a
+ 2046 4472 a 2046 4526 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.anderson96eternity) cvn H.B /ANN pdfmark end
- 2211 4924 a Black FA(,)p
-0 1 0 TeXcolorrgb 2234 4924 a
+ 2046
+4526 a Black Fx(,)p 0 1 0 TeXcolorrgb 2069 4526 a
 SDict begin H.S end
- 2234 4924 a 0 1 0 TeXcolorrgb
-FA(4)p 0 1 0 TeXcolorrgb 2276 4871 a
+ 2069
+4526 a 0 1 0 TeXcolorrgb Fx(4)p 0 1 0 TeXcolorrgb 2110
+4472 a
 SDict begin H.R end
- 2276 4871 a 2276
-4924 a
+ 2110 4472 a 2110 4526 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.chen99prototype) cvn H.B /ANN pdfmark end
- 2276 4924 a Black FA(,)p 0 1 0 TeXcolorrgb 2299
-4924 a
+ 2110 4526 a Black Fx(,)p
+0 1 0 TeXcolorrgb 2133 4526 a
 SDict begin H.S end
- 2299 4924 a 0 1 0 TeXcolorrgb FA(5)p 0 1 0 TeXcolorrgb
-2341 4871 a
+ 2133 4526 a 0 1 0 TeXcolorrgb
+Fx(5)p 0 1 0 TeXcolorrgb 2175 4472 a
 SDict begin H.R end
- 2341 4871 a 2341 4924 a
+ 2175 4472 a 2175
+4526 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.clark99distributed) cvn H.B /ANN pdfmark end
- 2341 4924 a Black
-FA(,)p 0 1 0 TeXcolorrgb 2364 4924 a
+ 2175 4526 a Black Fx(,)p 0 1 0 TeXcolorrgb 2198
+4526 a
 SDict begin H.S end
- 2364 4924 a 0 1 0
-TeXcolorrgb FA(9)p 0 1 0 TeXcolorrgb 2405 4871 a
+ 2198 4526 a 0 1 0 TeXcolorrgb Fx(14)p 0 1 0 TeXcolorrgb
+2281 4472 a
 SDict begin H.R end
- 2405
-4871 a 2405 4924 a
+ 2281 4472 a 2281 4526 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(cite.freehaven-berk) cvn H.B /ANN pdfmark end
- 2405 4924 a Black FA(,)p 0 1 0 TeXcolorrgb
-2428 4924 a
-SDict begin H.S end
- 2428 4924 a 0 1 0 TeXcolorrgb FA(11)p 0 1 0
-TeXcolorrgb 2511 4871 a
-SDict begin H.R end
- 2511 4871 a 2511 4924 a
-SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(cite.feamster-infranet) cvn H.B /ANN pdfmark end
- 2511
-4924 a Black FA(,)p 0 1 0 TeXcolorrgb 2534 4924 a
-SDict begin H.S end
- 2534
-4924 a 0 1 0 TeXcolorrgb FA(16)p 0 1 0 TeXcolorrgb 2617
-4871 a
-SDict begin H.R end
- 2617 4871 a 2617 4924 a
-SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.herlihy87how) cvn H.B /ANN pdfmark end
- 2617 4924 a Black FA(,)p
-0 1 0 TeXcolorrgb 2640 4924 a
+ 2281 4526 a Black
+Fx(,)p 0 1 0 TeXcolorrgb 2304 4526 a
 SDict begin H.S end
- 2640 4924 a 0 1 0 TeXcolorrgb
-FA(31)p 0 1 0 TeXcolorrgb 2723 4871 a
+ 2304 4526 a 0 1 0
+TeXcolorrgb Fx(29)p 0 1 0 TeXcolorrgb 2387 4472 a
 SDict begin H.R end
- 2723 4871 a 2723
-4924 a
+ 2387
+4472 a 2387 4526 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.waldman2001tangler) cvn H.B /ANN pdfmark end
- 2723 4924 a Black FA(,)p 0 1 0 TeXcolorrgb 2746
-4924 a
+ 2387 4526 a Black Fx(,)p 0 1 0 TeXcolorrgb
+2410 4526 a
 SDict begin H.S end
- 2746 4924 a 0 1 0 TeXcolorrgb FA(32)p 0 1 0 TeXcolorrgb
-2829 4871 a
+ 2410 4526 a 0 1 0 TeXcolorrgb Fx(30)p 0 1 0
+TeXcolorrgb 2493 4472 a
 SDict begin H.R end
- 2829 4871 a 2829 4924 a
+ 2493 4472 a 2493 4526 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.pub00) cvn H.B /ANN pdfmark end
- 2829 4924 a Black
-FA(].)i(The)f(prop)r(osed)p Black Black eop end
+ 2493
+4526 a Black Fx(].)i(The)g(prop)r(osed)f(proto)r(cols)523
+4625 y(di\013er)33 b(in)f(v)-5 b(arious)32 b(asp)r(ects)g(unrelated)g
+(to)g(the)h(sp)r(eci\014cs)f(of)h(the)f(enco)r(ding)g(mec)n(hanism,)523
+4725 y(suc)n(h)23 b(as)g(con)n(ten)n(t)f(replication)h(and)g(the)h(use)
+f(of)g(anon)n(ymous)f(or)g(steganographic)f(comm)n(u-)523
+4825 y(nication.)29 b(Characteristic)g(of)g(all)h(of)f(these)h(systems)
+f(is)h(the)g(use)g(of)f(replication)g(and)h(the)523 4924
+y(need)h(to)g(ensure)g(data)g(in)n(tegrit)n(y)-7 b(.)30
+b(F)-7 b(or)30 b(an)h(o)n(v)n(erview)e(of)i(con)n(ten)n(t)g
+(replication)f(strategies)p Black Black eop end
 %%Page: 4 4
 TeXDict begin 4 3 bop 0 0 a
 SDict begin /product where{pop product(Distiller)search{pop pop pop
@@ -6347,123 +5756,119 @@
  523 232 a 523 232 a
 SDict begin [ /View [/XYZ H.V] /Dest (page.4) cvn H.B /DEST pdfmark
 end
- 523 232 a Black Fx(4)237 b(C.)27
+ 523 232 a Black Fu(4)237 b(C.)27
 b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
-Black 523 448 a FA(proto)r(cols)18 b(di\013er)i(in)g(v)-5
-b(arious)18 b(asp)r(ects)h(unrelated)g(to)h(the)f(sp)r(eci\014cs)h(of)f
-(the)h(enco)r(ding)f(mec)n(h-)523 548 y(anism,)28 b(suc)n(h)g(as)f(con)
-n(ten)n(t)h(replication)f(and)h(the)g(use)g(of)g(anon)n(ymous)e(or)i
-(steganographic)523 648 y(comm)n(unication.)33 b(Characteristic)g(of)h
-(all)g(of)g(these)g(systems)f(is)h(the)h(use)f(of)g(replication)523
-747 y(and)i(the)h(need)f(to)h(ensure)e(data)h(in)n(tegrit)n(y)-7
-b(.)36 b(F)-7 b(or)35 b(an)h(o)n(v)n(erview)f(of)h(con)n(ten)n(t)g
-(replication)523 847 y(strategies)26 b(see)h([)p 0 1 0
-TeXcolorrgb 1050 847 a
+Black 523 448 a Fx(see)i([)p 0 1 0 TeXcolorrgb 682 448
+a
 SDict begin H.S end
- 1050 847 a 0 1 0 TeXcolorrgb FA(6)p
-0 1 0 TeXcolorrgb 1091 793 a
+ 682 448 a 0 1 0 TeXcolorrgb Fx(6)p 0 1 0 TeXcolorrgb
+724 395 a
 SDict begin H.R end
- 1091 793 a 1091 847 a
+ 724 395 a 724 448 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.cohen02replication) cvn H.B /ANN pdfmark end
- 1091
-847 a Black FA(].)h(The)f(censorship-resistan)n(t)e(systems)i(all)g
-(use)g(some)g(form)g(of)g(con)n(ten)n(t)523 946 y(enco)r(ding)g(to)h
-(hide)g(the)g(sp)r(eci\014cs)f(of)h(the)g(con)n(ten)n(t)f(from)g(the)h
-(serv)n(ers.)523 1100 y
+ 724 448 a Black Fx(].)g(The)h
+(censorship-resistan)n(t)c(systems)j(all)g(use)g(some)g(form)g(of)g
+(con)n(ten)n(t)g(enco)r(ding)523 548 y(to)f(hide)f(the)h(sp)r
+(eci\014cs)g(of)f(the)h(con)n(ten)n(t)g(from)f(the)h(serv)n(ers.)523
+735 y
 SDict begin H.S end
- 523 1100 a 523 1100 a
+ 523 735 a 523 735 a
 SDict begin 12 H.A end
- 523 1100
-a 523 1100 a
+ 523 735 a 523 735 a
 SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.2.1) cvn H.B /DEST
 pdfmark end
- 523 1100 a 84 x Fr(2.1)95 b(F)-8 b(reenet)523
-1338 y FA(The)30 b(main)f(con)n(ten)n(t)h(enco)r(ding)f(sc)n(heme)g
-(used)h(in)g(F)-7 b(reenet)30 b([)p 0 1 0 TeXcolorrgb
-2452 1338 a
+ 523 735
+a 89 x Fo(2.1)95 b(F)-8 b(reenet)523 1017 y Fx(The)30
+b(main)f(con)n(ten)n(t)h(enco)r(ding)f(sc)n(heme)g(used)h(in)g(F)-7
+b(reenet)30 b([)p 0 1 0 TeXcolorrgb 2452 1017 a
 SDict begin H.S end
- 2452 1338 a 0 1 0 TeXcolorrgb FA(5)p 0 1 0
-TeXcolorrgb 2493 1284 a
+ 2452
+1017 a 0 1 0 TeXcolorrgb Fx(5)p 0 1 0 TeXcolorrgb 2493
+964 a
 SDict begin H.R end
- 2493 1284 a 2493 1338 a
+ 2493 964 a 2493 1017 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.clark99distributed) cvn H.B /ANN pdfmark end
- 2493
-1338 a Black FA(])g(uses)f(CHKs:)h(the)g(hash)f(of)523
-1437 y(the)e(con)n(ten)n(t)f(is)g(used)g(as)g(the)g(k)n(ey)-7
-b(.)26 b(F)-7 b(reenet)26 b(has)g(sev)n(eral)e(other)i(t)n(yp)r(es)g
-(of)g(k)n(eys)g(whic)n(h)g(are)523 1537 y(used)e(to)f(refer)g(the)h
-(user)f(to)g(con)n(ten)n(t-hash)g(k)n(eys.)f(These)i(di\013eren)n(t)f
-(k)n(ey)g(t)n(yp)r(es)h(are)f(used)g(to)523 1637 y(allo)n(w)e
-(additional)h(features)g(suc)n(h)g(as)g(con)n(ten)n(t)g(signing,)g(p)r
-(ersonal)f(namespaces)h(and)g(split-)523 1736 y(ting)28
-b(of)g(con)n(ten)n(t.)f(F)-7 b(reenet's)28 b(CHK)g(yields)f(the)i(same)
-e(encrypted)g(data)h(for)f(indep)r(enden)n(t)523 1836
-y(encryptions.)g(Ho)n(w)n(ev)n(er,)f(it)i(has)f(sev)n(eral)e(disadv)-5
-b(an)n(tages.)648 1936 y(One)31 b(dra)n(wbac)n(k)g(of)h(F)-7
-b(reenet's)32 b(CHK)g(is)g(that)g(it)h(do)r(es)f(not)g(allo)n(w)f
-(direct)h(sharing)f(of)523 2035 y(\014les)c(from)f(the)h(lo)r(cal)g
+ 2493 1017 a Black Fx(])g(uses)f(CHKs:)h
+(the)g(hash)f(of)523 1117 y(the)e(con)n(ten)n(t)f(is)g(used)g(as)g(the)
+g(k)n(ey)-7 b(.)26 b(F)-7 b(reenet)26 b(has)g(sev)n(eral)e(other)i(t)n
+(yp)r(es)g(of)g(k)n(eys)g(whic)n(h)g(are)523 1216 y(used)e(to)f(refer)g
+(the)h(user)f(to)g(con)n(ten)n(t-hash)g(k)n(eys.)f(These)i(di\013eren)n
+(t)f(k)n(ey)g(t)n(yp)r(es)h(are)f(used)g(to)523 1316
+y(allo)n(w)e(additional)h(features)g(suc)n(h)g(as)g(con)n(ten)n(t)g
+(signing,)g(p)r(ersonal)f(namespaces)h(and)g(split-)523
+1416 y(ting)28 b(of)g(con)n(ten)n(t.)f(F)-7 b(reenet's)28
+b(CHK)g(yields)f(the)i(same)e(encrypted)g(data)h(for)f(indep)r(enden)n
+(t)523 1515 y(encryptions.)g(Ho)n(w)n(ev)n(er,)f(it)i(has)f(sev)n(eral)
+e(disadv)-5 b(an)n(tages.)648 1620 y(One)31 b(dra)n(wbac)n(k)g(of)h(F)
+-7 b(reenet's)32 b(CHK)g(is)g(that)g(it)h(do)r(es)f(not)g(allo)n(w)f
+(direct)h(sharing)f(of)523 1720 y(\014les)c(from)f(the)h(lo)r(cal)g
 (driv)n(e)e(without)j(encrypting)e(and)g(inserting)h(them)g(\014rst.)g
-(Th)n(us,)f(if)h(a)523 2135 y(no)r(de)22 b(op)r(erator)f(wishes)h(to)g
+(Th)n(us,)f(if)h(a)523 1820 y(no)r(de)22 b(op)r(erator)f(wishes)h(to)g
 (k)n(eep)g(con)n(ten)n(t)g(directly)g(accessible)f(on)h(the)h(host,)f
-(a)g(lo)r(cal)g(cop)n(y)523 2234 y(of)h(the)g(plain)n(text)g(m)n(ust)g
+(a)g(lo)r(cal)g(cop)n(y)523 1919 y(of)h(the)g(plain)n(text)g(m)n(ust)g
 (b)r(e)g(k)n(ept)f(in)h(addition)g(to)g(the)g(encrypted)f(con)n(ten)n
-(t)h(in)g(the)g(F)-7 b(reenet)523 2334 y(database.)27
+(t)h(in)g(the)g(F)-7 b(reenet)523 2019 y(database.)27
 b(Also,)h(F)-7 b(reenet)29 b(do)r(es)f(not)g(supp)r(ort)g(sw)n(arming.)
-f(One)h(reason)f(for)h(this)g(is)h(that)523 2434 y(F)-7
+f(One)h(reason)f(for)h(this)g(is)h(that)523 2119 y(F)-7
 b(reenet's)30 b(CHK)h(enco)r(ding)f(can)g(only)g(v)n(erify)g(a)g
 (\014le)h(in)f(its)h(en)n(tiret)n(y)f(and)g(not)h(pin-p)r(oin)n(t)523
-2533 y(corruptions)26 b(on)h(a)h(smaller)e(scale.)648
-2633 y(One)33 b(w)n(a)n(y)f(to)i(obtain)f(the)i(CHK)e(k)n(ey)g(of)h(a)f
+2218 y(corruptions)26 b(on)h(a)h(smaller)e(scale.)648
+2323 y(One)33 b(w)n(a)n(y)f(to)i(obtain)f(the)i(CHK)e(k)n(ey)g(of)h(a)f
 (\014le)h(in)g(F)-7 b(reenet)34 b(is)f(to)h(searc)n(h)e(a)h(priv)-5
-b(ate)523 2733 y(subspace.)27 b(A)h(subspace)f(con)n(tains)f(a)i(set)f
+b(ate)523 2423 y(subspace.)27 b(A)h(subspace)f(con)n(tains)f(a)i(set)f
 (of)h(CHK)f(k)n(eys)g(that)h(ha)n(v)n(e)e(b)r(een)i(cryptographi-)523
-2832 y(cally)e(signed)h(b)n(y)g(the)g(o)n(wner)f(of)h(the)g(subspace)g
+2522 y(cally)e(signed)h(b)n(y)g(the)g(o)n(wner)f(of)h(the)g(subspace)g
 (and)f(placed)h(in)n(to)g(the)g(subspace)g(under)f(a)523
-2932 y(certain)e(k)n(eyw)n(ord.)g(These)g(signed)h(references)f(are)f
-(called)i(subspace-signed)e(k)n(eys)h(\(SSK\).)523 3031
+2622 y(certain)e(k)n(eyw)n(ord.)g(These)g(signed)h(references)f(are)f
+(called)i(subspace-signed)e(k)n(eys)h(\(SSK\).)523 2722
 y(Giv)n(en)i(the)g(subspace-pre\014x)e(and)h(the)i(k)n(eyw)n(ord,)c
 (users)i(can)h(obtain)f(the)h(CHK)g(k)n(ey)-7 b(.)25
-b(The)523 3131 y(form)d(of)g(the)g(k)n(eyw)n(ords)e(can)i(b)r(e)h
+b(The)523 2821 y(form)d(of)g(the)g(k)n(eyw)n(ords)e(can)i(b)r(e)h
 (freely)e(c)n(hosen,)h(allo)n(wing)e(for)i(con)n(v)n(en)n(tions)e(suc)n
-(h)i(as)f(dates)523 3231 y(in)j(the)h(k)n(eyw)n(ord)d(to)i(b)r(e)h
+(h)i(as)f(dates)523 2921 y(in)j(the)h(k)n(eyw)n(ord)d(to)i(b)r(e)h
 (used)f(for)g(up)r(dates)g(\(in)h(F)-7 b(reenet's)24
-b(terminology)-7 b(,)23 b(these)h(are)f(called)523 3330
-y Ft(date)30 b(b)l(ase)l(d)h(r)l(e)l(dir)l(e)l(cts)p
-FA(\).)648 3430 y(In)c(addition)h(to)f(CHK)g(and)g(SSK)h(k)n(eys,)e(F)
+b(terminology)-7 b(,)23 b(these)h(are)f(called)523 3021
+y Fq(date)30 b(b)l(ase)l(d)h(r)l(e)l(dir)l(e)l(cts)p
+Fx(\).)648 3126 y(In)c(addition)h(to)f(CHK)g(and)g(SSK)h(k)n(eys,)e(F)
 -7 b(reenet)28 b(supp)r(orts)f(KSK)g(k)n(eys.)f(A)i(KSK)f(k)n(ey)523
-3530 y(is)j(essen)n(tially)f(a)g(CHK)h(k)n(ey)g(stored)f(in)h(plain)n
+3225 y(is)j(essen)n(tially)f(a)g(CHK)h(k)n(ey)g(stored)f(in)h(plain)n
 (text)g(\(!\))h(under)e(a)h(k)n(eyw)n(ord.)e(The)i(proto)r(col)523
-3629 y(attempts)25 b(to)f(ensure)g(that)g(there)h(cannot)e(b)r(e)i(t)n
+3325 y(attempts)25 b(to)f(ensure)g(that)g(there)h(cannot)e(b)r(e)i(t)n
 (w)n(o)f(di\013eren)n(t)g(CHK)h(k)n(eys)e(a)n(v)-5 b(ailable)23
-b(in)i(the)523 3729 y(net)n(w)n(ork)g(under)h(the)h(same)f(k)n(eyw)n
+b(in)i(the)523 3425 y(net)n(w)n(ork)g(under)h(the)h(same)f(k)n(eyw)n
 (ord.)e(While)j(collisions)e(for)h(KSK)g(k)n(eys)f(are)g(supp)r(osedly)
-523 3828 y(not)36 b(allo)n(w)n(ed,)e(the)i(proto)r(col)e(cannot)h(prev)
+523 3524 y(not)36 b(allo)n(w)n(ed,)e(the)i(proto)r(col)e(cannot)h(prev)
 n(en)n(t)g(them)h(from)f(o)r(ccurring.)g(If)h(an)f(attac)n(k)n(er)523
-3928 y(inserts)27 b(meaningless)f(data)h(under)g(a)g(common)g(k)n(eyw)n
+3624 y(inserts)27 b(meaningless)f(data)h(under)g(a)g(common)g(k)n(eyw)n
 (ord,)e(F)-7 b(reenet)27 b(will)h(try)f(to)g(preserv)n(e)523
-4028 y(that)g(con)n(ten)n(t)g(b)r(ecause)f(it)h(is)g(frequen)n(tly)f
+3723 y(that)g(con)n(ten)n(t)g(b)r(ecause)f(it)h(is)g(frequen)n(tly)f
 (requested.)h(Subsequen)n(tly)-7 b(,)26 b(that)h(k)n(eyw)n(ord)e(can)
-523 4127 y(no)h(longer)f(b)r(e)i(used)f(for)g(an)n(y)f(useful)i(data)f
+523 3823 y(no)h(longer)f(b)r(e)i(used)f(for)g(an)n(y)f(useful)i(data)f
 (since)g(the)g(p)r(eers)g(attempt)h(to)f(enforce)g(the)h(no-)523
-4227 y(collisions)j(rule.)h(Note)g(that)g(the)h(no-collision)d(rule)i
-(cannot)f(b)r(e)i(enforced)e(for)h(malicious)523 4327
+3923 y(collisions)j(rule.)h(Note)g(that)g(the)h(no-collision)d(rule)i
+(cannot)f(b)r(e)i(enforced)e(for)h(malicious)523 4022
 y(p)r(eers.)h(F)-7 b(or)32 b(these)h(reasons,)e(the)i(F)-7
 b(reenet)33 b(dev)n(elop)r(ers)e(consider)h(the)h(use)f(of)h(KSK)f(k)n
-(eys)523 4426 y(insecure)27 b(and)g(recommend)g(against)g(using)g
-(them.)648 4526 y(As)i(a)f(result,)h(F)-7 b(reenet)29
+(eys)523 4122 y(insecure)27 b(and)g(recommend)g(against)g(using)g
+(them.)648 4227 y(As)i(a)f(result,)h(F)-7 b(reenet)29
 b(e\013ectiv)n(ely)g(do)r(es)g(not)g(supp)r(ort)f(an)n(y)h(t)n(yp)r(e)g
-(of)g(k)n(eyw)n(ord-based)523 4625 y(searc)n(h.)22 b(The)i(CHK)g(k)n
+(of)g(k)n(eyw)n(ord-based)523 4327 y(searc)n(h.)22 b(The)i(CHK)g(k)n
 (eys)e(m)n(ust)i(b)r(e)g(found)g(b)n(y)g(using)f(k)n(eyserv)n(ers)e(or)
-i(ad-ho)r(c)g(applications)523 4725 y(built)h(up)r(on)g(the)f(basic)g
+i(ad-ho)r(c)g(applications)523 4426 y(built)h(up)r(on)g(the)f(basic)g
 (solution)g(b)n(y)g(using)g(incremen)n(tal)g(n)n(um)n(b)r(ers)g(as)f
-(parts)h(of)g(k)n(eyw)n(ords)523 4825 y(in)f(signed)f(namespaces.)f
+(parts)h(of)g(k)n(eyw)n(ords)523 4526 y(in)f(signed)f(namespaces.)f
 (The)i(disadv)-5 b(an)n(tage)20 b(of)i(k)n(eyserv)n(ers)c(is)k(that)g
-(they)g(m)n(ust)f(b)r(e)h(main-)523 4924 y(tained)31
+(they)g(m)n(ust)f(b)r(e)h(main-)523 4625 y(tained)31
 b(if)g(the)g(indexed)g(k)n(eys)f(are)g(to)h(b)r(e)g(k)n(ept)f
-(up-to-date.)h(F)-7 b(reenet)30 b(do)r(es)h(not)g(seem)f(to)p
-Black Black eop end
+(up-to-date.)h(F)-7 b(reenet)30 b(do)r(es)h(not)g(seem)f(to)523
+4725 y(use)g(an)n(y)f(encryption)h(for)f(the)i(data)f(stored)f(in)h
+(KSK)g(or)f(SKS)h(k)n(eys)f(and)h(therefore)f(fails)523
+4825 y(to)36 b(prev)n(en)n(t)f(in)n(termediaries)g(from)g(learning)g
+(the)h(CHK)g(k)n(eys,)f(making)h(censorship)e(b)n(y)523
+4924 y(in)n(termediaries)26 b(easier.)p Black Black eop
+end
 %%Page: 5 5
 TeXDict begin 5 4 bop 0 0 a
 SDict begin /product where{pop product(Distiller)search{pop pop pop
@@ -6479,312 +5884,208 @@
  523 232 a 523 232 a
 SDict begin [ /View [/XYZ H.V] /Dest (page.5) cvn H.B /DEST pdfmark
 end
- 523 232 a Black 1036 w Fx(An)25
+ 523 232 a Black 1036 w Fu(An)25
 b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)238
-b(5)p Black 523 448 a FA(use)30 b(an)n(y)f(encryption)h(for)f(the)i
-(data)f(stored)f(in)h(KSK)g(or)f(SKS)h(k)n(eys)f(and)h(therefore)f
-(fails)523 548 y(to)36 b(prev)n(en)n(t)f(in)n(termediaries)g(from)g
-(learning)g(the)h(CHK)g(k)n(eys,)f(making)h(censorship)e(b)n(y)523
-648 y(in)n(termediaries)26 b(easier.)523 788 y
+b(5)p Black 523 365 a
 SDict begin H.S end
- 523 788
-a 523 788 a
+ 523 365 a 523 365 a
 SDict begin 12 H.A end
- 523 788 a 523 788 a
+ 523 365 a 523
+365 a
 SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.2.2) cvn H.B /DEST
 pdfmark end
- 523 788 a 99 x Fr(2.2)95
-b(F)-8 b(ree)31 b(Ha)m(v)m(en)523 1044 y FA(In)24 b(F)-7
-b(ree)24 b(Ha)n(v)n(en)f([)p 0 1 0 TeXcolorrgb 1074 1044
-a
+ 523 365 a 83 x Fo(2.2)95 b(T)-8 b(angler)523 584
+y Fx(The)31 b(T)-7 b(angler)30 b(net)n(w)n(ork)f([)p
+0 1 0 TeXcolorrgb 1345 584 a
 SDict begin H.S end
- 1074 1044 a 0 1 0 TeXcolorrgb FA(9)p 0 1 0 TeXcolorrgb
-1115 990 a
+ 1345 584 a 0 1 0 TeXcolorrgb
+Fx(29)p 0 1 0 TeXcolorrgb 1428 530 a
 SDict begin H.R end
- 1115 990 a 1115 1044 a
+ 1428 530 a 1428
+584 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(cite.freehaven-berk) cvn H.B /ANN pdfmark end
- 1115 1044 a Black FA(],)i(do)r(cumen)
-n(ts)f(are)e(split)j(in)n(to)f Fs(n)f FA(shares)g(whic)n(h)h(are)f
-(distributed)h(o)n(v)n(er)e(a)523 1143 y(n)n(um)n(b)r(er)27
-b(of)g(serv)n(ers.)f(An)n(y)h Fs(k)j FA(out)d(of)h Fs(n)f
-FA(shares)f(are)g(su\016cien)n(t)h(to)h(reconstruct)e(the)h(en)n(tire)
-523 1243 y(do)r(cumen)n(t)j([)p 0 1 0 TeXcolorrgb 931
-1243 a
-SDict begin H.S end
- 931 1243 a 0 1 0 TeXcolorrgb FA(25)p 0 1 0 TeXcolorrgb
-1015 1189 a
-SDict begin H.R end
- 1015 1189 a 1015 1243 a
-SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(cite.rabin89efficient) cvn H.B /ANN pdfmark end
- 1015 1243 a Black
-FA(].)g(T)-7 b(o)30 b(retriev)n(e)f(a)g(do)r(cumen)n(t,)i(the)g(user)e
-(m)n(ust)h(obtain)g(the)h(k)n(ey)f(that)g(w)n(as)523
-1343 y(used)j(to)f(sign)g(the)h(do)r(cumen)n(t)g(from)f(some)g(source)f
-(outside)i(the)g(F)-7 b(ree)32 b(Ha)n(v)n(en)f(net)n(w)n(ork.)523
-1442 y(The)i(design)f(of)g(F)-7 b(ree)32 b(Ha)n(v)n(en)g(itself)h(do)r
-(es)f(not)h(discuss)f(an)n(y)f(searc)n(h)g(functionalit)n(y)-7
-b(.)33 b(The)523 1542 y(user)d(then)h(forw)n(ards)e(the)i(k)n(ey)g(to)f
-(the)h(serv)n(er)e(whic)n(h)i(encrypts)f(and)h(sends)f(its)h(share)f
-(of)523 1641 y(the)e(do)r(cumen)n(t.)648 1741 y(Shares)21
-b(are)g(enco)r(ded)i(with)g(an)f(information)g(disp)r(ersal)f
-(algorithm)g(\(ID)n(A\).)j(Hosts)e(are)523 1841 y(still)34
-b(able)f(to)h(exercise)e(editorial)h(con)n(trol)f(o)n(v)n(er)g(the)i
-(con)n(ten)n(t)f(since)h(the)g(ID)n(A)g(do)r(es)f(not)523
-1940 y(prev)n(en)n(t)f(hosts)f(from)h(deco)r(ding)g(parts)g(of)g(the)h
-(plain)n(text.)f(Also,)g(the)h Fs(k)i FA(out)e(of)f Fs(n)g
-FA(share)523 2040 y(reconstruction)f(sc)n(heme)g(do)r(es)h(not)g(allo)n
-(w)f(reconstruction)f(of)i(a)g(\014le)g(b)n(y)g(mixing)f(shares)523
-2140 y(from)c(indep)r(enden)n(t)i(insertions)e(with)h(di\013eren)n(t)f
-(v)-5 b(alues)28 b(for)f Fs(k)j FA(or)d Fs(n)p FA(.)523
-2296 y
-SDict begin H.S end
- 523 2296 a 523 2296 a
-SDict begin 12 H.A end
- 523 2296 a 523 2296 a
-SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.2.3) cvn H.B /DEST
-pdfmark end
- 523
-2296 a 83 x Fr(2.3)95 b(Mnet)31 b(and)h(Mo)5 b(jo)32
-b(Nation)523 2536 y FA(Mnet)d(is)f(the)g(successor)f(of)h(Mo)5
-b(jo)27 b(Nation)h([)p 0 1 0 TeXcolorrgb 1938 2536 a
-SDict begin H.S end
-
-1938 2536 a 0 1 0 TeXcolorrgb FA(33)p 0 1 0 TeXcolorrgb
-2021 2482 a
-SDict begin H.R end
- 2021 2482 a 2021 2536 a
-SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(cite.mojotech) cvn H.B /ANN pdfmark end
- 2021 2536 a Black
-FA(],)h(a)e(p)r(eer-to-p)r(eer)g(net)n(w)n(ork)g(that)h(w)n(as)g(the)
-523 2635 y(\014rst)d(to)g(fo)r(cus)g(on)f(using)h(economic)f(incen)n
-(tiv)n(es)g(when)h(trading)g(con)n(ten)n(t.)f(As)h(the)h(descen-)523
-2735 y(dan)n(t)g(of)g(a)g(commercial)f(pro)r(duct,)i(Mnet)f(fo)r(cuses)
-g(mostly)g(on)g(e\016ciency)h(and)f(reliabilit)n(y)-7
-b(.)523 2835 y(Nev)n(ertheless,)31 b(Mnet)i(encrypts)e(\014les)h(with)h
-(AES)f(using)g(a)f(user-supplied)h(k)n(ey)f(to)h(allo)n(w)523
-2934 y(for)e(priv)-5 b(acy)e(.)30 b(The)h(\014le)g(is)f(then)h(brok)n
-(en)f(in)n(to)g(shares)f(using)h(an)h(erasure)e(co)r(de.)h(Multiple)523
-3034 y(shares)23 b(are)h(iden)n(ti\014ed)g(with)h(an)g(SHA-1)f(hash)g
-(and)g(stored)g(in)h(an)f(ino)r(de.)g(The)h(\014le)g(can)f(b)r(e)523
-3133 y(retriev)n(ed)i(using)i(the)g(hash)f(of)g(the)h(ino)r(de)g(and)f
-(the)h(symmetric)g(encryption)f(k)n(ey)-7 b(.)648 3233
-y(The)30 b(use)g(of)g(whole-\014le)f(AES)h(encryption)g(and)g(the)g
-(use)g(of)g(an)g(erasure)e(co)r(de)i(forces)523 3333
-y(Mnet,)c(as)f(with)h(F)-7 b(reenet,)26 b(to)f(store)g(a)g(second)g
-(cop)n(y)g(of)h(the)g(en)n(tire)f(\014le)h(in)f(the)h(Mnet)g(data)523
-3432 y(store)f(ev)n(en)h(if)g(the)g(user)g(retains)f(a)h(cop)n(y)f(of)h
-(the)g(\014le)g(in)g(plain)n(text.)g(The)g(enco)r(ding)g(mak)n(es)523
-3532 y(it)h(infeasible)f(to)g(enco)r(de)g(parts)f(of)i(the)f(\014le)h
-(on)f(request.)f(The)h(free)g(selection)g(of)g(the)h(AES)523
-3632 y(k)n(ey)j(allo)n(ws)f(indep)r(enden)n(t)j(users)d(to)i(create)f
-(completely)g(di\013eren)n(t)h(shares)e(for)h(iden)n(tical)523
-3731 y(\014les.)35 b(Since)g(the)h(encryption)e(of)h(the)g(con)n(ten)n
-(t)g(is)g(a)f(p)r(erfectly)i(indep)r(enden)n(t)g(pass)e(o)n(v)n(er)523
-3831 y(the)e(\014le,)g(other)e(enco)r(dings)h(suc)n(h)g(as)g(ECRS)g
-(and)g(F)-7 b(reenet's)32 b(enco)r(ding)f(could)g(b)r(e)h(easily)523
-3930 y(extended)i(to)g(include)h(this)f(b)r(eha)n(vior)e(if)j(desired)e
-({)h(without)g(the)h(need)f(to)g(mandate)f(a)523 4030
-y(certain)27 b(st)n(yle)g(of)h(AES)f(encryption.)523
-4186 y
-SDict begin H.S end
- 523 4186 a 523 4186 a
-SDict begin 12 H.A end
- 523 4186 a 523 4186 a
-SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.2.4) cvn H.B /DEST
-pdfmark end
- 523
-4186 a 84 x Fr(2.4)95 b(Publius)523 4426 y FA(Publius)23
-b([)p 0 1 0 TeXcolorrgb 843 4426 a
-SDict begin H.S end
- 843 4426 a 0 1 0 TeXcolorrgb
-FA(32)p 0 1 0 TeXcolorrgb 926 4373 a
-SDict begin H.R end
- 926 4373 a 926 4426
-a
-SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(cite.pub00) cvn H.B /ANN pdfmark end
- 926 4426 a Black FA(])h(is)g(a)f(static)g(net)n(w)n(ork)f(that)i
-(uses)f(Shamir's)g(algorithm)g([)p 0 1 0 TeXcolorrgb
-2736 4426 a
-SDict begin H.S end
- 2736 4426 a 0 1 0 TeXcolorrgb FA(27)p 0 1 0
-TeXcolorrgb 2819 4373 a
-SDict begin H.R end
- 2819 4373 a 2819 4426 a
-SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(cite.shamir) cvn H.B /ANN pdfmark end
- 2819
-4426 a Black FA(])g(to)h(split)g(the)g(k)n(ey)523 4526
-y(required)j(to)g(restore)g(stored)g(\014les)g(b)r(et)n(w)n(een)h(the)g
-(a)n(v)-5 b(ailable)27 b(serv)n(ers.)e(The)j(encrypted)g(\014le)523
-4625 y(is)33 b(then)h(stored)f(on)g(all)g(serv)n(ers.)e(The)j(serv)n
-(ers)d(cannot)i(decrypt)g(the)h(\014le)f(as)g(the)g(k)n(ey)g(is)523
-4725 y(nev)n(er)27 b(rev)n(ealed)f(to)h(them.)648 4825
-y(Publius)34 b(k)n(eys)g(are)g(random)g(strings.)g(The)h(system)g(do)r
-(es)g(not)g(pro)n(vide)e(an)n(y)i(searc)n(h)523 4924
-y(mec)n(hanism)c(and)h(exp)r(ects)f(the)h(users)f(to)h(obtain)f(the)h
-(k)n(eys)f(from)g(an)g(alternate)g(source.)p Black Black
-eop end
-%%Page: 6 6
-TeXDict begin 6 5 bop 0 0 a
-SDict begin /product where{pop product(Distiller)search{pop pop pop
-version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
-closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
-grestore}if}{pop}ifelse}{pop}ifelse}if end
- 0 0 a Black 0 TeXcolorgray
-523 232 a
-SDict begin H.S end
- 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
-232 a
-SDict begin H.R end
- 523 232 a 523 232 a
-SDict begin [ /View [/XYZ H.V] /Dest (page.6) cvn H.B /DEST pdfmark
-end
- 523 232 a Black Fx(6)237 b(C.)27
-b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
-Black 523 448 a FA(Publius)h(nev)n(er)e(discards)h(an)n(y)g(con)n(ten)n
-(t)g(and)h(th)n(us)g(assumes)e(that)i(disk)g(space)f(is)h(nev)n(er)e(a)
-523 548 y(limitation.)523 698 y
-SDict begin H.S end
- 523 698 a 523 698 a
-SDict begin 12 H.A end
- 523
-698 a 523 698 a
-SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.2.5) cvn H.B /DEST
-pdfmark end
- 523 698 a 99 x Fr(2.5)95 b(T)-8 b(angler)523
-964 y FA(The)31 b(T)-7 b(angler)30 b(net)n(w)n(ork)f([)p
-0 1 0 TeXcolorrgb 1345 964 a
-SDict begin H.S end
- 1345 964 a 0 1 0 TeXcolorrgb
-FA(31)p 0 1 0 TeXcolorrgb 1428 910 a
-SDict begin H.R end
- 1428 910 a 1428
-964 a
-SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.waldman2001tangler) cvn H.B /ANN pdfmark end
- 1428 964 a Black FA(])i(is)g(a)f(system)h(where)f(new)h(con)n
-(ten)n(t)g(is)g(en)n(tangled)f(with)h(old)523 1064 y(con)n(ten)n(t.)26
+ 1428 584 a Black Fx(])i(is)g(a)f(system)h(where)f(new)h(con)n
+(ten)n(t)g(is)g(en)n(tangled)f(with)h(old)523 683 y(con)n(ten)n(t.)26
 b(This)h(en)n(tanglemen)n(t)f(in)n(tro)r(duces)g(a)h(dep)r(endency)g
-(whic)n(h)f(mak)n(es)g(it)h(imp)r(ossible)523 1163 y(to)19
+(whic)n(h)f(mak)n(es)g(it)h(imp)r(ossible)523 783 y(to)19
 b(retriev)n(e)e(a)h(piece)h(of)g(con)n(ten)n(t)f(if)i(the)f(other)f
 (con)n(ten)n(t)g(that)h(it)g(w)n(as)f(en)n(tangled)g(with)i(is)e(lost.)
-523 1263 y(While)i(this)h(mak)n(es)d(it)j(imp)r(ossible)e(to)h(censor)f
+523 883 y(While)i(this)h(mak)n(es)d(it)j(imp)r(ossible)e(to)h(censor)f
 (sp)r(eci\014c)h(con)n(ten)n(t)f(without)h(losing)f(unrelated)523
-1362 y(con)n(ten)n(t)j(\(since)h(the)g(en)n(tanglemen)n(t)e(pairs)h
-(are)g(c)n(hosen)f(randomly\),)h(this)h(pro)r(cess)e
-Ft(doubles)523 1462 y FA(the)f(amoun)n(t)f(of)g(data)g(that)h(m)n(ust)f
-(b)r(e)h(transp)r(orted)f(b)n(y)g(the)h(net)n(w)n(ork.)e(This)h(sc)n
-(heme)g(fails)g(to)523 1562 y(address)29 b(the)i(fact)f(that)h(an)f
-(adv)n(ersary)d(ma)n(y)j(not)g(care)g(ab)r(out)g(losing)f(other)h(data)
-g(when)523 1661 y(attempting)35 b(to)g(censor)f(con)n(ten)n(t.)h(Also,)
-f(nothing)h(prev)n(en)n(ts)f(the)h(adv)n(ersary)e(from)h(\014rst)523
-1761 y(making)e(a)g(cop)n(y)f(of)h(imp)r(ortan)n(t)g(do)r(cumen)n(ts)h
+982 y(con)n(ten)n(t)j(\(since)h(the)g(en)n(tanglemen)n(t)e(pairs)h(are)
+g(c)n(hosen)f(randomly\),)h(this)h(pro)r(cess)e Fq(doubles)523
+1082 y Fx(the)f(amoun)n(t)f(of)g(data)g(that)h(m)n(ust)f(b)r(e)h
+(transp)r(orted)f(b)n(y)g(the)h(net)n(w)n(ork.)e(This)h(sc)n(heme)g
+(fails)g(to)523 1181 y(address)29 b(the)i(fact)f(that)h(an)f(adv)n
+(ersary)d(ma)n(y)j(not)g(care)g(ab)r(out)g(losing)f(other)h(data)g
+(when)523 1281 y(attempting)35 b(to)g(censor)f(con)n(ten)n(t.)h(Also,)f
+(nothing)h(prev)n(en)n(ts)f(the)h(adv)n(ersary)e(from)h(\014rst)523
+1381 y(making)e(a)g(cop)n(y)f(of)h(imp)r(ortan)n(t)g(do)r(cumen)n(ts)h
 (and)f(re-inserting)f(them)h(in)n(to)h(the)f(system)523
-1861 y(after)27 b(the)h(censorship)f(op)r(eration.)648
-1960 y(T)-7 b(angler)33 b(has)h(some)h(similarities)f(with)h(ECRS.)g
-(In)g(particular,)e(it)j(uses)e(hash)h(trees)523 2060
+1480 y(after)27 b(the)h(censorship)f(op)r(eration.)648
+1580 y(T)-7 b(angler)33 b(has)h(some)h(similarities)f(with)h(ECRS.)g
+(In)g(particular,)e(it)j(uses)e(hash)h(trees)523 1680
 y(for)40 b(in)n(tegrit)n(y)f(c)n(hec)n(ks)g(on)h(\014xed-size)g(blo)r
 (c)n(ks)g(of)g(data.)g(Ho)n(w)n(ev)n(er,)e(unlik)n(e)i(ECRS,)h(the)523
-2160 y(T)-7 b(angler)33 b(enco)r(ding)h(uses)g(Shamir's)g(secret)g
-(sharing)f([)p 0 1 0 TeXcolorrgb 2283 2160 a
+1779 y(T)-7 b(angler)33 b(enco)r(ding)h(uses)g(Shamir's)g(secret)g
+(sharing)f([)p 0 1 0 TeXcolorrgb 2283 1779 a
 SDict begin H.S end
- 2283 2160
-a 0 1 0 TeXcolorrgb FA(27)p 0 1 0 TeXcolorrgb 2366 2106
+ 2283 1779
+a 0 1 0 TeXcolorrgb Fx(25)p 0 1 0 TeXcolorrgb 2366 1726
 a
 SDict begin H.R end
- 2366 2106 a 2366 2160 a
+ 2366 1726 a 2366 1779 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.shamir) cvn H.B /ANN pdfmark end
- 2366 2160 a Black FA(])h(to)g(en)n(tangle)g
-(the)h(blo)r(c)n(k)e(with)523 2259 y(other,)d(pre-existing)g(blo)r(c)n
+ 2366 1779 a Black Fx(])h(to)g(en)n(tangle)g
+(the)h(blo)r(c)n(k)e(with)523 1879 y(other,)d(pre-existing)g(blo)r(c)n
 (ks,)g(preferably)g(from)h(other)f(do)r(cumen)n(ts.)h(Both)g(T)-7
-b(angler)29 b(and)523 2359 y(ECRS)21 b(\(as)g(w)n(ell)g(as)g(F)-7
+b(angler)29 b(and)523 1979 y(ECRS)21 b(\(as)g(w)n(ell)g(as)g(F)-7
 b(reenet\))21 b(use)g(cryptographically)e(signed)i(data,)f(whic)n(h)i
-(T)-7 b(angler)20 b(calls)523 2458 y(collections.)27
+(T)-7 b(angler)20 b(calls)523 2078 y(collections.)27
 b(ECRS)h(has)f(analogous)e(constructions)i(to)h(T)-7
-b(angler's)26 b(collections,)h(referred)523 2558 y(to)d(in)g(this)g
-(pap)r(er)f(as)g Ft(dir)l(e)l(ctories)i FA(and)f Ft(namesp)l(ac)l(es)p
-FA(;)g(ho)n(w)n(ev)n(er,)e(unlik)n(e)h(ECRS,)h(a)f(T)-7
-b(angler)523 2658 y(collection)34 b(has)g(a)g(v)n(ersioned)f(ro)r(ot)h
-(whic)n(h)h(explicitly)f(lists)h(all)f(of)h(the)g(con)n(ten)n(ts)f(in)h
-(the)523 2757 y(collection,)22 b(resulting)h(in)g(one)g(of)g(T)-7
-b(angler's)21 b(global)h(sync)n(hronization)f(problems.)h(Placing)523
-2857 y(a)28 b(do)r(cumen)n(t)g(in)h(a)f(F)-7 b(reenet)28
-b(subspace)g(or)f(ECRS)h(namespace)f(only)h(requires)f(that)i(it)g(b)r
-(e)523 2957 y(adequately)e(signed.)523 3122 y
+b(angler's)26 b(collections,)h(referred)523 2178 y(to)39
+b(in)h(our)f(tec)n(hnical)g(rep)r(ort)g([)p 0 1 0 TeXcolorrgb
+1552 2178 a
 SDict begin H.S end
- 523 3122
-a 523 3122 a
+ 1552 2178 a 0 1 0 TeXcolorrgb Fx(2)p 0 1 0
+TeXcolorrgb 1593 2124 a
+SDict begin H.R end
+ 1593 2124 a 1593 2178 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.ecrstechreport) cvn H.B /ANN pdfmark end
+ 1593
+2178 a Black Fx(])h(as)f Fq(dir)l(e)l(ctories)i Fx(and)e
+Fq(namesp)l(ac)l(es)p Fx(;)i(ho)n(w)n(ev)n(er,)c(unlik)n(e)523
+2277 y(ECRS,)28 b(a)h(T)-7 b(angler)27 b(collection)h(has)g(a)g(v)n
+(ersioned)f(ro)r(ot)h(whic)n(h)g(explicitly)h(lists)g(all)f(of)h(the)
+523 2377 y(con)n(ten)n(ts)34 b(in)g(the)h(collection,)e(resulting)h(in)
+g(one)g(of)g(T)-7 b(angler's)33 b(global)g(sync)n(hronization)523
+2477 y(problems.)h(do)r(cumen)n(t)i(in)f(a)g(F)-7 b(reenet)35
+b(subspace)f(or)h(ECRS)g(namespace)f(only)g(requires)523
+2576 y(that)28 b(it)g(b)r(e)g(adequately)f(signed.)523
+2711 y
+SDict begin H.S end
+ 523 2711 a 523 2711 a
 SDict begin 12 H.A end
- 523 3122 a 523 3122 a
-SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.2.6) cvn H.B /DEST
+ 523 2711 a 523 2711 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.2.3) cvn H.B /DEST
 pdfmark end
- 523 3122 a 84 x Fr(2.6)95
-b(Gn)m(utella)31 b(and)h(F)-8 b(astT)g(rac)m(k)523 3372
-y FA(The)31 b(F)-7 b(astT)g(rac)n(k)28 b(net)n(w)n(ork)p
-1 0 0 TeXcolorrgb 1376 3372 a
+ 523
+2711 a 84 x Fo(2.3)95 b(Gn)m(utella)31 b(and)h(F)-8 b(astT)g(rac)m(k)
+523 2930 y Fx(The)31 b(F)-7 b(astT)g(rac)n(k)28 b(net)n(w)n(ork)p
+1 0 0 TeXcolorrgb 1376 2930 a
 SDict begin H.S end
- 1376 3372 a -30 x Fz(1)1412
-3372 y
+ 1376 2930 a -30 x Fw(1)1412
+2930 y
 SDict begin 12 H.L end
- 1412 3372 a 1412 3372 a
+ 1412 2930 a 1412 2930 a
 SDict begin [ /Subtype /Link /Dest (Hfootnote.1) cvn /H /I /Border
 [0 0 0] /Color [1 0 0] H.B /ANN pdfmark end
- 1412 3372 a Black 31 w
-FA(and)i(mo)r(dern)g(v)-5 b(arian)n(ts)29 b(of)i(the)g(Gn)n(utella)f
-(proto)r(col)f(use)i(the)523 3472 y(SHA-1)f(hash)f(co)r(de)g(of)h(the)g
+ 1412 2930 a Black 31 w
+Fx(and)i(mo)r(dern)g(v)-5 b(arian)n(ts)29 b(of)i(the)g(Gn)n(utella)f
+(proto)r(col)f(use)i(the)523 3030 y(SHA-1)f(hash)f(co)r(de)g(of)h(the)g
 (shared)f(\014les)g(to)h(uniquely)f(iden)n(tify)i(\014les.)e(The)h
-(SHA-1)f(hash)523 3572 y(co)r(des)d(are)f(used)i(to)f(iden)n(tify)h
+(SHA-1)f(hash)523 3129 y(co)r(des)d(are)f(used)i(to)f(iden)n(tify)h
 (iden)n(tical)f(\014les)g(stored)g(on)g(di\013eren)n(t)g(p)r(eers.)g
-(The)g(p)r(eers)g(can)523 3671 y(then)d(use)g(this)g(information)f(to)h
+(The)g(p)r(eers)g(can)523 3229 y(then)d(use)g(this)g(information)f(to)h
 (do)n(wnload)f(the)h(\014le)g(from)f(m)n(ultiple)i(sources)d(\(sw)n
-(arming\).)523 3771 y(The)41 b(problem)f(with)h(this)f(approac)n(h)f
+(arming\).)523 3329 y(The)41 b(problem)f(with)h(this)f(approac)n(h)f
 (is)h(that)h(the)g(SHA-1)f(hash)g(co)r(des)g(can)h(only)f(b)r(e)523
-3871 y(v)n(eri\014ed)23 b(once)h(the)h(en)n(tire)f(\014le)g(has)g(b)r
+3428 y(v)n(eri\014ed)23 b(once)h(the)h(en)n(tire)f(\014le)g(has)g(b)r
 (een)g(retriev)n(ed.)f(T)-7 b(o)24 b(ruin)g(a)g(do)n(wnload,)f(it)i
-(su\016ces)f(for)523 3970 y(a)29 b(malicious)f(p)r(eer)i(to)f(con)n
+(su\016ces)f(for)523 3528 y(a)29 b(malicious)f(p)r(eer)i(to)f(con)n
 (tribute)g(just)h(one)e(single)h(in)n(v)-5 b(alid)29
-b(blo)r(c)n(k.)g(The)h(presence)e(of)h(an)523 4070 y(in)n(v)-5
+b(blo)r(c)n(k.)g(The)h(presence)e(of)h(an)523 3628 y(in)n(v)-5
 b(alid)22 b(blo)r(c)n(k)f(could)g(only)h(b)r(e)g(detected)g(after)f
 (the)h(en)n(tire)g(\014le)f(w)n(as)g(retriev)n(ed.)g(W)-7
-b(orse,)21 b(the)523 4169 y(simplistic)28 b(SHA-1)g(approac)n(h)f(do)r
+b(orse,)21 b(the)523 3727 y(simplistic)28 b(SHA-1)g(approac)n(h)f(do)r
 (es)g(not)i(giv)n(e)e(p)r(eers)g(an)n(y)h(w)n(a)n(y)f(to)h(iden)n(tify)
-g(the)h(lo)r(cation)523 4269 y(of)f(the)g(in)n(v)-5 b(alid)27
-b(blo)r(c)n(k)g(or)g(the)h(malicious)f(p)r(eer.)648 4369
+g(the)h(lo)r(cation)523 3827 y(of)f(the)g(in)n(v)-5 b(alid)27
+b(blo)r(c)n(k)g(or)g(the)h(malicious)f(p)r(eer.)648 3926
 y(Neither)19 b(F)-7 b(astT)g(rac)n(k)18 b(nor)h(Gn)n(utella)g(use)h
 (\014le)f(encryption.)g(Consequen)n(tly)-7 b(,)19 b(they)h(do)f(not)523
-4468 y(pro)n(vide)h(an)n(y)h(protection)f(from)h(censorship)f(b)r(ey)n
-(ond)h(decen)n(tralized)f(routing)h(of)g(requests.)p
-Black 523 4538 473 4 v 546 4592 a Fy(1)p 0 TeXcolorgray
-606 4532 a
+4026 y(pro)n(vide)h(an)n(y)h(protection)f(from)h(censorship)f(b)r(ey)n
+(ond)h(decen)n(tralized)f(routing)h(of)g(requests.)523
+4161 y
 SDict begin H.S end
- 606 4532 a 0 TeXcolorgray 0 TeXcolorgray 606
-4532 a
+ 523 4161 a 523 4161 a
+SDict begin 12 H.A end
+ 523 4161 a 523 4161 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.2.4) cvn H.B /DEST
+pdfmark end
+ 523
+4161 a 83 x Fo(2.4)95 b(Distributed)31 b(File)f(Systems)523
+4380 y Fx(V)-7 b(arious)21 b(distributed)i(\014le)g(systems)f(based)g
+(on)g(a)g(p)r(eer-to-p)r(eer)f(infrastructure)g(ha)n(v)n(e)h(b)r(een)
+523 4480 y(built)32 b(in)g(recen)n(t)e(y)n(ears)g([)p
+0 1 0 TeXcolorrgb 1316 4480 a
+SDict begin H.S end
+ 1316 4480 a 0 1 0 TeXcolorrgb
+Fx(7)p 0 1 0 TeXcolorrgb 1357 4426 a
 SDict begin H.R end
+ 1357 4426 a 1357
+4480 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.cfs:sosp01) cvn H.B /ANN pdfmark end
+ 1357 4480 a Black Fx(,)p 0 1 0 TeXcolorrgb 1380
+4480 a
+SDict begin H.S end
+ 1380 4480 a 0 1 0 TeXcolorrgb Fx(18)p 0 1 0 TeXcolorrgb
+1464 4426 a
+SDict begin H.R end
+ 1464 4426 a 1464 4480 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.mazieres02building) cvn H.B /ANN pdfmark end
+ 1464 4480 a Black
+Fx(,)p 0 1 0 TeXcolorrgb 1487 4480 a
+SDict begin H.S end
+ 1487 4480 a 0 1 0
+TeXcolorrgb Fx(21)p 0 1 0 TeXcolorrgb 1570 4426 a
+SDict begin H.R end
+ 1570
+4426 a 1570 4480 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.muthitacharoen02ivy) cvn H.B /ANN pdfmark end
+ 1570 4480 a Black Fx(,)p 0 1 0 TeXcolorrgb
+1593 4480 a
+SDict begin H.S end
+ 1593 4480 a 0 1 0 TeXcolorrgb Fx(24)p 0 1 0
+TeXcolorrgb 1676 4426 a
+SDict begin H.R end
+ 1676 4426 a 1676 4480 a
+SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(cite.rowstron01storage) cvn H.B /ANN pdfmark end
+ 1676
+4480 a Black Fx(].)h(These)g(systems)g(t)n(ypically)g(do)g(not)g(fo)r
+(cus)g(on)g(cen-)p Black 523 4538 473 4 v 546 4592 a
+Fv(1)p 0 TeXcolorgray 606 4532 a
+SDict begin H.S end
+ 606 4532 a 0 TeXcolorgray
+0 TeXcolorgray 606 4532 a
+SDict begin H.R end
  606 4532 a 606 4532 a
 SDict begin [ /View [/XYZ H.V] /Dest (Hfootnote.1) cvn H.B /DEST pdfmark
 end
- 606 4532 a Black 92 x Fx(Proto)r(col)28
-b(description)e(from)g(the)g(giFT-F)-6 b(astT)g(rac)n(k)26
-b(pro)t(ject)h(is)f(a)n(v)l(ailable)h(at)p 0 1 0 0 TeXcolorcmyk
-689 4802 a
+ 606 4532
+a Black 92 x Fu(Proto)r(col)d(description)e(from)g(the)g(giFT-F)-6
+b(astT)g(rac)n(k)26 b(pro)t(ject)h(is)f(a)n(v)l(ailable)h(at)p
+0 1 0 0 TeXcolorcmyk 689 4802 a
 SDict begin H.S end
- 689 4802 a 0 1 0 0 TeXcolorcmyk -16 x Fw
-(http://gnunet.org/papers/FAST)q(-)t(TR)q(ACK-)5 b(PROTO)q(COL)p
-0 1 0 0 TeXcolorcmyk 2423 4734 a
+ 689 4802 a 0 1 0 0 TeXcolorcmyk
+-16 x Ft(http://gnunet.org/papers/FAST)q(-)t(TR)q(ACK-)5
+b(PROTO)q(COL)p 0 1 0 0 TeXcolorcmyk 2423 4734 a
 SDict begin H.R end
- 2423 4734 a 2423 4786
-a
+ 2423
+4734 a 2423 4786 a
 SDict begin [ /H /I /Border [0 0 0] /Color [0 1 1] /Action << /Subtype
 /URI /URI (http://gnunet.org/papers/FAST-TRACK-PROTOCOL) >> /Subtype
 /Link H.B /ANN pdfmark end
- 2423 4786 a Black Fx(.)p Black Black Black eop end
-%%Page: 7 7
-TeXDict begin 7 6 bop 0 0 a
+ 2423 4786 a Black Fu(.)p Black Black
+Black eop end
+%%Page: 6 6
+TeXDict begin 6 5 bop 0 0 a
 SDict begin /product where{pop product(Distiller)search{pop pop pop
 version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
 closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
@@ -6796,241 +6097,190 @@
 232 a
 SDict begin H.R end
  523 232 a 523 232 a
-SDict begin [ /View [/XYZ H.V] /Dest (page.7) cvn H.B /DEST pdfmark
+SDict begin [ /View [/XYZ H.V] /Dest (page.6) cvn H.B /DEST pdfmark
 end
- 523 232 a Black 1036 w Fx(An)25
-b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)238
-b(7)p Black 523 365 a
-SDict begin H.S end
- 523 365 a 523 365 a
-SDict begin 12 H.A end
- 523 365 a 523
-365 a
-SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.2.7) cvn H.B /DEST
-pdfmark end
- 523 365 a 83 x Fr(2.7)95 b(Distributed)31 b(File)f(Systems)523
-626 y FA(V)-7 b(arious)21 b(distributed)i(\014le)g(systems)f(based)g
-(on)g(a)g(p)r(eer-to-p)r(eer)f(infrastructure)g(ha)n(v)n(e)h(b)r(een)
-523 725 y(built)39 b(in)f(recen)n(t)f(y)n(ears)f([)p
-0 1 0 TeXcolorrgb 1342 725 a
-SDict begin H.S end
- 1342 725 a 0 1 0 TeXcolorrgb
-FA(7)p 0 1 0 TeXcolorrgb 1384 672 a
-SDict begin H.R end
- 1384 672 a 1384 725
+ 523 232 a Black Fu(6)237 b(C.)27
+b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
+Black 523 448 a Fx(sorship)33 b(resistance)f(and)i(consequen)n(tly)f
+(do)g(not)h(encrypt)f(the)h(con)n(ten)n(ts.)g(Mo)r(dern)f(sys-)523
+548 y(tems)k(lik)n(e)e([)p 0 1 0 TeXcolorrgb 914 548
 a
-SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(cite.cfs:sosp01) cvn H.B /ANN pdfmark end
- 1384 725 a Black FA(,)p 0 1 0 TeXcolorrgb 1407 725
-a
 SDict begin H.S end
- 1407 725 a 0 1 0 TeXcolorrgb FA(19)p 0 1 0 TeXcolorrgb
-1490 672 a
+ 914 548 a 0 1 0 TeXcolorrgb Fx(7)p 0 1 0 TeXcolorrgb
+956 494 a
 SDict begin H.R end
- 1490 672 a 1490 725 a
+ 956 494 a 956 548 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(cite.mazires00sfs) cvn H.B /ANN pdfmark end
- 1490 725 a Black FA(,)p
-0 1 0 TeXcolorrgb 1513 725 a
-SDict begin H.S end
- 1513 725 a 0 1 0 TeXcolorrgb
-FA(20)p 0 1 0 TeXcolorrgb 1596 672 a
-SDict begin H.R end
- 1596 672 a 1596
-725 a
-SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(cite.mazieres02building) cvn H.B /ANN pdfmark end
- 1596 725 a Black FA(,)p 0 1 0 TeXcolorrgb 1619
-725 a
-SDict begin H.S end
- 1619 725 a 0 1 0 TeXcolorrgb FA(23)p 0 1 0 TeXcolorrgb
-1702 672 a
-SDict begin H.R end
- 1702 672 a 1702 725 a
-SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(cite.muthitacharoen02ivy) cvn H.B /ANN pdfmark end
- 1702 725 a Black FA(,)p
-0 1 0 TeXcolorrgb 1725 725 a
-SDict begin H.S end
- 1725 725 a 0 1 0 TeXcolorrgb
-FA(26)p 0 1 0 TeXcolorrgb 1808 672 a
-SDict begin H.R end
- 1808 672 a 1808
-725 a
-SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(cite.rowstron01storage) cvn H.B /ANN pdfmark end
- 1808 725 a Black FA(].)i(These)g(systems)f(t)n(ypically)h(do)f
-(not)h(fo)r(cus)g(on)523 825 y(censorship)g(resistance)g(and)i
-(consequen)n(tly)e(do)h(not)h(encrypt)f(the)h(con)n(ten)n(ts.)e(Mo)r
-(dern)523 925 y(systems)26 b(lik)n(e)g([)p 0 1 0 TeXcolorrgb
-1004 925 a
-SDict begin H.S end
- 1004 925 a 0 1 0 TeXcolorrgb FA(7)p 0 1 0
-TeXcolorrgb 1045 871 a
-SDict begin H.R end
- 1045 871 a 1045 925 a
-SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.cfs:sosp01) cvn H.B /ANN pdfmark end
- 1045 925
-a Black FA(,)p 0 1 0 TeXcolorrgb 1068 925 a
+ 956 548 a Black Fx(,)p
+0 1 0 TeXcolorrgb 979 548 a
 SDict begin H.S end
- 1068 925
-a 0 1 0 TeXcolorrgb FA(26)p 0 1 0 TeXcolorrgb 1152 871
-a
+ 979 548 a 0 1 0 TeXcolorrgb
+Fx(24)p 0 1 0 TeXcolorrgb 1062 494 a
 SDict begin H.R end
- 1152 871 a 1152 925 a
+ 1062 494 a 1062
+548 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.rowstron01storage) cvn H.B /ANN pdfmark end
- 1152 925 a Black FA(])g(route)g(con)n(ten)n(t)g
-(using)g(distributed)g(hash)g(tables)g([)p 0 1 0 TeXcolorrgb
-2805 925 a
+ 1062 548 a Black Fx(])h(route)g(con)n(ten)n(t)g(using)g
+(distributed)h(hash)f(tables)g([)p 0 1 0 TeXcolorrgb
+2786 548 a
 SDict begin H.S end
- 2805 925 a 0 1 0 TeXcolorrgb FA(18)p 0 1 0
-TeXcolorrgb 2889 871 a
+ 2786 548 a 0 1 0 TeXcolorrgb Fx(16)p 0 1 0
+TeXcolorrgb 2869 494 a
 SDict begin H.R end
- 2889 871 a 2889 925 a
+ 2869 494 a 2869 548 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.maymounkov02kademlia) cvn H.B /ANN pdfmark end
- 2889 925
-a Black FA(,)p 0 1 0 TeXcolorrgb 2912 925 a
+ 2869 548
+a Black Fx(,)p 0 1 0 TeXcolorrgb 2892 548 a
 SDict begin H.S end
- 2912 925
-a 0 1 0 TeXcolorrgb FA(28)p 0 1 0 TeXcolorrgb 2995 871
+ 2892 548
+a 0 1 0 TeXcolorrgb Fx(26)p 0 1 0 TeXcolorrgb 2975 494
 a
 SDict begin H.R end
- 2995 871 a 2995 925 a
+ 2975 494 a 2975 548 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.stoica01chord) cvn H.B /ANN pdfmark end
- 2995 925 a Black FA(])g(to)g(ac)n(hiev)n(e)523
-1024 y Fs(O)r FA(\(log)15 b Fs(n)p FA(\))32 b(scalabilit)n(y)-7
+ 2975 548 a Black Fx(])g(to)g(ac)n(hiev)n(e)523
+648 y Fp(O)r Fx(\(log)15 b Fp(n)p Fx(\))32 b(scalabilit)n(y)-7
 b(.)30 b(W)-7 b(ritable)32 b(distributed)g(\014le)f(systems)g(t)n
-(ypically)g(require)g(users)f(to)523 1124 y(authen)n(ticate)25
+(ypically)g(require)g(users)f(to)523 747 y(authen)n(ticate)25
 b(themselv)n(es)g(b)r(efore)f(b)r(eing)i(gran)n(ted)e(access)f(to)i
-(the)h(system)f(b)n(y)g(one)g(of)g(the)523 1224 y(serv)n(ers)33
-b([)p 0 1 0 TeXcolorrgb 827 1224 a
+(the)h(system)f(b)n(y)g(one)g(of)g(the)523 847 y(serv)n(ers)19
+b([)p 0 1 0 TeXcolorrgb 813 847 a
 SDict begin H.S end
- 827 1224 a 0 1 0 TeXcolorrgb
-FA(19)p 0 1 0 TeXcolorrgb 910 1170 a
+ 813 847 a 0 1 0 TeXcolorrgb
+Fx(17)p 0 1 0 TeXcolorrgb 896 793 a
 SDict begin H.R end
- 910 1170 a 910 1224
+ 896 793 a 896 847
 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.mazires00sfs) cvn H.B /ANN pdfmark end
- 910 1224 a Black FA(].)j(ECRS)e(fo)r(cuses)h(on)g(encrypting)g
-(shared)f(data)g(while)i(allo)n(wing)d(p)r(eers)i(to)523
-1323 y(v)n(erify)21 b(the)h(in)n(tegrit)n(y)f(of)g(the)h(encrypted)g
-(data)f(that)h(they)g(are)f(routing.)g(In)h(SUNDR)h([)p
-0 1 0 TeXcolorrgb 3236 1323 a
+ 896 847 a Black Fx(].)i(ECRS)f(fo)r(cuses)g(on)h(encrypting)f(shared)
+f(data)i(while)f(allo)n(wing)g(p)r(eers)g(to)g(v)n(er-)523
+946 y(ify)30 b(the)g(in)n(tegrit)n(y)f(of)g(the)h(encrypted)g(data)f
+(that)h(they)f(are)g(routing.)g(In)h(SUNDR)h([)p 0 1 0
+TeXcolorrgb 3228 946 a
 SDict begin H.S end
- 3236 1323 a 0 1 0 TeXcolorrgb
-FA(20)p 0 1 0 TeXcolorrgb 3319 1270 a
+ 3228 946 a 0 1 0 TeXcolorrgb Fx(18)p
+0 1 0 TeXcolorrgb 3311 893 a
 SDict begin H.R end
- 3319 1270 a 3319
-1323 a
+ 3311 893 a 3311 946 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.mazieres02building) cvn H.B /ANN pdfmark end
- 3319 1323 a Black FA(])e(a)523 1423 y(similar)g(problem)h(is)g
-(addressed;)f(here)g(users)g(can)h(detect)h(tamp)r(ering)e(b)n(y)h(the)
-g(\(un)n(trusted\))523 1522 y(serv)n(er)g(that)i(is)g(storing)f(the)h
-(data)g(in)g(a)g(setting)f(where)h(m)n(ultiple)g(users)f(are)g(up)r
-(dating)i(the)523 1622 y(same)h(data.)g(SUNDR)h(ac)n(hiev)n(es)e(what)h
-(is)g(called)g Ft(fork)k(c)l(onsistency)p FA(,)d(a)e(guaran)n(tee)g
-(that)h(if)523 1722 y(the)h(serv)n(er)e(passes)h(a)h(v)n(ersion)e(that)
-i(lac)n(ks)f(the)h(c)n(hanges)f(of)h(one)f(clien)n(t)h(to)g(another)f
-(clien)n(t)523 1821 y(at)g(one)f(p)r(oin)n(t)h(in)h(time,)f(it)g(can)g
-(nev)n(er)f(again)g(mak)n(e)g(the)h(c)n(hanges)e(of)i(either)g(clien)n
-(t)g(visible)523 1921 y(to)i(the)h(others.)f(This)g(is)g(a)g(w)n(eak)n
-(er)f(guaran)n(tee)f(than)j(the)g(optimal)f(situation)g(where)g(an)n(y)
-523 2021 y(misb)r(eha)n(vior)g(is)h(detected;)g(ho)n(w)n(ev)n(er,)e(it)
-j(is)e(the)i(strongest)e(p)r(ossible)g(prop)r(ert)n(y)g(that)h(can)523
-2120 y(b)r(e)39 b(ac)n(hiev)n(ed)f(giv)n(en)g(the)h(securit)n(y)f(mo)r
-(del)h(used.)g(ECRS)g(do)r(es)f(not)h(allo)n(w)f(users)f(with)523
-2220 y(distinct)h(pseudon)n(yms)f(to)h(up)r(date)g(the)g(same)f(con)n
-(ten)n(t)g(without)h(essen)n(tially)f(creating)523 2319
+ 3311
+946 a Black Fx(])e(a)523 1046 y(similar)21 b(problem)h(is)g(addressed;)
+f(here)g(users)g(can)h(detect)h(tamp)r(ering)e(b)n(y)h(the)g(\(un)n
+(trusted\))523 1146 y(serv)n(er)g(that)i(is)g(storing)f(the)h(data)g
+(in)g(a)g(setting)f(where)h(m)n(ultiple)g(users)f(are)g(up)r(dating)i
+(the)523 1245 y(same)h(data.)g(SUNDR)h(ac)n(hiev)n(es)e(what)h(is)g
+(called)g Fq(fork)k(c)l(onsistency)p Fx(,)d(a)e(guaran)n(tee)g(that)h
+(if)523 1345 y(the)h(serv)n(er)e(passes)h(a)h(v)n(ersion)e(that)i(lac)n
+(ks)f(the)h(c)n(hanges)f(of)h(one)f(clien)n(t)h(to)g(another)f(clien)n
+(t)523 1445 y(at)31 b(one)g(p)r(oin)n(t)g(in)h(time,)f(it)h(can)f(nev)n
+(er)f(again)g(mak)n(e)g(the)i(c)n(hanges)d(of)i(either)g(clien)n(t)h
+(visi-)523 1544 y(ble)e(to)g(the)h(others.)e(This)h(is)g(a)g(w)n(eak)n
+(er)e(guaran)n(tee)h(than)h(the)h(optimal)f(situation)g(where)523
+1644 y(an)n(y)e(misb)r(eha)n(vior)f(is)i(detected;)g(ho)n(w)n(ev)n(er,)
+d(it)j(is)g(the)g(strongest)e(p)r(ossible)h(prop)r(ert)n(y)g(that)523
+1743 y(can)e(b)r(e)h(ac)n(hiev)n(ed)e(giv)n(en)g(the)i(securit)n(y)e
+(mo)r(del)i(used.)f(ECRS)g(do)r(es)g(not)g(allo)n(w)f(users)g(with)523
+1843 y(distinct)38 b(pseudon)n(yms)f(to)h(up)r(date)g(the)g(same)f(con)
+n(ten)n(t)g(without)h(essen)n(tially)f(creating)523 1943
 y(t)n(w)n(o)26 b(\014les.)g(This)h(allo)n(ws)e(ECRS)h(to)g(guaran)n
 (tee)f(that)h(p)r(eers)g(can)g(nev)n(er)g(return)g(an)g
-Ft(invalid)523 2419 y FA(result)h(since)h(ev)n(ery)e(cop)n(y)h(can)g(b)
+Fq(invalid)523 2042 y Fx(result)h(since)h(ev)n(ery)e(cop)n(y)h(can)g(b)
 r(e)h(uniquely)g(iden)n(ti\014ed)g(at)f(all)h(times.)523
-2594 y
+2211 y
 SDict begin H.S end
- 523 2594 a 523 2594 a
+ 523 2211 a 523 2211 a
 SDict begin 12 H.A end
- 523 2594 a 523 2594 a
+ 523 2211 a 523 2211 a
 SDict begin [ /View [/XYZ H.V] /Dest (section.1.3) cvn H.B /DEST pdfmark
 end
  523
-2594 a 102 x Fu(3)112 b(ECRS)37 b(enco)s(ding)523 2907
-y FA(The)30 b(primary)e(requiremen)n(ts)h(for)g(the)h(ECRS)f(enco)r
-(ding)g(are)g Ft(plausible)k(deniability)f FA(and)523
-3006 y Ft(r)l(obustness)p FA(.)22 b(Plausible)f(deniabilit)n(y)h
+2211 a 101 x Fr(3)112 b(ECRS)37 b(enco)s(ding)523 2516
+y Fx(The)30 b(primary)e(requiremen)n(ts)h(for)g(the)h(ECRS)f(enco)r
+(ding)g(are)g Fq(plausible)k(deniability)f Fx(and)523
+2615 y Fq(r)l(obustness)p Fx(.)22 b(Plausible)f(deniabilit)n(y)h
 (describ)r(es)g(the)g(abilit)n(y)g(of)g(the)h(participan)n(ts)e(to)h
-(claim)523 3106 y(ignorance)k(of)i(the)g(nature)f(of)h(transferred)e
+(claim)523 2715 y(ignorance)k(of)i(the)g(nature)f(of)h(transferred)e
 (con)n(ten)n(t.)h(The)h(idea)f(here)h(is)f(that)h(b)n(y)g(making)523
-3206 y(it)g(hard)f(for)g(in)n(termediaries)g(to)g(determine)h(the)g
+2814 y(it)g(hard)f(for)g(in)n(termediaries)g(to)g(determine)h(the)g
 (con)n(ten)n(ts)f(that)h(they)g(are)f(routing,)g(they)523
-3305 y(are)h(less)h(lik)n(ely)f(to)i(casually)d(infringe)i(on)g(the)h
+2914 y(are)h(less)h(lik)n(ely)f(to)i(casually)d(infringe)i(on)g(the)h
 (priv)-5 b(acy)28 b(of)h(other)g(users,)f(to)h(b)r(e)h(forced)e(to)523
-3405 y(do)k(so)f(b)n(y)h(an)g(adv)n(ersary)-7 b(,)30
+3014 y(do)k(so)f(b)n(y)h(an)g(adv)n(ersary)-7 b(,)30
 b(or)h(to)h(b)r(e)h(held)f(resp)r(onsible)g(for)f(the)i(actions)e(of)h
-(others)g(that)523 3505 y(they)c(w)n(ere)f(un)n(wittingly)h
-(facilitating.)p 1 0 0 TeXcolorrgb 1758 3505 a
+(others)g(that)523 3113 y(they)c(w)n(ere)f(un)n(wittingly)h
+(facilitating.)p 1 0 0 TeXcolorrgb 1758 3113 a
 SDict begin H.S end
- 1758 3505
-a -31 x Fz(2)1795 3505 y
+ 1758 3113
+a -30 x Fw(2)1795 3113 y
 SDict begin 12 H.L end
- 1795 3505 a 1795 3505 a
+ 1795 3113 a 1795 3113 a
 SDict begin [ /Subtype /Link /Dest (Hfootnote.2) cvn /H /I /Border
 [0 0 0] /Color [1 0 0] H.B /ANN pdfmark end
  1795
-3505 a Black 28 w FA(Robustness)f(is)h(the)g(abilit)n(y)g(of)f(the)i
-(enco)r(ding)e(to)523 3604 y(resist)35 b(attac)n(ks)f(suc)n(h)h(as)f
+3113 a Black 28 w Fx(Robustness)f(is)h(the)g(abilit)n(y)g(of)f(the)i
+(enco)r(ding)e(to)523 3213 y(resist)35 b(attac)n(ks)f(suc)n(h)h(as)f
 (data)h(corruption)f(and)h(spam.)g(Spam)g(is)g(di\013eren)n(t)h(from)e
-(data)523 3704 y(corruption)29 b(in)h(that)h(the)f(goal)f(of)h(the)g
+(data)523 3313 y(corruption)29 b(in)h(that)h(the)f(goal)f(of)h(the)g
 (spammer)g(is)g(to)g(direct)g(the)g(user)g(to)g(undesirable)523
-3803 y(con)n(ten)n(t,)d(p)r(ossibly)h(hiding)f(useful)i(information)e
+3412 y(con)n(ten)n(t,)d(p)r(ossibly)h(hiding)f(useful)i(information)e
 (in)h(a)f(sea)g(of)h(useless)f(results.)g(Naturally)523
-3903 y(the)h(enco)r(ding)e(should)h(not)g(signi\014can)n(tly)g
+3512 y(the)h(enco)r(ding)e(should)h(not)g(signi\014can)n(tly)g
 (increase)f(the)h(amoun)n(t)g(of)g(data)g(that)g(needs)g(to)523
-4003 y(b)r(e)h(transferred.)648 4105 y(The)34 b(ECRS)g(enco)r(ding)g
+3611 y(b)r(e)h(transferred.)648 3712 y(The)34 b(ECRS)g(enco)r(ding)g
 (sc)n(heme)g(addresses)f(these)i(requiremen)n(ts.)e(ECRS)h(pro)n(vides)
-523 4204 y(plausible)40 b(deniabilit)n(y)f(b)n(y)h(hiding)g(the)g
+523 3812 y(plausible)40 b(deniabilit)n(y)f(b)n(y)h(hiding)g(the)g
 (nature)f(of)h(the)g(queries)f(and)h(resp)r(onses)e(from)523
-4304 y(in)n(termediaries)29 b(through)h(encryption.)g(Despite)h(the)g
-(fact)g(that)f(queries)g(and)g(resp)r(onses)p Black 523
-4382 473 4 v 546 4436 a Fy(2)p 0 TeXcolorgray 606 4376
-a
+3911 y(in)n(termediaries)29 b(through)h(encryption.)g(Despite)h(the)g
+(fact)g(that)f(queries)g(and)g(resp)r(onses)523 4011
+y(are)21 b(encrypted,)h(in)n(termediaries)e(can)i Fq(verify)i
+Fx(that)e(the)g(resp)r(onses)f(are)g(v)-5 b(alid)22 b(with)g(resp)r
+(ect)523 4110 y(to)f(a)g(particular)e(query)-7 b(.)21
+b(Th)n(us,)g(the)g(enco)r(ding)g(mec)n(hanism)g(pro)n(vides)e
+(robustness)h(against)523 4210 y(tamp)r(ering)g(and)g(false)h(replies.)
+e(Additional)i(robustness)e(is)i(gained)f(in)g(ECRS)g(b)n(y)h
+(splitting)523 4310 y(\014les)j(in)n(to)g(blo)r(c)n(ks)f(that)i(can)f
+(b)r(e)g Fq(indep)l(endently)i Fx(v)n(eri\014ed,)d(stored)g(and)h
+(distributed)h(across)p Black 523 4382 473 4 v 546 4436
+a Fv(2)p 0 TeXcolorgray 606 4376 a
 SDict begin H.S end
- 606 4376 a 0 TeXcolorgray 0 TeXcolorgray 606 4376 a
+ 606 4376 a 0 TeXcolorgray
+0 TeXcolorgray 606 4376 a
 SDict begin H.R end
-
-606 4376 a 606 4376 a
+ 606 4376 a 606 4376 a
 SDict begin [ /View [/XYZ H.V] /Dest (Hfootnote.2) cvn H.B /DEST pdfmark
 end
- 606 4376 a Black 92 x Fx(If)19
-b(the)g(data)g(cannot)g(b)r(e)f(iden)n(ti\014ed,)h(editorial)h(con)n
-(trol)g(is)f(tec)n(hnically)g(imp)r(ossible.)i(In)d Fq(Str)l(atton)606
-4559 y(Oakmont)36 b(v.)g(Pr)l(o)l(digy)p Fx(,)g(an)e(In)n(ternet)f(pro)
-n(vider)h(w)n(as)i(found)e(liable)i(for)f(hosting)g(a)g(bulletin)606
-4650 y(b)r(oard)29 b(on)h(whic)n(h)f(o\013ensiv)n(e)g(messages)i(had)e
-(b)r(een)g(p)r(osted.)h(This)g(\014nding)e(resulted)h(b)r(ecause)606
-4742 y(the)g(pro)n(vider)g(had)g(hired)g(individuals)h(to)f(exercise)i
-(editorial)f(con)n(trol)g(o)n(v)n(er)g(con)n(ten)n(t.)f(If)g(the)606
-4833 y(pro)n(vider)17 b(had)g(merely)h(published)f(messages)j(from)e
-(users)g(without)g(in)n(terference,)g(the)f(pro)n(vider)606
-4924 y(w)n(ould)26 b(p)r(oten)n(tially)g(not)g(ha)n(v)n(e)f(b)r(een)g
-(held)h(accoun)n(table)g([)p 0 1 0 TeXcolorrgb 2319 4924
-a
+ 606 4376
+a Black 92 x Fu(If)19 b(the)g(data)g(cannot)g(b)r(e)f(iden)n(ti\014ed,)
+h(editorial)h(con)n(trol)g(is)f(tec)n(hnically)g(imp)r(ossible.)i(In)d
+Fn(Str)l(atton)606 4559 y(Oakmont)36 b(v.)g(Pr)l(o)l(digy)p
+Fu(,)g(an)e(In)n(ternet)f(pro)n(vider)h(w)n(as)i(found)e(liable)i(for)f
+(hosting)g(a)g(bulletin)606 4650 y(b)r(oard)29 b(on)h(whic)n(h)f
+(o\013ensiv)n(e)g(messages)i(had)e(b)r(een)g(p)r(osted.)h(This)g
+(\014nding)e(resulted)h(b)r(ecause)606 4742 y(the)g(pro)n(vider)g(had)g
+(hired)g(individuals)h(to)f(exercise)i(editorial)f(con)n(trol)g(o)n(v)n
+(er)g(con)n(ten)n(t.)f(If)g(the)606 4833 y(pro)n(vider)17
+b(had)g(merely)h(published)f(messages)j(from)e(users)g(without)g(in)n
+(terference,)g(the)f(pro)n(vider)606 4924 y(w)n(ould)26
+b(p)r(oten)n(tially)g(not)g(ha)n(v)n(e)f(b)r(een)g(held)h(accoun)n
+(table)g([)p 0 1 0 TeXcolorrgb 2319 4924 a
 SDict begin H.S end
- 2319 4924 a 0 1 0 TeXcolorrgb Fx(29)p 0 1 0 TeXcolorrgb
-2396 4876 a
+ 2319 4924
+a 0 1 0 TeXcolorrgb Fu(27)p 0 1 0 TeXcolorrgb 2396 4876
+a
 SDict begin H.R end
  2396 4876 a 2396 4924 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.stratton_oakmont) cvn H.B /ANN pdfmark end
- 2396 4924 a Black
-Fx(].)p Black Black Black eop end
-%%Page: 8 8
-TeXDict begin 8 7 bop 0 0 a
+ 2396 4924 a Black Fu(].)p Black
+Black Black eop end
+%%Page: 7 7
+TeXDict begin 7 6 bop 0 0 a
 SDict begin /product where{pop product(Distiller)search{pop pop pop
 version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
 closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
@@ -7042,160 +6292,179 @@
 232 a
 SDict begin H.R end
  523 232 a 523 232 a
-SDict begin [ /View [/XYZ H.V] /Dest (page.8) cvn H.B /DEST pdfmark
+SDict begin [ /View [/XYZ H.V] /Dest (page.7) cvn H.B /DEST pdfmark
 end
- 523 232 a Black Fx(8)237 b(C.)27
-b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
-Black 523 448 a FA(are)21 b(encrypted,)h(in)n(termediaries)e(can)i
-Ft(verify)i FA(that)e(the)g(resp)r(onses)f(are)g(v)-5
-b(alid)22 b(with)g(resp)r(ect)523 548 y(to)f(a)g(particular)e(query)-7
-b(.)21 b(Th)n(us,)g(the)g(enco)r(ding)g(mec)n(hanism)g(pro)n(vides)e
-(robustness)h(against)523 648 y(tamp)r(ering)g(and)g(false)h(replies.)e
-(Additional)i(robustness)e(is)i(gained)f(in)g(ECRS)g(b)n(y)h(splitting)
-523 747 y(\014les)j(in)n(to)g(blo)r(c)n(ks)f(that)i(can)f(b)r(e)g
-Ft(indep)l(endently)i FA(v)n(eri\014ed,)d(stored)g(and)h(distributed)h
-(across)523 847 y(the)c(net)n(w)n(ork.)e(This)h(mak)n(es)g(it)h(easy)e
-(for)h(proto)r(cols)f(using)h(ECRS)g(to)h(incorp)r(orate)e(features)523
-946 y(suc)n(h)27 b(as)f(sw)n(arm)g(distribution)h([)p
-0 1 0 TeXcolorrgb 1547 946 a
+ 523 232 a Black 1036 w Fu(An)25
+b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)238
+b(7)p Black 523 448 a Fx(the)21 b(net)n(w)n(ork.)e(This)h(mak)n(es)g
+(it)h(easy)e(for)h(proto)r(cols)f(using)h(ECRS)g(to)h(incorp)r(orate)e
+(features)523 548 y(suc)n(h)27 b(as)f(sw)n(arm)g(distribution)h([)p
+0 1 0 TeXcolorrgb 1547 548 a
 SDict begin H.S end
- 1547 946 a 0 1 0 TeXcolorrgb
-FA(15)p 0 1 0 TeXcolorrgb 1630 893 a
+ 1547 548 a 0 1 0 TeXcolorrgb
+Fx(13)p 0 1 0 TeXcolorrgb 1630 494 a
 SDict begin H.R end
- 1630 893 a 1630
-946 a
+ 1630 494 a 1630
+548 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.hartman99swarm) cvn H.B /ANN pdfmark end
- 1630 946 a Black FA(],)g(load)f(balancing)g(and)h(micro)r
-(economics)e([)p 0 1 0 TeXcolorrgb 3036 946 a
+ 1630 548 a Black Fx(],)g(load)f(balancing)g(and)h(micro)r
+(economics)e([)p 0 1 0 TeXcolorrgb 3036 548 a
 SDict begin H.S end
- 3036 946
-a 0 1 0 TeXcolorrgb FA(13)p 0 1 0 TeXcolorrgb 3119 893
+ 3036 548
+a 0 1 0 TeXcolorrgb Fx(12)p 0 1 0 TeXcolorrgb 3119 494
 a
 SDict begin H.R end
- 3119 893 a 3119 946 a
+ 3119 494 a 3119 548 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.ebe2003) cvn H.B /ANN pdfmark end
- 3119 946 a Black FA(].)i(These)523
-1046 y(features)g(are)g(also)g(signi\014can)n(t)g(from)h(the)g(viewp)r
+ 3119 548 a Black Fx(].)i(These)523
+648 y(features)g(are)g(also)g(signi\014can)n(t)g(from)h(the)g(viewp)r
 (oin)n(t)g(of)g(scalabilit)n(y)-7 b(.)27 b(When)h(all)g(handled)523
-1146 y(blo)r(c)n(ks)d(are)g(small,)h(no)r(des)g(can)f(participate)g(in)
-i(the)f(net)n(w)n(ork)e(activit)n(y)i(ev)n(en)f(if)i(their)f(o)n(wn)523
-1245 y(resources)36 b(are)h(limited.)i(Also,)f(storing)f(small,)h
-(individually)g(unin)n(telligible)g(pieces)g(of)523 1345
+747 y(blo)r(c)n(ks)d(are)g(small,)h(no)r(des)g(can)f(participate)g(in)i
+(the)f(net)n(w)n(ork)e(activit)n(y)i(ev)n(en)f(if)i(their)f(o)n(wn)523
+847 y(resources)36 b(are)h(limited.)i(Also,)f(storing)f(small,)h
+(individually)g(unin)n(telligible)g(pieces)g(of)523 946
 y(p)r(oten)n(tially)19 b(ob)5 b(jectionable)18 b(con)n(ten)n(t)h(is)g
 (lik)n(ely)f(to)h(further)g(supp)r(ort)g(plausible)g(deniabilit)n(y)-7
-b(.)648 1468 y(ECRS)27 b(uses)g(t)n(w)n(o)g(fundamen)n(tal)h(primitiv)n
+b(.)648 1069 y(ECRS)27 b(uses)g(t)n(w)n(o)g(fundamen)n(tal)h(primitiv)n
 (es)g(in)g(the)g(o)n(v)n(erall)d(enco)r(ding)j(sc)n(heme.)f(The)523
-1567 y(ma)5 b(jorit)n(y)25 b(of)i(the)g(data)f(is)g(encrypted)h(with)g
+1169 y(ma)5 b(jorit)n(y)25 b(of)i(the)g(data)f(is)g(encrypted)h(with)g
 (a)f(v)-5 b(arian)n(t)26 b(of)g(F)-7 b(reenet's)27 b(CHK)f(enco)r(ding)
-g([)p 0 1 0 TeXcolorrgb 3317 1567 a
+g([)p 0 1 0 TeXcolorrgb 3317 1169 a
 SDict begin H.S end
- 3317 1567 a 0 1 0
-TeXcolorrgb FA(5)p 0 1 0 TeXcolorrgb 3359 1514 a
+ 3317 1169 a 0 1 0
+TeXcolorrgb Fx(5)p 0 1 0 TeXcolorrgb 3359 1115 a
 SDict begin H.R end
  3359
-1514 a 3359 1567 a
+1115 a 3359 1169 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.clark99distributed) cvn H.B /ANN pdfmark end
- 3359 1567 a Black FA(],)523 1667 y(where)35
+ 3359 1169 a Black Fx(],)523 1268 y(where)35
 b(CHK)h(stands)g(for)f(Con)n(ten)n(t)h(Hash)g(Key)-7
 b(.)35 b(In)h(other)g(w)n(ords,)e(the)j(con)n(ten)n(t)e(is)h(en-)523
-1767 y(crypted)31 b(with)g(a)g(k)n(ey)g(that)g(is)g(deriv)n(ed)f(from)h
+1368 y(crypted)31 b(with)g(a)g(k)n(ey)g(that)g(is)g(deriv)n(ed)f(from)h
 (a)g(cryptographic)e(hash)h(of)i(the)f(plain)n(text.)523
-1866 y(The)23 b(encrypted)g(con)n(ten)n(t)g(is)g(hashed)f(again)g(to)h
+1468 y(The)23 b(encrypted)g(con)n(ten)n(t)g(is)g(hashed)f(again)g(to)h
 (obtain)g(the)g(query)g(hash)f(whic)n(h)h(is)g(used)g(to)523
-1966 y(request)i(the)i(con)n(ten)n(t.)e(This)h(k)n(ey-query)e(pair)h
+1567 y(request)i(the)i(con)n(ten)n(t.)e(This)h(k)n(ey-query)e(pair)h
 (is)h(what)g(the)g(receiv)n(er)f(needs)h(to)f(do)n(wnload)523
-2065 y(and)i(decrypt)h(the)g(con)n(ten)n(t.)648 2188
+1667 y(and)i(decrypt)h(the)g(con)n(ten)n(t.)648 1790
 y(The)38 b(primary)g(di\013erence)g(b)r(et)n(w)n(een)g(the)h(use)g(of)f
-(CHK)h(in)g(ECRS)f(and)g(that)h(used)523 2288 y(in)29
-b([)p 0 1 0 TeXcolorrgb 644 2288 a
+(CHK)h(in)g(ECRS)f(and)g(that)h(used)523 1889 y(in)29
+b([)p 0 1 0 TeXcolorrgb 644 1889 a
 SDict begin H.S end
- 644 2288 a 0 1 0 TeXcolorrgb
-FA(5)p 0 1 0 TeXcolorrgb 685 2234 a
+ 644 1889 a 0 1 0 TeXcolorrgb
+Fx(5)p 0 1 0 TeXcolorrgb 685 1836 a
 SDict begin H.R end
- 685 2234 a 685 2288
+ 685 1836 a 685 1889
 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.clark99distributed) cvn H.B /ANN pdfmark end
- 685 2288 a Black FA(])g(is)f(that)h(ECRS)g(do)r(es)f(not)g(sub)5
+ 685 1889 a Black Fx(])g(is)f(that)h(ECRS)g(do)r(es)f(not)g(sub)5
 b(ject)29 b(en)n(tire)f(\014les)g(to)h(the)g(CHK)f(enco)r(ding.)g
-(Instead,)523 2387 y(\014les)f(are)g(split)h(in)n(to)f(\014xed-size)g
+(Instead,)523 1989 y(\014les)f(are)g(split)h(in)n(to)f(\014xed-size)g
 (blo)r(c)n(ks)g(whic)n(h)g(could)g(then)h(b)r(e)g(individually)g
-(distributed)523 2487 y(\(and)34 b(replicated\))g(across)e(p)r(eers)i
+(distributed)523 2089 y(\(and)34 b(replicated\))g(across)e(p)r(eers)i
 (in)h(the)f(net)n(w)n(ork;)f(this)i(is)f(a)f(natural)h(w)n(a)n(y)f(to)h
-(balance)523 2587 y(the)f(load)e(and)i(to)f(enable)g(sw)n(arming.)f
+(balance)523 2188 y(the)f(load)e(and)i(to)f(enable)g(sw)n(arming.)f
 (These)h(\014xed-sized)g(blo)r(c)n(ks)f(can)h(b)r(e)h(individually)523
-2686 y(iden)n(ti\014ed,)d(encrypted,)e(decrypted)h(and)g(v)n
+2288 y(iden)n(ti\014ed,)d(encrypted,)e(decrypted)h(and)g(v)n
 (eri\014ed.)f(Eac)n(h)g(blo)r(c)n(k)g(is)h(iden)n(ti\014ed)h(b)n(y)e
-(one)h(or)523 2786 y(t)n(w)n(o)24 b(hash)h(co)r(des,)g(and)g(the)h(blo)
+(one)h(or)523 2387 y(t)n(w)n(o)24 b(hash)h(co)r(des,)g(and)g(the)h(blo)
 r(c)n(ks)e(are)g(encrypted)h(using)g(a)g(k)n(ey)f(that)i(is)f(indep)r
-(enden)n(t)h(of)523 2886 y(the)g(hashes)e(used)i(for)f(iden)n
+(enden)n(t)h(of)523 2487 y(the)g(hashes)e(used)i(for)f(iden)n
 (ti\014cation.)g(V)-7 b(eri\014cation)25 b(only)g(requires)f(the)h
-(encrypted)h(blo)r(c)n(k)523 2985 y(and)k(the)g(query;)g(it)g(do)r(es)g
+(encrypted)h(blo)r(c)n(k)523 2587 y(and)k(the)g(query;)g(it)g(do)r(es)g
 (not)g(rev)n(eal)f(the)h(k)n(ey)f(required)g(to)h(decrypt)g(the)h(blo)r
-(c)n(k.)e(ECRS)523 3085 y(guaran)n(tees)23 b(that)j(it)g(is)g(hard)f
+(c)n(k.)e(ECRS)523 2686 y(guaran)n(tees)23 b(that)j(it)g(is)g(hard)f
 (to)g(forge)g(a)g(resp)r(onse)f(that)i(passes)e(v)n(eri\014cation)h
-(for)g(a)g(giv)n(en)523 3184 y(query)-7 b(,)29 b(and)h(splitting)g
+(for)g(a)g(giv)n(en)523 2786 y(query)-7 b(,)29 b(and)h(splitting)g
 (\014les)g(in)n(to)f(blo)r(c)n(ks)g(allo)n(ws)g(ECRS)g(to)h(detect)g
-(data)g(corruption)e(on)523 3284 y(the)34 b(blo)r(c)n(k)f(lev)n(el.)g
+(data)g(corruption)e(on)523 2886 y(the)34 b(blo)r(c)n(k)f(lev)n(el.)g
 (Malicious)g(p)r(eers)g(cannot)g(transmit)h(more)e(than)i(the)g
-(selected)g(blo)r(c)n(k)523 3384 y(size)27 b(of)h(in)n(v)-5
+(selected)g(blo)r(c)n(k)523 2985 y(size)27 b(of)h(in)n(v)-5
 b(alid)27 b(data)g(b)r(efore)h(b)r(eing)f(detected.)648
-3506 y(The)18 b(second)h(primitiv)n(e)f(used)h(b)n(y)f(ECRS,)h(the)g
-Ft(KBlo)l(ck)p FA(,)h(is)f(completely)f(no)n(v)n(el.)g
-Ft(KBlo)l(ck)p FA(s)523 3606 y(allo)n(w)24 b(users)h(to)g(securely)f
+3108 y(The)18 b(second)h(primitiv)n(e)f(used)h(b)n(y)f(ECRS,)h(the)g
+Fq(KBlo)l(ck)p Fx(,)h(is)f(completely)f(no)n(v)n(el.)g
+Fq(KBlo)l(ck)p Fx(s)523 3208 y(allo)n(w)24 b(users)h(to)g(securely)f
 (obtain)i(the)f(k)n(ey-query)f(pair)g(b)n(y)i(en)n(tering)e(a)h
-(natural)g(language)523 3706 y(k)n(eyw)n(ord)35 b(selected)i(b)n(y)f
+(natural)g(language)523 3307 y(k)n(eyw)n(ord)35 b(selected)i(b)n(y)f
 (the)h(con)n(ten)n(t)f(pro)n(vider.)g(The)g(primitiv)n(e)h(used)g(to)f
-(ac)n(hiev)n(e)g(this)523 3805 y(in)e([)p 0 1 0 TeXcolorrgb
-649 3805 a
+(ac)n(hiev)n(e)g(this)523 3407 y(in)e([)p 0 1 0 TeXcolorrgb
+649 3407 a
 SDict begin H.S end
- 649 3805 a 0 1 0 TeXcolorrgb FA(2)p 0 1 0
-TeXcolorrgb 691 3752 a
+ 649 3407 a 0 1 0 TeXcolorrgb Fx(3)p 0 1 0
+TeXcolorrgb 691 3353 a
 SDict begin H.R end
- 691 3752 a 691 3805 a
+ 691 3353 a 691 3407 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.esed) cvn H.B /ANN pdfmark end
- 691 3805
-a Black FA(],)g(the)g(triple)g(hash,)f(is)h(impro)n(v)n(ed)f(on)g(in)h
-(this)h(w)n(ork)d(in)i(that)g Ft(KBlo)l(ck)p FA(s)h Ft(c)l(annot)f
-FA(b)r(e)523 3905 y(attac)n(k)n(ed)19 b(successfully)g(b)n(y)g(a)g
+ 691 3407
+a Black Fx(],)g(the)g(triple)g(hash,)f(is)h(impro)n(v)n(ed)f(on)g(in)h
+(this)h(w)n(ork)d(in)i(that)g Fq(KBlo)l(ck)p Fx(s)h Fq(c)l(annot)f
+Fx(b)r(e)523 3506 y(attac)n(k)n(ed)19 b(successfully)g(b)n(y)g(a)g
 (non-guessing)f(in)n(termediary)-7 b(.)19 b(The)h(triple)g(hash)f(sc)n
-(heme)g(w)n(as)523 4005 y(vulnerable)37 b(to)g(p)r(ossibile)g
+(heme)g(w)n(as)523 3606 y(vulnerable)37 b(to)g(p)r(ossibile)g
 (substitution)h(attac)n(ks)e(b)n(y)h(in)n(termediaries.)g
-Ft(KBlo)l(ck)p FA(s)h(defeat)523 4104 y(this)29 b(attac)n(k)f(b)n(y)h
+Fq(KBlo)l(ck)p Fx(s)h(defeat)523 3706 y(this)29 b(attac)n(k)f(b)n(y)h
 (signing)f(con)n(ten)n(t)g(adv)n(ertisemen)n(ts)f(using)i
-(deterministically)f(generated)523 4204 y(public)34 b(k)n(eys.)e
-(Additionally)-7 b(,)33 b(b)n(y)g(using)f Ft(KBlo)l(ck)p
-FA(s,)i(do)r(cumen)n(ts)f(can)g(b)r(e)g(inserted)g(under)523
-4303 y(m)n(ultiple)h(k)n(eys)e(at)g(a)h(minimal)g(cost)f(in)i(terms)e
+(deterministically)f(generated)523 3805 y(public)34 b(k)n(eys.)e
+(Additionally)-7 b(,)33 b(b)n(y)g(using)f Fq(KBlo)l(ck)p
+Fx(s,)i(do)r(cumen)n(ts)f(can)g(b)r(e)g(inserted)g(under)523
+3905 y(m)n(ultiple)h(k)n(eys)e(at)g(a)h(minimal)g(cost)f(in)i(terms)e
 (of)h(space.)f(Users)h(can)f(p)r(erform)h(b)r(o)r(olean)523
-4403 y(searc)n(hes)c(of)i(the)g(form)g(\\a)f(AND)i(b")f(whic)n(h)g
+4005 y(searc)n(hes)c(of)i(the)g(form)g(\\a)f(AND)i(b")f(whic)n(h)g
 (then)g(return)g(the)g(do)r(cumen)n(ts)g(whic)n(h)g(w)n(ere)523
-4503 y(inserted)h(under)g(a)f(matc)n(hing)h(set)g(of)g(k)n(eyw)n(ords.)
+4104 y(inserted)h(under)g(a)f(matc)n(hing)h(set)g(of)g(k)n(eyw)n(ords.)
 d(Before)j(the)g(do)n(wnload,)f(the)h(user)f(can)523
-4602 y(re\014ne)c(the)h(searc)n(h)e(results)h(using)h(the)g(metadata)f
-(asso)r(ciated)f(with)i(the)g(\014le.)648 4725 y(The)23
+4204 y(re\014ne)c(the)h(searc)n(h)e(results)h(using)h(the)g(metadata)f
+(asso)r(ciated)f(with)i(the)g(\014le.)648 4327 y(The)23
 b(rest)g(of)h(this)g(Section)f(giv)n(es)g(a)g(b)r(ottom-up)h
-(description)f(of)g(ECRS.)h(After)g(a)f(brief)523 4825
+(description)f(of)g(ECRS.)h(After)g(a)f(brief)523 4426
 y(o)n(v)n(erview,)29 b(P)n(art)p 1 0 0 TeXcolorrgb 1083
-4825 a
+4426 a
 SDict begin H.S end
- 1083 4825 a 1 0 0 TeXcolorrgb FA(3.2)p 1 0 0 TeXcolorrgb
-1189 4771 a
+ 1083 4426 a 1 0 0 TeXcolorrgb Fx(3.2)p 1 0 0 TeXcolorrgb
+1189 4373 a
 SDict begin H.R end
- 1189 4771 a 1189 4825 a
+ 1189 4373 a 1189 4426 a
 SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (subsection.1.3.2) cvn H.B /ANN pdfmark end
- 1189 4825 a Black
-31 w FA(sho)n(ws)h(ho)n(w)g(individual)h(data)g(blo)r(c)n(ks)f(are)g
-(encrypted)h(in)g(order)f(to)523 4924 y(mak)n(e)c(it)i(imp)r(ossible)f
+ 1189 4426 a Black
+31 w Fx(sho)n(ws)h(ho)n(w)g(individual)h(data)g(blo)r(c)n(ks)f(are)g
+(encrypted)h(in)g(order)f(to)523 4526 y(mak)n(e)c(it)i(imp)r(ossible)f
 (for)g(the)h(in)n(termediaries)e(to)h(determine)g(what)g(they)h(are)e
-(storing)g(or)p Black Black eop end
-%%Page: 9 9
-TeXDict begin 9 8 bop 0 0 a
+(storing)g(or)523 4625 y(transmitting.)k(P)n(art)p 1 0 0
+TeXcolorrgb 1219 4625 a
+SDict begin H.S end
+ 1219 4625 a 1 0 0 TeXcolorrgb
+Fx(3.3)p 1 0 0 TeXcolorrgb 1325 4572 a
+SDict begin H.R end
+ 1325 4572 a 1325
+4625 a
+SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(subsection.1.3.3) cvn H.B /ANN pdfmark end
+ 1325 4625 a Black 31 w Fx(then)g(describ)r(es)f(ho)n(w)h
+(\014les)g(are)f(split)h(in)n(to)g(those)f(data)h(blo)r(c)n(ks.)523
+4725 y(P)n(art)p 1 0 0 TeXcolorrgb 714 4725 a
+SDict begin H.S end
+ 714 4725
+a 1 0 0 TeXcolorrgb Fx(3.4)p 1 0 0 TeXcolorrgb 820 4672
+a
+SDict begin H.R end
+ 820 4672 a 820 4725 a
+SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(subsection.1.3.4) cvn H.B /ANN pdfmark end
+ 820 4725 a Black 30 w Fx(motiv)-5
+b(ates)30 b(and)f(explains)h(ho)n(w)f(ECRS)h(enables)f(users)h(to)f
+(searc)n(h)g(for)g(con)n(ten)n(t)523 4825 y(without)41
+b(exp)r(osing)e(the)i(plain)n(text)f(of)g(the)h(k)n(eyw)n(ord)d(or)h
+(the)i(corresp)r(onding)d(con)n(ten)n(t)523 4924 y(and)h(ho)n(w)g(in)n
+(termediaries)f(can)h(v)n(erify)f(that)i(a)f(giv)n(en)f(encrypted)h
+(reply)g(matc)n(hes)g(the)p Black Black eop end
+%%Page: 8 8
+TeXDict begin 8 7 bop 0 0 a
 SDict begin /product where{pop product(Distiller)search{pop pop pop
 version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
 closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
@@ -7207,55 +6476,54 @@
 232 a
 SDict begin H.R end
  523 232 a 523 232 a
-SDict begin [ /View [/XYZ H.V] /Dest (page.9) cvn H.B /DEST pdfmark
+SDict begin [ /View [/XYZ H.V] /Dest (page.8) cvn H.B /DEST pdfmark
 end
- 523 232 a Black 1036 w Fx(An)25
-b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)238
-b(9)p Black Black 1723 442 a Fp(K)5 b(B)t(l)q(ock)1858
-491 y Fo(\017)p Fn(\017)p 1856 491 4 24 v 1714 567 a
-Fp(I)h(B)t(l)q(ock)1950 576 y Fm(>)1233 653 y Fo(r)p
-Fn(r)1233 652 y Fl(d)1270 646 y(d)1308 639 y(d)1346 633
-y(d)1384 626 y(d)1421 620 y(d)1459 613 y(d)1497 607 y(d)1535
-601 y(d)1572 594 y(d)1610 588 y(d)1648 581 y(d)1858 651
-y Fo(\017)p Fn(\017)p 1856 651 4 4 v 1856 639 V 1856
-627 V 1856 615 V 1856 603 V 2518 654 a Fo(,)p Fn(,)2477
-647 y Fl(Z)2436 640 y(Z)2395 634 y(Z)2354 627 y(Z)2313
-620 y(Z)2272 614 y(Z)2231 607 y(Z)2190 600 y(Z)2149 593
-y(Z)2109 587 y(Z)2068 580 y(Z)2027 573 y(Z)937 702 y
-Fp(I)g(B)t(l)q(ock)1173 710 y Fy(1)862 759 y Fo(u)p Fn(u)p
-Fl(k)887 750 y(k)1072 785 y Fo(\017)p Fn(\017)p 1071
-785 V 1071 772 V 1071 759 V 1071 746 V 1071 733 V 1279
-759 a Fo(\))p Fn(\))1240 744 y Fl(S)1217 735 y(S)1813
-684 y Fp(:)13 b(:)g(:)1665 799 y Fo(y)p Fn(y)p 1664 801
-V 1677 792 V 1690 784 V 1703 776 V 1717 768 V 1730 760
-V 1743 752 V 1756 743 V 1770 735 V 1783 727 V 1796 719
-V 1809 711 V 1858 785 a Fo(\017)p Fn(\017)p 1856 787
-V 1856 771 V 1856 756 V 1856 741 V 1856 726 V 1856 710
-V 2050 799 a Fo(\045)p Fn(\045)p 2049 801 V 2035 792
-V 2022 784 V 2009 776 V 1996 768 V 1983 760 V 1969 752
-V 1956 743 V 1943 735 V 1930 727 V 1916 719 V 1903 711
-V 2543 702 a Fp(I)6 b(B)t(l)q(ock)2779 711 y Fk(k)2461
-759 y Fo(u)p Fn(u)2461 760 y Fl(k)2488 750 y(k)2680 785
-y Fo(\017)p Fn(\017)p 2678 785 V 2678 773 V 2678 761
-V 2678 749 V 2678 737 V 2894 759 a Fo(\))p Fn(\))2855
-745 y Fl(S)2829 735 y(S)567 836 y Fp(D)r(B)t(l)q(ock)828
-844 y Fy(1)716 932 y Fo(\017)p Fn(\017)p 714 932 4 64
-v 1028 818 a Fp(:)13 b(:)g(:)1072 932 y Fo(\017)p Fn(\017)p
+ 523 232 a Black Fu(8)237 b(C.)27
+b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
+Black Black 1723 442 a Fm(K)5 b(B)t(l)q(ock)1858 491
+y Fl(\017)p Fk(\017)p 1856 491 4 24 v 1714 567 a Fm(I)h(B)t(l)q(ock)
+1950 576 y Fj(>)1233 653 y Fl(r)p Fk(r)1233 652 y Fi(d)1270
+646 y(d)1308 639 y(d)1346 633 y(d)1384 626 y(d)1421 620
+y(d)1459 613 y(d)1497 607 y(d)1535 601 y(d)1572 594 y(d)1610
+588 y(d)1648 581 y(d)1858 651 y Fl(\017)p Fk(\017)p 1856
+651 4 4 v 1856 639 V 1856 627 V 1856 615 V 1856 603 V
+2518 654 a Fl(,)p Fk(,)2477 647 y Fi(Z)2436 640 y(Z)2395
+634 y(Z)2354 627 y(Z)2313 620 y(Z)2272 614 y(Z)2231 607
+y(Z)2190 600 y(Z)2149 593 y(Z)2109 587 y(Z)2068 580 y(Z)2027
+573 y(Z)937 702 y Fm(I)g(B)t(l)q(ock)1173 710 y Fv(1)862
+759 y Fl(u)p Fk(u)p Fi(k)887 750 y(k)1072 785 y Fl(\017)p
+Fk(\017)p 1071 785 V 1071 772 V 1071 759 V 1071 746 V
+1071 733 V 1279 759 a Fl(\))p Fk(\))1240 744 y Fi(S)1217
+735 y(S)1813 684 y Fm(:)13 b(:)g(:)1665 799 y Fl(y)p
+Fk(y)p 1664 801 V 1677 792 V 1690 784 V 1703 776 V 1717
+768 V 1730 760 V 1743 752 V 1756 743 V 1770 735 V 1783
+727 V 1796 719 V 1809 711 V 1858 785 a Fl(\017)p Fk(\017)p
+1856 787 V 1856 771 V 1856 756 V 1856 741 V 1856 726
+V 1856 710 V 2050 799 a Fl(\045)p Fk(\045)p 2049 801
+V 2035 792 V 2022 784 V 2009 776 V 1996 768 V 1983 760
+V 1969 752 V 1956 743 V 1943 735 V 1930 727 V 1916 719
+V 1903 711 V 2543 702 a Fm(I)6 b(B)t(l)q(ock)2779 711
+y Fh(k)2461 759 y Fl(u)p Fk(u)2461 760 y Fi(k)2488 750
+y(k)2680 785 y Fl(\017)p Fk(\017)p 2678 785 V 2678 773
+V 2678 761 V 2678 749 V 2678 737 V 2894 759 a Fl(\))p
+Fk(\))2855 745 y Fi(S)2829 735 y(S)567 836 y Fm(D)r(B)t(l)q(ock)828
+844 y Fv(1)716 932 y Fl(\017)p Fk(\017)p 714 932 4 64
+v 1028 818 a Fm(:)13 b(:)g(:)1072 932 y Fl(\017)p Fk(\017)p
 1071 934 4 4 v 1071 919 V 1071 904 V 1071 889 V 1071
-874 V 1071 859 V 1071 844 V 1281 836 a Fp(D)r(B)t(l)q(ock)1542
-845 y Fk(l)1424 932 y Fo(\017)p Fn(\017)p 1422 932 4
-63 v 1813 818 a Fp(:)g(:)g(:)1858 932 y Fo(\017)p Fn(\017)p
+874 V 1071 859 V 1071 844 V 1281 836 a Fm(D)r(B)t(l)q(ock)1542
+845 y Fh(l)1424 932 y Fl(\017)p Fk(\017)p 1422 932 4
+63 v 1813 818 a Fm(:)g(:)g(:)1858 932 y Fl(\017)p Fk(\017)p
 1856 934 4 4 v 1856 919 V 1856 904 V 1856 889 V 1856
-874 V 1856 859 V 1856 844 V 2149 836 a Fp(D)r(B)t(l)q(ock)2410
-844 y Fk(m)2309 932 y Fo(\017)p Fn(\017)p 2307 932 4
-64 v 2635 818 a Fp(:)g(:)g(:)2680 932 y Fo(\017)p Fn(\017)p
+874 V 1856 859 V 1856 844 V 2149 836 a Fm(D)r(B)t(l)q(ock)2410
+844 y Fh(m)2309 932 y Fl(\017)p Fk(\017)p 2307 932 4
+64 v 2635 818 a Fm(:)g(:)g(:)2680 932 y Fl(\017)p Fk(\017)p
 2678 934 4 4 v 2678 919 V 2678 904 V 2678 889 V 2678
-874 V 2678 859 V 2678 844 V 2890 836 a Fp(D)r(B)t(l)q(ock)3151
-844 y Fk(n)3042 932 y Fo(\017)p Fn(\017)p 3041 932 4
+874 V 2678 859 V 2678 844 V 2890 836 a Fm(D)r(B)t(l)q(ock)3151
+844 y Fh(n)3042 932 y Fl(\017)p Fk(\017)p 3041 932 4
 64 v 522 936 2 2 v 524 937 2667 4 v 3191 936 2 2 v 521
 1048 4 111 v 3193 1048 V 522 1051 2 2 v 524 1052 2667
-4 v 3191 1051 2 2 v 1603 1006 a Fw(Original)41 b(data)523
-1201 y Fr(Fig.)15 b(1.)p 0 TeXcolorgray 814 1102 a
+4 v 3191 1051 2 2 v 1603 1006 a Ft(Original)41 b(data)523
+1201 y Fo(Fig.)15 b(1.)p 0 TeXcolorgray 814 1102 a
 SDict begin H.S end
  814
 1102 a 0 TeXcolorgray 0 TeXcolorgray 814 1102 a
@@ -7264,150 +6532,127 @@
 a 814 1102 a
 SDict begin [ /View [/XYZ H.V] /Dest (figure.1.1) cvn H.B /DEST pdfmark
 end
- 814 1102 a Black 99 x FA(Simple)40 b(enco)r(ding)g(of)f(a)
+ 814 1102 a Black 99 x Fx(Simple)40 b(enco)r(ding)g(of)f(a)
 h(\014le)g(using)f(a)h(tree)f(of)h(CHK)g(blo)r(c)n(ks)f(\()p
-Fs(D)r(B)t(l)r(ock)s FA(s)g(and)523 1301 y Fs(I)7 b(B)t(l)r(ock)s
-FA(s)41 b(are)f(CHK)i(enco)r(ded\))f(with)h(one)g Fs(K)6
-b(B)t(l)r(ock)43 b FA(to)e(allo)n(w)g(for)g(a)g(k)n(eyw)n(ord-based)523
-1400 y(searc)n(h.)p Black Black Black 523 1838 a(transmitting.)30
-b(P)n(art)p 1 0 0 TeXcolorrgb 1219 1838 a
+Fp(D)r(B)t(l)r(ock)s Fx(s)g(and)523 1301 y Fp(I)7 b(B)t(l)r(ock)s
+Fx(s)41 b(are)f(CHK)i(enco)r(ded\))f(with)h(one)g Fp(K)6
+b(B)t(l)r(ock)43 b Fx(to)e(allo)n(w)g(for)g(a)g(k)n(eyw)n(ord-based)523
+1400 y(searc)n(h.)p Black Black Black 523 1852 a(\(encrypted\))30
+b(query)-7 b(.)30 b(Finally)-7 b(,)30 b(the)g(core)f(of)h(ECRS)f(is)h
+(summarized)g(in)g(the)g(form)g(of)g(the)523 1951 y(enco)r(ding)d
+(algorithm)g(and)g(a)g(proto)r(col)g(example.)523 2127
+y
 SDict begin H.S end
- 1219 1838 a
-1 0 0 TeXcolorrgb FA(3.3)p 1 0 0 TeXcolorrgb 1325 1784
-a
-SDict begin H.R end
- 1325 1784 a 1325 1838 a
-SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(subsection.1.3.3) cvn H.B /ANN pdfmark end
- 1325 1838 a Black 31 w FA(then)g(describ)r
-(es)f(ho)n(w)h(\014les)g(are)f(split)h(in)n(to)g(those)f(data)h(blo)r
-(c)n(ks.)523 1938 y(P)n(arts)p 1 0 0 TeXcolorrgb 747
-1938 a
-SDict begin H.S end
- 747 1938 a 1 0 0 TeXcolorrgb FA(3.4)p 1 0 0 TeXcolorrgb
-853 1884 a
-SDict begin H.R end
- 853 1884 a 853 1938 a
-SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(subsection.1.3.4) cvn H.B /ANN pdfmark end
- 853 1938 a Black 31
-w FA(through)p 1 0 0 TeXcolorrgb 1201 1938 a
-SDict begin H.S end
- 1201 1938
-a 1 0 0 TeXcolorrgb FA(3.6)p 1 0 0 TeXcolorrgb 1307 1884
-a
-SDict begin H.R end
- 1307 1884 a 1307 1938 a
-SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(subsection.1.3.6) cvn H.B /ANN pdfmark end
- 1307 1938 a Black 30 w FA(motiv)-5
-b(ate)31 b(and)g(explain)f(ho)n(w)g(ECRS)g(enables)g(users)g(to)h
-(searc)n(h)523 2037 y(for)c(con)n(ten)n(t)g(without)h(exp)r(osing)f
-(the)h(plain)n(text)f(of)h(the)g(k)n(eyw)n(ord)d(or)i(the)h(corresp)r
-(onding)523 2137 y(con)n(ten)n(t)d(and)g(ho)n(w)g(in)n(termediaries)f
-(can)h(v)n(erify)g(that)h(a)f(giv)n(en)f(encrypted)i(reply)f(matc)n
-(hes)523 2236 y(the)30 b(\(encrypted\))h(query)-7 b(.)29
-b(Finally)-7 b(,)30 b(the)g(core)f(of)h(ECRS)g(is)g(summarized)f(in)h
-(the)g(form)g(of)523 2336 y(the)e(enco)r(ding)f(algorithm)g(and)g(a)g
-(proto)r(col)g(example.)523 2493 y
-SDict begin H.S end
- 523 2493 a 523 2493
-a
+ 523 2127 a 523 2127 a
 SDict begin 12 H.A end
- 523 2493 a 523 2493 a
+ 523 2127 a 523 2127 a
 SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.3.1) cvn H.B /DEST
 pdfmark end
- 523 2493 a 83 x Fr(3.1)95 b(Ov)m(erview)523
-2734 y FA(In)25 b(ECRS,)f(the)h(enco)r(ded)g(represen)n(tation)e(of)h
-(a)g(\014le)h(is)f(a)h(collection)f(of)g(blo)r(c)n(ks.)g(There)g(are)
-523 2833 y(four)h(t)n(yp)r(es)g(of)g(blo)r(c)n(ks:)f
-Ft(DBlo)l(cks)p FA(,)i Ft(IBlo)l(cks)p FA(,)h Ft(SBlo)l(cks)f
-FA(and)f Ft(KBlo)l(cks)p FA(.)h(The)f(maxim)n(um)g(size)523
-2933 y(of)f(all)g(blo)r(c)n(ks)g(in)h(ECRS)f(is)g(supp)r(osed)g(to)h(b)
-r(e)f(\014xed)h(as)f(some)f(small)h(n)n(um)n(b)r(er)h(\(e.g.)f(32Kb\).)
-523 3032 y(The)i(blo)r(c)n(ks)f(are)g(used)h(to)g(create)f(a)h(tree)g
+ 523 2127
+a 86 x Fo(3.1)95 b(Ov)m(erview)523 2392 y Fx(In)25 b(ECRS,)f(the)h
+(enco)r(ded)g(represen)n(tation)e(of)h(a)g(\014le)h(is)f(a)h
+(collection)f(of)g(blo)r(c)n(ks.)g(There)g(are)523 2491
+y(four)h(t)n(yp)r(es)g(of)g(blo)r(c)n(ks:)f Fq(DBlo)l(cks)p
+Fx(,)i Fq(IBlo)l(cks)p Fx(,)h Fq(SBlo)l(cks)f Fx(and)f
+Fq(KBlo)l(cks)p Fx(.)h(The)f(maxim)n(um)g(size)523 2591
+y(of)f(all)g(blo)r(c)n(ks)g(in)h(ECRS)f(is)g(supp)r(osed)g(to)h(b)r(e)f
+(\014xed)h(as)f(some)f(small)h(n)n(um)n(b)r(er)h(\(e.g.)f(32Kb\).)523
+2691 y(The)i(blo)r(c)n(ks)f(are)g(used)h(to)g(create)f(a)h(tree)g
 (structure)f(of)h(the)h(enco)r(ded)f(\014le)g(\(see)g(Figure)p
-1 0 0 TeXcolorrgb 3308 3032 a
+1 0 0 TeXcolorrgb 3308 2691 a
 SDict begin H.S end
- 3308 3032 a 1 0 0 TeXcolorrgb
-FA(1)p 1 0 0 TeXcolorrgb 3350 2979 a
+ 3308 2691 a 1 0 0 TeXcolorrgb
+Fx(1)p 1 0 0 TeXcolorrgb 3350 2637 a
 SDict begin H.R end
- 3350 2979 a 3350
-3032 a
+ 3350 2637 a 3350
+2691 a
 SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (figure.1.1) cvn H.B /ANN pdfmark end
- 3350 3032 a Black FA(\).)523 3132 y(The)39 b(actual)f(\014le)g
-(data)g(is)g(enco)r(ded)h(in)g Ft(DBlo)l(cks)g FA(whic)n(h)f(are)g
-(organized)f(b)n(y)h(a)g(tree)g(of)523 3232 y Ft(IBlo)l(cks)p
-FA(.)j(The)f Ft(IBlo)l(cks)p FA(,)h(whic)n(h)e(are)g(similar)f(to)i
-(UNIX)g(ino)r(des)g([)p 0 1 0 TeXcolorrgb 2698 3232 a
+ 3350 2691 a Black Fx(\).)523 2790 y(The)39 b(actual)f(\014le)g
+(data)g(is)g(enco)r(ded)h(in)g Fq(DBlo)l(cks)g Fx(whic)n(h)f(are)g
+(organized)f(b)n(y)h(a)g(tree)g(of)523 2890 y Fq(IBlo)l(cks)p
+Fx(.)j(The)f Fq(IBlo)l(cks)p Fx(,)h(whic)n(h)e(are)g(similar)f(to)i
+(UNIX)g(ino)r(des)g([)p 0 1 0 TeXcolorrgb 2698 2890 a
 SDict begin H.S end
 
-2698 3232 a 0 1 0 TeXcolorrgb FA(21)p 0 1 0 TeXcolorrgb
-2781 3178 a
+2698 2890 a 0 1 0 TeXcolorrgb Fx(19)p 0 1 0 TeXcolorrgb
+2781 2836 a
 SDict begin H.R end
- 2781 3178 a 2781 3232 a
+ 2781 2836 a 2781 2890 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.mckusick84fast) cvn H.B /ANN pdfmark end
- 2781 3232 a Black
-FA(],)g(are)e(indirection)523 3331 y(blo)r(c)n(ks)27
+ 2781 2890 a Black
+Fx(],)g(are)e(indirection)523 2990 y(blo)r(c)n(ks)27
 b(whic)n(h)h(enco)r(de)f(ho)n(w)g(the)h(leaf)g(no)r(des)f(of)h(the)g
 (tree)g(can)f(b)r(e)h(reassem)n(bled)e(in)n(to)i(the)523
-3431 y(original)35 b(\014le.)h(Ev)n(ery)f Ft(IBlo)l(ck)j
-FA(pro)n(vides)d(the)i(data)f(required)f(to)h(request,)g(decrypt)g(and)
-523 3531 y(v)n(erify)c(the)h(con)n(ten)n(ts)f(of)h(its)g(direct)g(c)n
+3089 y(original)35 b(\014le.)h(Ev)n(ery)f Fq(IBlo)l(ck)j
+Fx(pro)n(vides)d(the)i(data)f(required)f(to)h(request,)g(decrypt)g(and)
+523 3189 y(v)n(erify)c(the)h(con)n(ten)n(ts)f(of)h(its)g(direct)g(c)n
 (hildren.)f(V)-7 b(eri\014cation)32 b(is)h(done)g(using)f(hash)g(co)r
-(des)523 3630 y(of)h(the)h(c)n(hildren,)f(similar)f(to)h(the)h(w)n(a)n
-(y)d(a)i(Merkle)g(tree)g([)p 0 1 0 TeXcolorrgb 2377 3630
+(des)523 3288 y(of)h(the)h(c)n(hildren,)f(similar)f(to)h(the)h(w)n(a)n
+(y)d(a)i(Merkle)g(tree)g([)p 0 1 0 TeXcolorrgb 2377 3288
 a
 SDict begin H.S end
- 2377 3630 a 0 1 0 TeXcolorrgb FA(22)p 0 1 0 TeXcolorrgb
-2460 3577 a
+ 2377 3288 a 0 1 0 TeXcolorrgb Fx(20)p 0 1 0 TeXcolorrgb
+2460 3235 a
 SDict begin H.R end
- 2460 3577 a 2460 3630 a
+ 2460 3235 a 2460 3288 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.merkle89tree) cvn H.B /ANN pdfmark end
- 2460 3630 a Black
-FA(])g(w)n(orks.)f(Giv)n(en)h(the)g(size)g(of)523 3730
-y(the)25 b(\014le,)g(the)g(top)g Ft(IBlo)l(ck)h FA(uniquely)e(iden)n
+ 2460 3288 a Black
+Fx(])g(w)n(orks.)f(Giv)n(en)h(the)g(size)g(of)523 3388
+y(the)25 b(\014le,)g(the)g(top)g Fq(IBlo)l(ck)h Fx(uniquely)e(iden)n
 (ti\014es)h(the)g(con)n(ten)n(ts)f(of)h(the)g(en)n(tire)f(\014le.)h
-Ft(KBlo)l(cks)523 3829 y FA(and)32 b Ft(SBlo)l(cks)i
-FA(facilitate)e(obtaining)g(the)g(k)n(ey)g(hash)g(\(to)h(decrypt\))f
-(and)g(query)g(hash)g(\(to)523 3929 y(request\))27 b(for)g(the)h(top)g
-Ft(IBlo)l(ck)p FA(.)523 4090 y
+Fq(KBlo)l(cks)523 3488 y Fx(and)32 b Fq(SBlo)l(cks)i
+Fx(facilitate)e(obtaining)g(the)g(k)n(ey)g(hash)g(\(to)h(decrypt\))f
+(and)g(query)g(hash)g(\(to)523 3587 y(request\))27 b(for)g(the)h(top)g
+Fq(IBlo)l(ck)p Fx(.)523 3768 y
 SDict begin H.S end
- 523 4090 a 523 4090 a
+ 523 3768 a 523 3768 a
 SDict begin 12 H.A end
 
-523 4090 a 523 4090 a
+523 3768 a 523 3768 a
 SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.3.2) cvn H.B /DEST
 pdfmark end
- 523 4090 a 79 x Fr(3.2)95 b Fj(DBlo)-5
-b(cks)523 4327 y FA(Ev)n(ery)33 b Ft(DBlo)l(ck)j FA(corresp)r(onds)c
+ 523 3768 a 81 x Fo(3.2)95 b Fg(DBlo)-5
+b(cks)523 4028 y Fx(Ev)n(ery)33 b Fq(DBlo)l(ck)j Fx(corresp)r(onds)c
 (to)j(32Kb)e(of)i(the)g(original)e(\014le)i(\(the)g(last)g(blo)r(c)n(k)
-f(ma)n(y)g(b)r(e)523 4426 y(padded)g(with)g(zeros)e(if)i(the)g(\014le)g
+f(ma)n(y)g(b)r(e)523 4127 y(padded)g(with)g(zeros)e(if)i(the)g(\014le)g
 (end)g(do)r(es)f(not)h(fall)f(on)h(a)f(32Kb)f(b)r(oundary\).)h
-Ft(DBlo)l(ck)p FA(s)523 4526 y(are)d(encrypted)h(using)f(a)h(symmetric)
-f(cipher.)h(F)-7 b(or)30 b(the)i Ft(DBlo)l(ck)f FA(that)h(corresp)r
-(onds)d(to)h(a)523 4625 y(plain)n(text)e(blo)r(c)n(k)f
-Fs(B)1156 4637 y Fi(i)1184 4625 y FA(,)h(the)h(k)n(ey)e(for)g(the)i
-(cipher)f(is)f Fs(K)2204 4637 y Fi(i)2255 4625 y FA(:=)d
-Fs(H)7 b FA(\()p Fs(B)2538 4637 y Fi(i)2565 4625 y FA(\).)29
-b(This)f(guaran)n(tees)e(that)523 4725 y(the)d(same)f(blo)r(c)n(k)g
+Fq(DBlo)l(ck)p Fx(s)523 4227 y(are)d(encrypted)h(using)f(a)h(symmetric)
+f(cipher.)h(F)-7 b(or)30 b(the)i Fq(DBlo)l(ck)f Fx(that)h(corresp)r
+(onds)d(to)h(a)523 4327 y(plain)n(text)e(blo)r(c)n(k)f
+Fp(B)1156 4339 y Ff(i)1184 4327 y Fx(,)h(the)h(k)n(ey)e(for)g(the)i
+(cipher)f(is)f Fp(K)2204 4339 y Ff(i)2255 4327 y Fx(:=)d
+Fp(H)7 b Fx(\()p Fp(B)2538 4339 y Ff(i)2565 4327 y Fx(\).)29
+b(This)f(guaran)n(tees)e(that)523 4426 y(the)d(same)f(blo)r(c)n(k)g
 (will)h(alw)n(a)n(ys)e(b)r(e)i(encrypted)f(with)h(the)g(same)f(k)n(ey)
--7 b(.)22 b(Also,)g(the)h(in)n(tegrit)n(y)f(of)523 4825
+-7 b(.)22 b(Also,)g(the)h(in)n(tegrit)n(y)f(of)523 4526
 y(the)g(decrypted)f(blo)r(c)n(k)f(can)h(b)r(e)h(v)n(eri\014ed)e(b)n(y)h
-(c)n(hec)n(king)f(that)i Fs(K)2470 4837 y Fi(i)2520 4825
-y FA(=)h Fs(H)7 b FA(\()p Fs(B)2779 4837 y Fi(i)2806
-4825 y FA(\).)22 b(The)f(encrypted)523 4924 y(blo)r(c)n(k)k
-Fs(E)801 4936 y Fi(K)857 4944 y Fh(i)888 4924 y FA(\()p
-Fs(B)983 4936 y Fi(i)1011 4924 y FA(\))g(can)h(b)r(e)g(uniquely)f(iden)
-n(ti\014ed)h(b)n(y)g(its)f(hash)g Fs(Q)2509 4936 y Fi(i)2560
-4924 y FA(:=)e Fs(H)7 b FA(\()p Fs(E)2840 4936 y Fi(K)2896
-4944 y Fh(i)2926 4924 y FA(\()p Fs(B)3021 4936 y Fi(i)3049
-4924 y FA(\)\).)26 b(A)g(p)r(eer)p Black Black eop end
-%%Page: 10 10
-TeXDict begin 10 9 bop 0 0 a
+(c)n(hec)n(king)f(that)i Fp(K)2470 4538 y Ff(i)2520 4526
+y Fx(=)h Fp(H)7 b Fx(\()p Fp(B)2779 4538 y Ff(i)2806
+4526 y Fx(\).)22 b(The)f(encrypted)523 4625 y(blo)r(c)n(k)k
+Fp(E)801 4637 y Ff(K)857 4645 y Fe(i)888 4625 y Fx(\()p
+Fp(B)983 4637 y Ff(i)1011 4625 y Fx(\))g(can)h(b)r(e)g(uniquely)f(iden)
+n(ti\014ed)h(b)n(y)g(its)f(hash)g Fp(Q)2509 4637 y Ff(i)2560
+4625 y Fx(:=)e Fp(H)7 b Fx(\()p Fp(E)2840 4637 y Ff(K)2896
+4645 y Fe(i)2926 4625 y Fx(\()p Fp(B)3021 4637 y Ff(i)3049
+4625 y Fx(\)\).)26 b(A)g(p)r(eer)523 4725 y(can)34 b(query)g(for)g
+Fp(E)1115 4737 y Ff(K)1171 4745 y Fe(i)1201 4725 y Fx(\()p
+Fp(B)1296 4737 y Ff(i)1324 4725 y Fx(\))h(using)f(the)h(query)e(hash)h
+Fp(Q)2269 4737 y Ff(i)2331 4725 y Fx(without)h(rev)n(ealing)d
+Fp(K)3075 4737 y Ff(i)3102 4725 y Fx(.)j(Conse-)523 4825
+y(quen)n(tly)-7 b(,)24 b(the)g(pair)f(\()p Fp(K)1242
+4837 y Ff(i)1270 4825 y Fp(;)14 b(Q)1373 4837 y Ff(i)1400
+4825 y Fx(\))24 b(can)f(b)r(e)i(used)e(to)h(retriev)n(e)f(and)g
+(decrypt)h Fp(B)2813 4837 y Ff(i)2840 4825 y Fx(.)g(In)n(termediaries)
+523 4924 y(can)30 b(v)n(erify)h(that)g(a)f(resp)r(onse)g
+Fp(E)1568 4936 y Ff(K)1624 4944 y Fe(i)1654 4924 y Fx(\()p
+Fp(B)1749 4936 y Ff(i)1777 4924 y Fx(\))i(matc)n(hes)e(a)g(query)g
+(hash)h Fp(Q)2735 4936 y Ff(i)2793 4924 y Fx(without)g(kno)n(wing)p
+Black Black eop end
+%%Page: 9 9
+TeXDict begin 9 8 bop 0 0 a
 SDict begin /product where{pop product(Distiller)search{pop pop pop
 version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
 closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
@@ -7419,146 +6664,133 @@
 232 a
 SDict begin H.R end
  523 232 a 523 232 a
-SDict begin [ /View [/XYZ H.V] /Dest (page.10) cvn H.B /DEST pdfmark
+SDict begin [ /View [/XYZ H.V] /Dest (page.9) cvn H.B /DEST pdfmark
 end
- 523 232 a Black Fx(10)199 b(C.)27
-b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
-Black 523 448 a FA(can)34 b(query)g(for)g Fs(E)1115 460
-y Fi(K)1171 468 y Fh(i)1201 448 y FA(\()p Fs(B)1296 460
-y Fi(i)1324 448 y FA(\))h(using)f(the)h(query)e(hash)h
-Fs(Q)2269 460 y Fi(i)2331 448 y FA(without)h(rev)n(ealing)d
-Fs(K)3075 460 y Fi(i)3102 448 y FA(.)j(Conse-)523 548
-y(quen)n(tly)-7 b(,)24 b(the)g(pair)f(\()p Fs(K)1242
-560 y Fi(i)1270 548 y Fs(;)14 b(Q)1373 560 y Fi(i)1400
-548 y FA(\))24 b(can)f(b)r(e)i(used)e(to)h(retriev)n(e)f(and)g(decrypt)
-h Fs(B)2813 560 y Fi(i)2840 548 y FA(.)g(In)n(termediaries)523
-648 y(can)30 b(v)n(erify)h(that)g(a)f(resp)r(onse)g Fs(E)1568
-660 y Fi(K)1624 668 y Fh(i)1654 648 y FA(\()p Fs(B)1749
-660 y Fi(i)1777 648 y FA(\))i(matc)n(hes)e(a)g(query)g(hash)h
-Fs(Q)2735 660 y Fi(i)2793 648 y FA(without)g(kno)n(wing)523
-747 y Fs(K)594 759 y Fi(i)621 747 y FA(.)24 b(F)-7 b(reenet)24
-b([)p 0 1 0 TeXcolorrgb 984 747 a
+ 523 232 a Black 1036 w Fu(An)25
+b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)238
+b(9)p Black 523 448 a Fp(K)594 460 y Ff(i)621 448 y Fx(.)24
+b(F)-7 b(reenet)24 b([)p 0 1 0 TeXcolorrgb 984 448 a
 SDict begin H.S end
- 984 747 a 0 1 0 TeXcolorrgb
-FA(5)p 0 1 0 TeXcolorrgb 1025 694 a
+
+984 448 a 0 1 0 TeXcolorrgb Fx(5)p 0 1 0 TeXcolorrgb
+1025 395 a
 SDict begin H.R end
- 1025 694 a 1025 747
-a
+ 1025 395 a 1025 448 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.clark99distributed) cvn H.B /ANN pdfmark end
- 1025 747 a Black FA(])g(uses)f(the)h(same)f(sc)n(heme)g(to)h(encrypt)
-f(en)n(tire)g(\014les)h(\(not)g(just)g(blo)r(c)n(ks\))f(and)523
-847 y(the)28 b(authors)f(call)g(the)h(pair)f(\()p Fs(K)1536
-859 y Fi(i)1563 847 y Fs(;)14 b(Q)1666 859 y Fi(i)1693
-847 y FA(\))28 b(a)f(con)n(ten)n(t)h(hash)f(k)n(ey)g(\(CHK\).)523
-1028 y
+ 1025 448 a Black Fx(])g(uses)f(the)h
+(same)f(sc)n(heme)g(to)h(encrypt)f(en)n(tire)g(\014les)h(\(not)g(just)g
+(blo)r(c)n(ks\))f(and)523 548 y(the)28 b(authors)f(call)g(the)h(pair)f
+(\()p Fp(K)1536 560 y Ff(i)1563 548 y Fp(;)14 b(Q)1666
+560 y Ff(i)1693 548 y Fx(\))28 b(a)f(con)n(ten)n(t)h(hash)f(k)n(ey)g
+(\(CHK\).)523 708 y
 SDict begin H.S end
- 523 1028 a 523 1028 a
+ 523 708 a 523 708 a
 SDict begin 12 H.A end
- 523 1028 a 523 1028 a
+ 523 708 a 523
+708 a
 SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.3.3) cvn H.B /DEST
 pdfmark end
- 523
-1028 a 82 x Fr(3.3)95 b Fj(IBlo)-5 b(cks)523 1290 y FA(F)e(or)32
-b(\014les)h(larger)e(than)h(the)i(blo)r(c)n(ksize,)e(m)n(ultiple)h(CHK)
-f(k)n(eys)g(are)g(required)g(to)g(retriev)n(e)523 1390
-y(the)i(con)n(ten)n(t.)f(F)-7 b(or)33 b(example,)g(with)g(a)g(blo)r(c)n
-(ksize)g(of)g(32Kb)f(and)h(512-bit)g(hash)f(co)r(des,)h(a)523
-1489 y(32Mb)26 b(\014le)g(w)n(ould)g(b)r(e)h(split)f(in)n(to)h(1024)d
-Ft(DBlo)l(cks)p FA(,)j Fs(B)2186 1501 y Fz(1)2223 1489
-y Fs(;)14 b(:)g(:)g(:)g(;)g(B)2471 1501 y Fz(1024)2607
-1489 y FA(,)27 b(of)f(length)h(32Kb)e(eac)n(h.)523 1589
+ 523 708 a 79 x Fo(3.3)95 b Fg(IBlo)-5 b(cks)523
+943 y Fx(F)e(or)32 b(\014les)h(larger)e(than)h(the)i(blo)r(c)n(ksize,)e
+(m)n(ultiple)h(CHK)f(k)n(eys)g(are)g(required)g(to)g(retriev)n(e)523
+1043 y(the)i(con)n(ten)n(t.)f(F)-7 b(or)33 b(example,)g(with)g(a)g(blo)
+r(c)n(ksize)g(of)g(32Kb)f(and)h(512-bit)g(hash)f(co)r(des,)h(a)523
+1142 y(32Mb)26 b(\014le)g(w)n(ould)g(b)r(e)h(split)f(in)n(to)h(1024)d
+Fq(DBlo)l(cks)p Fx(,)j Fp(B)2186 1154 y Fw(1)2223 1142
+y Fp(;)14 b(:)g(:)g(:)g(;)g(B)2471 1154 y Fw(1024)2607
+1142 y Fx(,)27 b(of)f(length)h(32Kb)e(eac)n(h.)523 1242
 y(Groups)e(of)g(up)h(to)f(256)f(CHKs)h(are)g(assem)n(bled)f(in)n(to)i
-(one)f(32Kb)f Ft(IBlo)l(ck)p FA(,)j(resulting)e(in)g(four)523
-1689 y Ft(IBlo)l(ck)p FA(s)j(for)f(the)g(32Mb)f(\014le.)i(The)f
-(resulting)f Ft(IBlo)l(ck)p FA(s)i(are)e(CHK)h(encrypted)g(in)g(the)h
-(exact)523 1788 y(same)c(manner)h(as)f(the)h Ft(DBlo)l(cks)h
-FA(and)f(their)g(CHK-k)n(eys)e(are)h(again)g(group)r(ed)g(in)n(to)h
-Ft(IBlo)l(cks)523 1888 y FA(un)n(til)j(only)e(one)h(CHK)g(k)n(ey)g(is)g
+(one)f(32Kb)f Fq(IBlo)l(ck)p Fx(,)j(resulting)e(in)g(four)523
+1341 y Fq(IBlo)l(ck)p Fx(s)j(for)f(the)g(32Mb)f(\014le.)i(The)f
+(resulting)f Fq(IBlo)l(ck)p Fx(s)i(are)e(CHK)h(encrypted)g(in)g(the)h
+(exact)523 1441 y(same)c(manner)h(as)f(the)h Fq(DBlo)l(cks)h
+Fx(and)f(their)g(CHK-k)n(eys)e(are)h(again)g(group)r(ed)g(in)n(to)h
+Fq(IBlo)l(cks)523 1541 y Fx(un)n(til)j(only)e(one)h(CHK)g(k)n(ey)g(is)g
 (left.)h(F)-7 b(or)24 b(the)i(32Mb)e(\014le,)i(the)f(CHKs)g(for)g(the)g
-(four)g Ft(IBlo)l(ck)p FA(s)523 1988 y(are)g(th)n(us)h(collected)g(in)h
-(one)f(\014nal)g(top)g Ft(IBlo)l(ck)p FA(.)h(The)f(additional)g(space)g
-(requiremen)n(ts)f(for)523 2087 y(enco)r(ding)i(the)h(\014le)g(are)f(t)
+(four)g Fq(IBlo)l(ck)p Fx(s)523 1640 y(are)g(th)n(us)h(collected)g(in)h
+(one)f(\014nal)g(top)g Fq(IBlo)l(ck)p Fx(.)h(The)f(additional)g(space)g
+(requiremen)n(ts)f(for)523 1740 y(enco)r(ding)i(the)h(\014le)g(are)f(t)
 n(ypically)g(less)g(than)g(1\045)h(of)f(the)h(original)e(\014le)i
-(size.)523 2264 y
+(size.)523 1895 y
 SDict begin H.S end
- 523 2264 a 523 2264 a
+ 523 1895 a 523 1895 a
 SDict begin 12 H.A end
- 523 2264 a 523
-2264 a
+ 523 1895 a 523
+1895 a
 SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.3.4) cvn H.B /DEST
 pdfmark end
- 523 2264 a 86 x Fr(3.4)95 b(Finding)30 b(\014les)523
-2530 y FA(The)35 b(CHK)h(enco)r(ding)e(describ)r(ed)i(so)e(far)h(is)g
+ 523 1895 a 84 x Fo(3.4)95 b(Finding)30 b(\014les)523
+2135 y Fx(The)35 b(CHK)h(enco)r(ding)e(describ)r(ed)i(so)e(far)h(is)g
 (useful)h(for)f(transmitting)g(con)n(ten)n(t)g(that)g(is)523
-2630 y(enco)r(ded)e(and)h(y)n(et)f(v)n(eri\014able)f(for)h(in)n
+2234 y(enco)r(ded)e(and)h(y)n(et)f(v)n(eri\014able)f(for)h(in)n
 (termediaries.)f(Ho)n(w)n(ev)n(er,)f(a)i(practical)g(\014le-sharing)523
-2730 y(sc)n(heme)28 b(needs)h(to)f(pro)n(vide)g(functionalit)n(y)g(suc)
+2334 y(sc)n(heme)28 b(needs)h(to)f(pro)n(vide)g(functionalit)n(y)g(suc)
 n(h)h(that)f(the)h(users)f(can)g(obtain)h(the)g(query)523
-2829 y(hash)k(and)g(the)h(k)n(ey)e(that)i(are)e(no)n(w)h(necessary)e
+2434 y(hash)k(and)g(the)h(k)n(ey)e(that)i(are)e(no)n(w)h(necessary)e
 (in)j(order)d(to)j(retriev)n(e)e(and)h(decrypt)g(the)523
-2929 y(enco)r(ded)f(con)n(ten)n(t.)g(While)h(out-of-band)e(comm)n
+2533 y(enco)r(ded)f(con)n(ten)n(t.)g(While)h(out-of-band)e(comm)n
 (unication)h(of)g(those)g(CHK)g(k)n(eys)f(is)h(cer-)523
-3029 y(tainly)22 b(feasible,)g(an)g(in)n(tegrated)f(solution)g(is)h
+2633 y(tainly)22 b(feasible,)g(an)g(in)n(tegrated)f(solution)g(is)h
 (clearly)f(desirable.)g(Related)h(w)n(ork)f(on)h(secure)523
-3128 y(indexing)28 b([)p 0 1 0 TeXcolorrgb 881 3128 a
+2733 y(indexing)28 b([)p 0 1 0 TeXcolorrgb 881 2733 a
 SDict begin H.S end
 
-881 3128 a 0 1 0 TeXcolorrgb FA(12)p 0 1 0 TeXcolorrgb
-964 3075 a
+881 2733 a 0 1 0 TeXcolorrgb Fx(11)p 0 1 0 TeXcolorrgb
+964 2679 a
 SDict begin H.R end
- 964 3075 a 964 3128 a
+ 964 2679 a 964 2733 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.secure2004goh) cvn H.B /ANN pdfmark end
- 964 3128 a Black FA(])h(allo)n(ws)e
+ 964 2733 a Black Fx(])h(allo)n(ws)e
 (serv)n(ers)g(to)h(retriev)n(e)g(do)r(cumen)n(ts)g(b)n(y)g(k)n(eyw)n
-(ord)f(without)i(learning)523 3228 y(ab)r(out)23 b(the)g(rest)f(of)g
-(the)h(do)r(cumen)n(t.)g(The)g(sc)n(heme)f(that)h(will)g(b)r(e)g
-(describ)r(ed)f(in)h(Section)p 1 0 0 TeXcolorrgb 3299
-3228 a
-SDict begin H.S end
- 3299 3228 a 1 0 0 TeXcolorrgb FA(3.6)p 1 0 0 TeXcolorrgb
-3405 3174 a
-SDict begin H.R end
- 3405 3174 a 3405 3228 a
-SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(subsection.1.3.6) cvn H.B /ANN pdfmark end
- 3405 3228 a Black
-523 3328 a FA(impro)n(v)n(es)29 b(on)h(this)h(b)n(y)f(k)n(eeping)f(the)
-i(k)n(eyw)n(ord)e(itself)h(priv)-5 b(ate.)31 b(Additionally)-7
-b(,)30 b(it)h(still)g(al-)523 3427 y(lo)n(ws)20 b(in)n(termediaries)f
-(to)i(v)n(erify)f(the)h(correct)f(op)r(eration)g(of)g(the)i(serv)n(er.)
-d(It)i(also)f(a)n(v)n(oids)f(the)523 3527 y(need)26 b(for)g(the)g
-(publisher)g(to)g(encrypt)g(the)g(do)r(cumen)n(t)h(with)f(the)h(public)
-f(k)n(ey)g(of)g(a)f Ft(sp)l(e)l(ci\014c)523 3626 y FA(receiv)n(er,)k
-(thereb)n(y)h(theoretically)f(p)r(ermitting)i(arbitrary)e(participan)n
-(ts)g(to)h(access)g(same)523 3726 y(encrypted)37 b(con)n(ten)n(t)f
-(\(as)h(long)f(as)h(they)g(are)f(able)h(to)f(obtain)h(or)f(guess)g(the)
-i(necessary)523 3826 y(k)n(eyw)n(ord\).)648 3928 y(The)24
-b(k)n(ey)g(problem)g(for)g(the)h(searc)n(h)e(is)h(that)h(simply)f
-(publishing)h(CHK)f(k)n(eys)g(in)g(plain-)523 4028 y(text)36
-b(under)g(certain)f(k)n(eyw)n(ords)f(\(as)h(done)h(in)g(F)-7
-b(reenet)35 b(with)i(KSK)e(k)n(eys\))g(has)g(v)-5 b(arious)523
-4127 y(dra)n(wbac)n(ks.)24 b(First,)i(in)n(termediaries)f(w)n(ould)h
-(learn)g(ab)r(out)g(the)g(CHK)h(k)n(eys)e(that)i(they)f(are)523
-4227 y(storing)i(or)g(transmitting,)h(whic)n(h)h(could)f(allo)n(w)f
+(ord)f(without)i(learning)523 2832 y(ab)r(out)g(the)g(rest)g(of)g(the)g
+(do)r(cumen)n(t.)g(The)g(sc)n(heme)g(describ)r(ed)g(in)g(this)g
+(section)g(impro)n(v)n(es)523 2932 y(on)h(this)g(b)n(y)g(k)n(eeping)g
+(the)g(k)n(eyw)n(ord)f(itself)h(priv)-5 b(ate.)30 b(Additionally)-7
+b(,)31 b(it)f(still)h(allo)n(ws)e(in)n(ter-)523 3031
+y(mediaries)23 b(to)g(v)n(erify)g(the)h(correct)e(op)r(eration)g(of)i
+(the)f(serv)n(er.)f(It)i(also)e(a)n(v)n(oids)g(the)i(need)g(for)523
+3131 y(the)i(publisher)f(to)g(encrypt)h(the)f(do)r(cumen)n(t)h(with)g
+(the)g(public)g(k)n(ey)e(of)i(a)f Fq(sp)l(e)l(ci\014c)h
+Fx(receiv)n(er,)523 3231 y(thereb)n(y)d(theoretically)f(p)r(ermitting)i
+(arbitrary)d(participan)n(ts)h(to)h(access)g(same)f(encrypted)523
+3330 y(con)n(ten)n(t)27 b(\(as)g(long)g(as)g(they)h(are)f(able)g(to)g
+(obtain)h(or)e(guess)h(the)h(necessary)e(k)n(eyw)n(ord\).)648
+3430 y(The)e(k)n(ey)g(problem)g(for)g(the)h(searc)n(h)e(is)h(that)h
+(simply)f(publishing)h(CHK)f(k)n(eys)g(in)g(plain-)523
+3530 y(text)36 b(under)g(certain)f(k)n(eyw)n(ords)f(\(as)h(done)h(in)g
+(F)-7 b(reenet)35 b(with)i(KSK)e(k)n(eys\))g(has)g(v)-5
+b(arious)523 3629 y(dra)n(wbac)n(ks.)24 b(First,)i(in)n(termediaries)f
+(w)n(ould)h(learn)g(ab)r(out)g(the)g(CHK)h(k)n(eys)e(that)i(they)f(are)
+523 3729 y(storing)i(or)g(transmitting,)h(whic)n(h)h(could)f(allo)n(w)f
 (them)h(to)g(easily)g(censor)f(searc)n(h)f(results.)523
-4327 y(Second,)36 b(the)g(k)n(eyw)n(ords)d(are)i(directly)h(exp)r(osed)
+3828 y(Second,)36 b(the)g(k)n(eyw)n(ords)d(are)i(directly)h(exp)r(osed)
 f(to)h(the)g(in)n(termediaries,)e(whic)n(h)i(again)523
-4426 y(w)n(ould)31 b(facilitate)f(censorship.)g(Finally)-7
+3928 y(w)n(ould)31 b(facilitate)f(censorship.)g(Finally)-7
 b(,)31 b(p)r(eers)g(w)n(ould)f(b)r(e)i(able)e(to)h(send)g(in)n(v)-5
-b(alid)31 b(replies)523 4526 y(that)37 b(refer)f(to)h(inappropriate)e
+b(alid)31 b(replies)523 4028 y(that)37 b(refer)f(to)h(inappropriate)e
 (con)n(ten)n(t.)h(This)h(ma)n(y)f(b)r(e)h(just)g(a)g(n)n(uisance)f(if)h
-(malicious)523 4625 y(p)r(eers)c(use)g(this)h(for)f(adv)n(ertising)f
+(malicious)523 4127 y(p)r(eers)c(use)g(this)h(for)f(adv)n(ertising)f
 (\(a)h(kind)h(of)f(b)r(eha)n(vior)g(can)g(b)r(e)h(observ)n(ed)d(on)j
-(gn)n(utella)523 4725 y(from)c(time)h(to)g(time\).)h(P)n(ossibly)c(w)n
+(gn)n(utella)523 4227 y(from)c(time)h(to)g(time\).)h(P)n(ossibly)c(w)n
 (orse,)i(if)h(a)f(net)n(w)n(ork)f(w)n(an)n(ts)h(to)g(economically)g
-(rew)n(ard)523 4825 y(p)r(eers)24 b(for)f(returning)h(searc)n(h)e
+(rew)n(ard)523 4327 y(p)r(eers)24 b(for)f(returning)h(searc)n(h)e
 (results,)i(the)g(p)r(ossibilit)n(y)g(of)g(returning)g(arbitrary)e
-(nonsense)523 4924 y(migh)n(t)28 b(mak)n(e)e(suc)n(h)i(incen)n(tiv)n(e)
-f(sc)n(hemes)g(impractical.)p Black Black eop end
-%%Page: 11 11
-TeXDict begin 11 10 bop 0 0 a
+(nonsense)523 4426 y(migh)n(t)28 b(mak)n(e)e(suc)n(h)i(incen)n(tiv)n(e)
+f(sc)n(hemes)g(impractical.)648 4526 y(W)-7 b(e)32 b(will)g(no)n(w)f
+(describ)r(e)h(ho)n(w)f(information)g(ab)r(out)h(CHK)g(k)n(eys)f(that)h
+(are)f(necessary)523 4625 y(to)24 b(retriev)n(e)e(a)h(\014le)h(can)f(b)
+r(e)h(obtained)f(b)n(y)h(searc)n(hing)d(using)j(natural)e(language)g
+Fq(keywor)l(ds)j Fx({)523 4725 y(without)e(rev)n(ealing)e(the)i(k)n
+(eyw)n(ords)e(to)i(in)n(termediaries.)e(Searc)n(hing)h(requires)f(the)i
+(con)n(ten)n(t)523 4825 y(pro)n(vider)30 b(to)h(supply)g(metadata)f(ab)
+r(out)h(the)h(\014le;)f(in)h(particular,)d(the)j(con)n(ten)n(t)f(pro)n
+(vider)523 4924 y(m)n(ust)e(supply)g(a)g(list)g(of)g(k)n(eyw)n(ords.)e
+(While)j(the)g(metadata)e(is)h(published)h(as)e(part)h(of)g(the)p
+Black Black eop end
+%%Page: 10 10
+TeXDict begin 10 9 bop 0 0 a
 SDict begin /product where{pop product(Distiller)search{pop pop pop
 version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
 closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
@@ -7570,116 +6802,119 @@
 232 a
 SDict begin H.R end
  523 232 a 523 232 a
-SDict begin [ /View [/XYZ H.V] /Dest (page.11) cvn H.B /DEST pdfmark
+SDict begin [ /View [/XYZ H.V] /Dest (page.10) cvn H.B /DEST pdfmark
 end
- 523 232 a Black 1036 w Fx(An)25
-b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)199
-b(11)p Black 648 448 a FA(But)33 b(ho)n(w)g(can)g(a)g(system)g(prev)n
-(en)n(t)g(p)r(eers)g(from)g(returning)g(in)n(v)-5 b(alid)33
-b(resp)r(onses)f(to)h(a)523 548 y(k)n(eyw)n(ord-based)d(searc)n(h?)h
-(Since)i(it)g(is)f(inheren)n(t)h(in)g(the)g(nature)f(of)g(suc)n(h)g(a)h
-(searc)n(h)e(that)523 648 y(the)36 b(initiator)e(do)r(es)h(not)g(kno)n
-(w)f(precisely)g(what)h(con)n(ten)n(t)g(is)g(desired,)g(it)g(is)g(imp)r
-(ossible)523 747 y(for)e(the)h(query)f(to)g(completely)g(determine)h
-(the)g(reply)-7 b(.)33 b(F)-7 b(or)33 b(this)h(reason,)e(sc)n(hemes)g
-(lik)n(e)523 847 y(CHK)23 b(cannot)g(b)r(e)g(applied)g(to)g(the)h(k)n
-(eyw)n(ord-searc)n(h)19 b(problem:)k(in)g(CHK,)g(the)h(query)e(hash)523
-946 y(completely)g(determines)h(the)g(reply)-7 b(.)22
-b(As)g(a)g(result,)h(a)f(k)n(eyw)n(ord-based)e(searc)n(h)g(mec)n
-(hanism)523 1046 y(where)h(a)f(query)h(should)g(p)r(ossibly)g(ha)n(v)n
-(e)f(m)n(ultiple)h(v)-5 b(alid)21 b(results)g(cannot)g(b)r(e)g
-(implemen)n(ted)523 1146 y(based)k(on)h(CHK.)g(Since)g(for)f(this)i
-(kind)f(of)g(searc)n(h)e(there)i(cannot)f(b)r(e)h(an)n(y)g(completely)f
-(de-)523 1245 y(terministic)e(link)f(b)r(et)n(w)n(een)g(the)h(k)n(eyw)n
-(ord)d(and)i(the)h(con)n(ten)n(t,)f(ECRS)g(m)n(ust)h(trust)f(the)h
-(user)523 1345 y(who)i(is)g(uploading)g(the)h(con)n(ten)n(t)f(to)g(pro)
-n(vide)f(a)h(v)-5 b(alid)26 b(link.)f(That)h(user)e(m)n(ust)i(sp)r
-(ecify)g(ap-)523 1445 y(propriate)e(k)n(eyw)n(ords)f(\(and)i
-(metadata\))g(that)g(prop)r(erly)f(describ)r(es)h(the)g(con)n(ten)n(t.)
-g(Clearly)523 1544 y(this)30 b(trust)h(ma)n(y)e(b)r(e)i(misplaced.)f
-(The)g(uploader)f(ma)n(y)g(sp)r(ecify)i(k)n(eyw)n(ords)d(that)i(ha)n(v)
-n(e)f(no)523 1644 y(seman)n(tic)k(relation)f(with)h(the)g(con)n(ten)n
-(t.)g(One)g(solution)f(to)h(this)g(problem)g(is)g(the)g(use)g(of)523
-1743 y(namespaces,)c(whic)n(h)h(attac)n(k)f(the)i(issue)e(b)n(y)h
-(enabling)g(users)f(to)h(learn)f(whic)n(h)h(uploaders)523
-1843 y(are)d(trust)n(w)n(orth)n(y)-7 b(.)523 1997 y
+ 523 232 a Black Fu(10)199 b(C.)27
+b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
+Black 523 448 a Fq(KBlo)l(ck)i Fx(and)e(made)g(a)n(v)-5
+b(ailable)26 b(to)i(the)f(recipien)n(t)g(the)h(k)n(eyw)n(ords)e(are)g
+(only)h(used)g(to)h(com-)523 548 y(pute)j(the)g Fq(KBlo)l(ck)p
+Fx(s)g(and)f(not)g(made)g(a)n(v)-5 b(ailable)29 b(to)h(other)g(users)g
+(directly)-7 b(.)30 b(It)g(is)h(assumed)523 648 y(that)e(the)g(user)f
+(searc)n(hing)f(for)h(data)g(is)h(able)f(to)h Fq(guess)g
+Fx(at)f(least)g(one)h(of)f(these)h(k)n(eyw)n(ords.)523
+747 y(The)24 b(nature)g(of)g(the)h(searc)n(h)d(implies)j(that)f(there)g
+(is)g(no)g(direct,)h(cryptographically)c(v)n(eri\014-)523
+847 y(able)h(relation)f(b)r(et)n(w)n(een)h(the)g(k)n(eyw)n(ord)e(and)i
+(the)g(con)n(ten)n(t.)g(Man)n(y)f(\014les)h(can)g(matc)n(h)f(a)h(giv)n
+(en)523 946 y(k)n(eyw)n(ord.)h(Di\013eren)n(t)j(users)e(ma)n(y)h
+(sometimes)g(ha)n(v)n(e)f(a)h(di\013eren)n(t)g(p)r(erception)g(of)g
+(what)g(is)g(a)523 1046 y(correct)i(seman)n(tic)g(matc)n(h.)h(Th)n(us,)
+g(a)f(k)n(eyw)n(ord)g(searc)n(h)f(alw)n(a)n(ys)g(has)i(the)g(p)r(oten)n
+(tial)g(of)g(re-)523 1146 y(sulting)21 b(in)h(searc)n(h)e(results)h
+(that)g(a)g(user)g(ma)n(y)g(\014nd)h(inappropriate.)e(It)h(is)h(also)e
+(not)h(p)r(ossible)523 1245 y(to)28 b(prev)n(en)n(t)g(a)f(user)h(from)g
+(supplying)g(k)n(eyw)n(ords)e(that)i(ha)n(v)n(e)g(no)f(seman)n(tic)h
+(relation)f(with)523 1345 y(the)f(con)n(ten)n(t)e(and)h(thereb)n(y)g
+(increasing)f(the)h(c)n(hance)g(of)g(other)f(users)g(\014nding)i
+(undesirable)523 1445 y(results)h(for)g(those)g(k)n(eyw)n(ords.)648
+1608 y(Despite)38 b(these)g(fundamen)n(tal)h(dra)n(wbac)n(ks,)c(ECRS)j
+(should)g(\(and)g(can\))g(giv)n(e)g(some)523 1708 y(un)n(usual)e
+Fq(guar)l(ante)l(es)f Fx(for)h(k)n(eyw)n(ord-based)d(searc)n(hes.)h
+(First,)i(the)g(k)n(eyw)n(ord)e(used)i(for)f(a)523 1807
+y(searc)n(h)28 b(is)h(not)g(exp)r(osed)f(to)h(in)n(termediaries)f(in)i
+(a)e(w)n(a)n(y)g(that)i(w)n(ould)e(allo)n(w)g(them)i(to)f(eas-)523
+1907 y(ily)g(exercise)g(editorial)f(con)n(trol)g(\(i.e.)i(to)f(censor)f
+(queries\).)h(Note)g(again)g(that)g(a)g(guessing)523
+2007 y(attac)n(k)35 b(in)h(whic)n(h)g(the)h(in)n(termediary)d(guesses)h
+(a)h(k)n(eyw)n(ord,)e(computes)h(the)i(resp)r(ectiv)n(e)523
+2106 y(query)d(hash,)h(and)g(attempts)h(to)f(matc)n(h)g(the)g(query)g
+(hash)f(to)h(the)h(incoming)f(query)-7 b(,)34 b(is)523
+2206 y(considered)c(acceptable;)g(plausible)h(deniabilit)n(y)g(for)f
+(the)h(in)n(termediaries)f(is)h(una\013ected)523 2306
+y(b)n(y)c(this)g(attac)n(k.)f(Secondly)-7 b(,)26 b(only)h(p)r(eers)f
+(that)h(ha)n(v)n(e)f(con)n(ten)n(t)g(a)n(v)-5 b(ailable)26
+b(under)h(the)g(giv)n(en)523 2405 y(k)n(eyw)n(ord)32
+b(should)h(b)r(e)h(able)g(to)f(pro)r(duce)h(a)f(v)-5
+b(alid)34 b(resp)r(onse.)e(In)i(other)f(w)n(ords,)g(the)h(ulti-)523
+2505 y(mate)24 b(resp)r(onder)e(m)n(ust)i(ha)n(v)n(e)e(succeeded)h(in)h
+(guessing)f(the)h(k)n(eyw)n(ord.)d(This)j(is)f(imp)r(ortan)n(t)523
+2605 y(since)f(it)g(prev)n(en)n(ts)f(p)r(eers)g(from)h(making)f(up)i
+(replies)e(for)g(arbitrary)f(requests)h(on-the-\015y)-7
+b(.)22 b(If)523 2704 y(p)r(eers)e(w)n(ere)g(able)h(to)g(resp)r(ond)f
+(to)h(an)n(y)f(k)n(eyw)n(ord)f(query)h(without)h(ha)n(ving)f(to)h(at)f
+(least)h(guess)523 2804 y(the)33 b(k)n(eyw)n(ord,)f(they)h(could)f(use)
+h(this)h(to)e(spam)h(ev)n(ery)f(p)r(ossible)g(searc)n(h,)g(rendering)g
+(the)523 2903 y(k)n(eyw)n(ord)e(searc)n(h)g(mostly)i(useless.)f(F)-7
+b(orcing)31 b(resp)r(onders)f(to)i(guess)f(k)n(eyw)n(ords)f(do)r(es)h
+(not)523 3003 y(eliminate)c(the)g(problem)f(completely;)h(ho)n(w)n(ev)n
+(er,)d(it)j(do)r(es)g(limit)g(the)g(attac)n(k)f(to)h(the)g(com-)523
+3103 y(mon,)33 b(easily-guessed)d(k)n(eyw)n(ords.)g(Finally)-7
+b(,)33 b(the)g(v)n(eri\014cation)e(that)i(a)f(resp)r(onse)g(is)g(v)-5
+b(alid)523 3202 y(should)27 b(b)r(e)h(p)r(ossible)g(not)f(only)g(for)h
+(the)f(\014nal)h(recipien)n(t,)f(but)h(also)f(for)g(in)n(termediaries.)
+648 3366 y(ECRS)43 b(ac)n(hiev)n(es)g(all)h(of)g(this)g(with)h(a)f
+Fq(new)h(crypto)l(gr)l(aphic)i(primitive)f Fx(called)e
+Fp(K)6 b Fq(-)523 3466 y(deterministic)40 b(keys)f Fx(whic)n(h)f(is)g
+(a)g(k)n(ey)f(pair)g(\()p Fp(P)12 b(ub)2167 3481 y Ff(H)t
+Fw(\()p Ff(K)t Fw(\))2341 3466 y Fp(;)i(P)e(r)r(v)2522
+3481 y Ff(H)t Fw(\()p Ff(K)t Fw(\))2698 3466 y Fx(\))38
+b(generated)f(from)g(a)523 3565 y(k)n(eyw)n(ord)32 b
+Fp(K)6 b Fx(.)34 b(The)g(hash)f Fp(H)7 b Fx(\()p Fp(K)f
+Fx(\))34 b(of)g(the)g(k)n(eyw)n(ord)e(is)i(used)g(as)f(the)i(seed)e
+(and)h(the)g(only)523 3665 y(input)26 b(to)e(the)h(pseudo-random)e(n)n
+(um)n(b)r(er)i(generator)d(that)j(generates)e(the)i(public-priv)-5
+b(ate)523 3764 y(k)n(ey)23 b(pair.)f(The)i(authors)e(are)g(not)i(a)n(w)
+n(are)d(of)i(an)n(y)g(previous)f(use)h(of)g Fp(K)6 b
+Fx(-deterministic)23 b(k)n(eys.)523 3864 y(Giv)n(en)g(suc)n(h)g(a)g(k)n
+(ey)f(pair,)h(the)g(inserting)g(p)r(eer)g(generates)e
+Fq(KBlo)l(ck)p Fx(s)k(b)n(y)d(signing)h(the)g(meta-)523
+3964 y(data)30 b(necessary)g(to)h(do)n(wnload)e(the)i(\014le)h(with)f
+Fp(P)12 b(r)r(v)2186 3979 y Ff(H)t Fw(\()p Ff(K)t Fw(\))2362
+3964 y Fx(.)31 b Fq(KBlo)l(ck)p Fx(s)h(are)d(essen)n(tially)h(lik)n(e)
+523 4063 y Fq(SBlo)l(ck)p Fx(s)k(with)g(the)g(di\013erence)f(that)h
+(the)f Fp(K)6 b Fx(-determinate)33 b(k)n(ey)g(is)g(used)g(instead)g(of)
+h(the)523 4163 y(pseudon)n(ym.)27 b(The)h(construction)f(of)g(a)g
+Fq(KBlo)l(ck)i Fx(is)e(sho)n(wn)g(in)h(Figure)p 1 0 0
+TeXcolorrgb 2770 4163 a
 SDict begin H.S end
- 523
-1997 a 523 1997 a
-SDict begin 12 H.A end
- 523 1997 a 523 1997 a
-SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.3.5) cvn H.B /DEST
-pdfmark end
- 523 1997 a 83
-x Fr(3.5)95 b(Namespaces)523 2234 y FA(One)25 b(w)n(a)n(y)f(to)i(a)n(v)
-n(oid)d(searc)n(hing)h(in)i(an)f(un)n(trust)n(w)n(orth)n(y)f(global)g
-(k)n(eyw)n(ord)f(space)i(that)h(ma)n(y)523 2334 y(con)n(tain)e(mostly)f
-(inappropriately-lab)r(eled)g(con)n(ten)n(t)g(is)i(to)f(restrict)f(the)
-i(searc)n(h)d(to)j(name-)523 2434 y(spaces.)39 b(A)h(namespace)f(is)g
-(a)g(k)n(eyw)n(ord)f(space)h(that)h(con)n(tains)f(con)n(ten)n(t)g(that)
-h(is)g(cryp-)523 2533 y(tographically)32 b(signed)h(with)h(the)h(same)e
-(priv)-5 b(ate)33 b(k)n(ey)-7 b(.)33 b(The)h(concept)g(of)g(namespaces)
-e(is)523 2633 y(also)e(presen)n(t)h(in)g(F)-7 b(reenet)32
-b([)p 0 1 0 TeXcolorrgb 1410 2633 a
-SDict begin H.S end
- 1410 2633 a 0 1 0
-TeXcolorrgb FA(5)p 0 1 0 TeXcolorrgb 1451 2579 a
+ 2770 4163 a 1 0 0 TeXcolorrgb
+Fx(2)p 1 0 0 TeXcolorrgb 2812 4109 a
 SDict begin H.R end
- 1451
-2579 a 1451 2633 a
-SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(cite.clark99distributed) cvn H.B /ANN pdfmark end
- 1451 2633 a Black FA(],)g(but)g(with)f(F)-7
-b(reenet)32 b(it)f(is)h(not)f(p)r(ossible)g(to)g(obtain)g(m)n(ulti-)523
-2733 y(ple)i(results)e(b)n(y)h(searc)n(hing)f(a)h(namespace.)f(F)-7
-b(ortunately)g(,)32 b(it)h(is)f(easy)g(to)g(add)g Ft(se)l(ar)l(chable)
-523 2832 y FA(namespaces)26 b(to)i(ECRS.)648 2932 y(In)22
-b(ECRS,)g(a)g(namespace)f(is)i(iden)n(ti\014ed)f(b)n(y)g(a)g
-(public-priv)-5 b(ate)22 b(k)n(ey)g(pair)g(\(also)f(referred)523
-3031 y(to)k(as)g(the)h(pseudon)n(ym\).)f(The)h(priv)-5
-b(ate)25 b(k)n(ey)g(is)g(used)h(to)f(sign)g(the)h(con)n(ten)n(t)f(that)
-h(is)f(placed)523 3131 y(in)n(to)e(the)g(namespace,)f(and)h(the)g
-(public)h(k)n(ey)e(\(or)g(more)g(precisely)-7 b(,)22
-b(the)i(hash)e(of)h(the)h(public)523 3231 y(k)n(ey\))38
-b(is)g(used)g(as)g(a)g(public)g(handle)g(that)h(is)f(used)g(to)g(refer)
-g(to)g(the)h(namespace.)e(An)n(y)523 3330 y(user)d(can)g(create)g(an)n
-(y)g(n)n(um)n(b)r(er)g(of)h(pseudon)n(yms.)f(Once)g(the)h(user)f
-(accesses)f(\014les)h(from)523 3430 y(a)41 b(particular)f(namespace)g
-(it)i(is)f(p)r(ossible)g(to)g(form)g(an)g(opinion)g(ab)r(out)g(a)g
-(particular)523 3530 y(pseudon)n(ym,)27 b(whic)n(h)h(can)f(then)h(b)r
-(e)g(used)g(to)f(target)g(the)h(searc)n(h.)648 3629 y(Adding)37
-b(namespaces)g(to)g(the)h(design)f(requires)f(a)h(new)h(t)n(yp)r(e)g
-(of)f(blo)r(c)n(k,)g(called)g(an)523 3729 y Ft(SBlo)l(ck)p
-FA(.)f(An)f Ft(SBlo)l(ck)g FA(con)n(tains)f(the)h(k)n(ey)e(and)i(query)
-f(hash)g(\(CHK\))h(of)f(the)h(top)g Ft(IBlo)l(ck)523
-3828 y FA(together)j(with)h(the)f(metadata)g(b)r(elonging)g(to)g(the)h
-(con)n(ten)n(t,)f(thereb)n(y)g(allo)n(wing)f(users)523
-3928 y(that)h(receiv)n(e)f(an)g Ft(SBlo)l(ck)i FA(to)f(do)n(wnload)f
-(the)h(\014le.)g(Ho)n(w)n(ev)n(er,)e(this)i(data)f(is)h(encrypted)523
-4028 y(suc)n(h)d(that)h(in)n(termediaries)e(do)h(not)g(learn)f(an)n
-(ything)h(ab)r(out)g(the)h(referenced)e(\014le.)i(The)523
-4127 y(encryption)23 b(k)n(ey)f(is)h(the)g(hash)g(of)g(an)g(iden)n
-(ti\014er)f(that)i(the)f(inserter)f(c)n(hose)g(for)h(the)g(con)n(ten)n
-(t.)523 4227 y(The)32 b(iden)n(ti\014er)f(do)r(es)h(not)g(ha)n(v)n(e)e
-(to)i(b)r(e)g(unique)g(and)f(can,)h(for)f(example,)g(b)r(e)i(a)e(k)n
-(eyw)n(ord)523 4327 y(\(to)39 b(allo)n(w)e(searc)n(hing)f(the)j
-(namespace\))f(or)f(a)h(passw)n(ord)e(\(for)j(priv)-5
-b(ate)38 b(con)n(ten)n(t\).)g(The)523 4426 y(encrypted)32
-b(p)r(ortion)g(of)g(the)g Ft(SBlo)l(ck)h FA(is)f(follo)n(w)n(ed)f(b)n
-(y)h(a)g(hash)f(co)r(de)h(whic)n(h)g(is)g(the)h Ft(query)523
-4526 y FA(iden)n(ti\014er)22 b(for)f(the)i Ft(SBlo)l(ck)p
-FA(.)g(The)f(query)f(iden)n(ti\014er)h(is)g(the)g(hash)g(of)g(the)g(k)n
-(ey)g(\(whic)n(h)g(mak)n(es)523 4625 y(it)j(the)g(hash)g(of)f(the)h
-(hash)g(of)f(the)h(iden)n(ti\014er\).)g(When)g(a)g(user)f(searc)n(hes)f
-(a)h(namespace,)g(the)523 4725 y(request)i(con)n(tains)g(the)h(hash)g
-(of)f(the)i(public)f(k)n(ey)f(of)h(the)g(pseudon)n(ym)f(together)g
-(with)i(the)523 4825 y(query)d(iden)n(ti\014er.)g(By)g(using)g(the)g
-(hash)g(of)g(the)h(k)n(ey)f(as)f(the)i(query)f(iden)n(ti\014er,)g(the)g
-(correct)523 4924 y Ft(SBlo)l(ck)h FA(can)f(b)r(e)g(iden)n(ti\014ed)h
-(b)n(y)e(in)n(termediaries)g(but)h(not)g(decrypted.)g(A)n(t)h(the)f
-(same)f(time,)p Black Black eop end
-%%Page: 12 12
-TeXDict begin 12 11 bop 0 0 a
+ 2812 4109 a 2812
+4163 a
+SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
+(figure.1.2) cvn H.B /ANN pdfmark end
+ 2812 4163 a Black Fx(.)648 4327 y(A)c(p)r(eer)h(searc)n(hing)d
+(for)i Fp(K)30 b Fx(also)23 b(computes)i Fp(P)12 b(ub)2177
+4342 y Ff(H)t Fw(\()p Ff(K)t Fw(\))2375 4327 y Fx(using)24
+b(the)h(same)f(deterministic)523 4426 y(k)n(ey-generation)32
+b(algorithm)g(\()p Fp(P)12 b(r)r(v)1646 4441 y Ff(H)t
+Fw(\()p Ff(K)t Fw(\))1857 4426 y Fx(is)33 b(also)g(computed)i(but)g
+(not)f(used\).)g(The)g(p)r(eer)523 4526 y(then)k(uses)f
+Fp(H)7 b Fx(\()p Fp(P)12 b(ub)1165 4541 y Ff(H)t Fw(\()p
+Ff(K)t Fw(\))1339 4526 y Fx(\))38 b(as)f(the)h(query)f(hash.)g(In)n
+(termediaries)f(can)h(v)n(erify)g(that)h(the)523 4625
+y(resp)r(onse)30 b(is)h(v)-5 b(alid)31 b(b)n(y)f(c)n(hec)n(king)g(the)h
+Fq(KBlo)l(ck)p Fx(s)h(signature)e(against)f(its)i(public)h(k)n(ey)-7
+b(,)30 b(and)523 4725 y(c)n(hec)n(king)i(that)i(the)f(public)h(k)n(ey)f
+(hashes)f(to)h(the)h(query)e(hash.)h(Y)-7 b(et)34 b(in)n(termediaries)e
+(are)523 4825 y(unable)21 b(to)h(decrypt)f(the)g(resp)r(onse)g(or)f
+(learn)h(the)g(k)n(eyw)n(ord)f Fp(K)27 b Fx(that)21 b(w)n(as)g(used)g
+(to)g(generate)523 4924 y(the)28 b(public)g(k)n(ey)f(without)h
+(guessing.)p Black Black eop end
+%%Page: 11 11
+TeXDict begin 11 10 bop 0 0 a
 SDict begin /product where{pop product(Distiller)search{pop pop pop
 version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
 closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
@@ -7691,158 +6926,46 @@
 232 a
 SDict begin H.R end
  523 232 a 523 232 a
-SDict begin [ /View [/XYZ H.V] /Dest (page.12) cvn H.B /DEST pdfmark
+SDict begin [ /View [/XYZ H.V] /Dest (page.11) cvn H.B /DEST pdfmark
 end
- 523 232 a Black Fx(12)199 b(C.)27
-b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
-Black 523 448 a FA(only)e(the)g(iden)n(ti\014er)g(and)g(the)h(hash)e
-(of)h(the)h(public)f(k)n(ey)g(of)g(the)g(pseudon)n(ym)g(are)f(required)
-523 548 y(to)30 b(construct)g(b)r(oth)g(the)h(query)f(iden)n(ti\014er)g
-(needed)g(to)g(searc)n(h)f(the)h(namespace)g(and)g(the)523
-648 y(k)n(ey)g(needed)i(to)f(decrypt)f(the)i Ft(SBlo)l(ck)p
-FA(.)g(Finally)-7 b(,)31 b Ft(SBlo)l(ck)p FA(s)h(con)n(tain)e(digital)h
-(signature)f(of)523 747 y(the)e(other)f(con)n(ten)n(ts.)f(This)i(allo)n
-(ws)e(in)n(termediaries)g(to)h(v)n(erify)g(that)g(a)g(giv)n(en)g
-Ft(SBlo)l(ck)h FA(w)n(as)523 847 y(created)f(b)n(y)g(the)h(o)n(wner)f
-(of)g(the)h(namespace.)648 946 y(Since)k Ft(SBlo)l(ck)p
-FA(s)i(are)d(signed,)h(it)h(is)g(p)r(ossible)f(to)h(allo)n(w)e(up)r
-(dates.)i(Without)g(a)f(digital)523 1046 y(signature,)26
-b(a)h(secure)f(up)r(date)i(mec)n(hanism)e(is)h(imp)r(ossible,)g(since)g
-(an)n(y)n(one)f(could)h(publish)523 1146 y(a)j(p)r(oten)n(tially)g
-(illegitimate)g(up)r(date.)g(If)h(the)f(up)r(date)h(requires)e(a)h
-(matc)n(hing)f(digital)h(sig-)523 1245 y(nature,)35 b(forged)f(up)r
-(dates)h(are)g(imp)r(ossible.)g(In)g(order)f(to)h(allo)n(w)f(con)n(ten)
-n(t)h(up)r(dates,)h(the)523 1345 y(metadata)e(of)h(an)f
-Ft(SBlo)l(ck)i FA(can)e(con)n(tain)g(information)g(ab)r(out)h(when)g
-(and)f(under)h(whic)n(h)523 1445 y(iden)n(ti\014ers)c(up)r(dates)g(ma)n
-(y)g(b)r(e)g(published.)h(If)f(suc)n(h)g(forw)n(ard)e(p)r(oin)n(ters)i
-(are)f(presen)n(t,)h(the)523 1544 y(o)n(wner)f(of)g(the)i(namespace)e
-(can)g(decide)h(to)g(publish)g(up)r(dates)g(to)g(a)f(particular)g
-(\014le)h(at)f(a)523 1644 y(later)35 b(time.)g(Since)h(the)g(priv)-5
-b(ate)35 b(k)n(ey)f(used)h(for)g(signing)g(is)g(o)n(wned)f(b)n(y)h(a)g
-(single)g(en)n(tit)n(y)-7 b(,)523 1743 y(consistency)33
-b(issues)h(from)g(parallel)f(up)r(dates)h(do)g(not)h(arise.)e(ECRS)h
-(do)r(es)g(not)g(prev)n(en)n(t)523 1843 y(the)28 b(o)n(wner)e(of)i(the)
-g(namespace)f(from)g(publishing)g(con\015icting)h(up)r(dates.)648
-1943 y(It)22 b(should)h(b)r(e)g(recognized)e(that)i(the)g(same)f
-(\014le)g(can)h(b)r(e)g(part)f(of)g(m)n(ultiple)h(namespaces)523
-2042 y(under)k(m)n(ultiple)h(iden)n(ti\014ers)f(without)h(the)g(need)f
-(for)g(storing)f(the)i(\014le)f(m)n(ultiple)h(times)g(in)523
-2142 y(the)37 b(net)n(w)n(ork.)e(The)i Ft(IBlo)l(cks)h
-FA(and)e Ft(DBlo)l(cks)i FA(of)e(the)h(\014le)g(do)f(not)h(need)g(to)f
-(b)r(e)h(c)n(hanged)523 2242 y(when)28 b(the)g(namespace)e(or)h
-(namespace)g(iden)n(ti\014er)g(c)n(hanges.)648 2341 y(Namespaces)f
-(cannot)h(completely)h(solv)n(e)e(the)i(searc)n(h)f(problem.)g(Most)g
-(imp)r(ortan)n(tly)-7 b(,)523 2441 y(users)33 b(w)n(ould)g(still)h(ha)n
-(v)n(e)f(to)h(\014nd)g(the)g(namespaces)f(themselv)n(es,)g(and)h(while)
-g(it)g(can)g(b)r(e)523 2540 y(assumed)g(that)h(users)e(can)h(guess)g(k)
-n(eyw)n(ords,)e(they)j(are)e(unlik)n(ely)h(to)h(b)r(e)f(able)h(to)f
-(guess)523 2640 y(public)h(k)n(eys)f(for)h(a)f(namespace)g(searc)n(h.)g
-(ECRS)g(alleviates)g(this)h(problem)g(b)n(y)g(also)e(of-)523
-2740 y(fering)i(a)g(pure)g(k)n(eyw)n(ord-based)d(searc)n(h)i(in)h(a)g
-Ft(glob)l(al)i FA(k)n(eyw)n(ord)c(space)i(where)f(an)n(y)h(user)523
-2839 y(can)g(adv)n(ertise)g(con)n(ten)n(t.)g(Here,)g(the)h(disadv)-5
-b(an)n(tage)34 b(is)i(clearly)f(that)h(it)g(is)f(p)r(ossible)h(for)523
-2939 y(malicious)h(users)g(to)h(p)r(ollute)g(the)g(global)f(k)n(eyw)n
-(ord)f(space)h(with)h(adv)n(ertisemen)n(ts)e(and)523
-3039 y(other)24 b(inappropriate)g(data.)g(Ho)n(w)n(ev)n(er,)f(it)i(is)g
-(assumed)g(that)g(in)g(that)g(case)f(users)g(will)h(use)523
-3138 y(k)n(eyw)n(ords)j(that)j(are)e(more)h(di\016cult)h(to)f(guess)f
-(or)h(only)f(use)i(the)f(global)f(k)n(eyw)n(ord)g(space)523
-3238 y(to)f(disco)n(v)n(er)d(trust)n(w)n(orth)n(y)h(namespaces,)g(th)n
-(us)i(a)n(v)n(oiding)e(spam)h(most)h(of)f(the)h(time.)523
-3392 y
-SDict begin H.S end
- 523 3392 a 523 3392 a
-SDict begin 12 H.A end
- 523 3392 a 523 3392 a
-SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.3.6) cvn H.B /DEST
-pdfmark end
- 523
-3392 a 83 x Fr(3.6)95 b(Keyw)m(ord)32 b(searc)m(h)523
-3629 y FA(This)41 b(section)g(describ)r(es)g(ho)n(w)g(information)g(ab)
-r(out)g(namespaces)f(or)h(the)h(CHK)f(k)n(eys)523 3729
-y(that)30 b(are)f(necessary)e(to)j(retriev)n(e)e(a)h(\014le)h(can)f(b)r
-(e)h(obtained)f(b)n(y)h(searc)n(hing)e(using)h(natural)523
-3828 y(language)20 b Ft(keywor)l(ds)i FA({)f(without)h(rev)n(ealing)d
-(the)j(k)n(eyw)n(ords)d(to)i(in)n(termediaries.)f(Searc)n(hing)523
-3928 y(requires)31 b(the)i(con)n(ten)n(t)f(pro)n(vider)f(to)i(supply)f
-(metadata)g(ab)r(out)h(the)g(\014le;)f(in)h(particular,)523
-4028 y(the)40 b(con)n(ten)n(t)g(pro)n(vider)e(m)n(ust)i(supply)g(a)g
-(list)g(of)g(k)n(eyw)n(ords.)e(While)i(the)h(metadata)e(is)523
-4127 y(published)22 b(as)f(part)f(of)i(the)f Ft(KBlo)l(ck)i
-FA(and)e(made)g(a)n(v)-5 b(ailable)20 b(to)i(the)f(recipien)n(t)g(the)h
-(k)n(eyw)n(ords)523 4227 y(are)34 b(only)h(used)h(to)f(compute)g(the)h
-Ft(KBlo)l(ck)p FA(s)g(and)f(not)h(made)f(a)n(v)-5 b(ailable)34
-b(to)h(other)g(users)523 4327 y(directly)-7 b(.)30 b(It)g(is)g(assumed)
-f(that)h(the)h(user)e(searc)n(hing)f(for)h(data)h(is)g(able)f(to)h
-Ft(guess)g FA(at)f(least)523 4426 y(one)f(of)g(these)h(k)n(eyw)n(ords.)
-d(The)j(nature)f(of)g(the)h(searc)n(h)e(implies)i(that)f(there)h(is)f
-(no)g(direct,)523 4526 y(cryptographically)19 b(v)n(eri\014able)h
-(relation)g(b)r(et)n(w)n(een)h(the)h(k)n(eyw)n(ord)d(and)i(the)h(con)n
-(ten)n(t.)f(Man)n(y)523 4625 y(\014les)26 b(can)f(matc)n(h)h(a)f(giv)n
-(en)g(k)n(eyw)n(ord.)f(Di\013eren)n(t)i(users)f(ma)n(y)g(sometimes)h
-(ha)n(v)n(e)e(a)i(di\013eren)n(t)523 4725 y(p)r(erception)i(of)f(what)h
-(is)g(a)f(correct)g(seman)n(tic)g(matc)n(h.)h(Th)n(us,)f(a)h(k)n(eyw)n
-(ord)e(searc)n(h)g(alw)n(a)n(ys)523 4825 y(has)20 b(the)h(p)r(oten)n
-(tial)f(of)h(resulting)f(in)g(searc)n(h)f(results)h(that)h(a)f(user)g
-(ma)n(y)g(\014nd)g(inappropriate.)523 4924 y(It)31 b(is)g(also)f(not)h
-(p)r(ossible)f(to)h(prev)n(en)n(t)f(a)g(user)h(from)f(supplying)h(k)n
-(eyw)n(ords)d(that)k(ha)n(v)n(e)d(no)p Black Black eop
-end
-%%Page: 13 13
-TeXDict begin 13 12 bop 0 0 a
-SDict begin /product where{pop product(Distiller)search{pop pop pop
-version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
-closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
-grestore}if}{pop}ifelse}{pop}ifelse}if end
- 0 0 a Black 0 TeXcolorgray
-523 232 a
-SDict begin H.S end
- 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
-232 a
-SDict begin H.R end
- 523 232 a 523 232 a
-SDict begin [ /View [/XYZ H.V] /Dest (page.13) cvn H.B /DEST pdfmark
-end
- 523 232 a Black 1036 w Fx(An)25
+ 523 232 a Black 1036 w Fu(An)25
 b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)199
-b(13)p Black Black 548 473 a Fp(H)6 b Fx(\()p Fp(K)f
-Fx(\))1068 425 y Fg(\(as)28 b(random)i(seed\))1754 454
-y Fo(/)p Fn(/)p 772 456 982 4 v 918 738 a Fg(\(as)e(key\))1093
-1016 y Fo(\034)p Fn(\034)1067 984 y Fl(8)1043 952 y(8)1018
+b(11)p Black Black 548 473 a Fm(H)6 b Fu(\()p Fm(K)f
+Fu(\))1068 425 y Fd(\(as)28 b(random)i(seed\))1754 454
+y Fl(/)p Fk(/)p 772 456 982 4 v 918 738 a Fd(\(as)e(key\))1093
+1016 y Fl(\034)p Fk(\034)1067 984 y Fi(8)1043 952 y(8)1018
 921 y(8)993 890 y(8)969 859 y(8)944 828 y(8)919 797 y(8)895
 765 y(8)870 734 y(8)845 703 y(8)821 672 y(8)796 641 y(8)771
 610 y(8)747 578 y(8)722 547 y(8)697 516 y(8)p 1753 397
 2 2 v 1755 398 315 4 v 2070 397 2 2 v 1752 512 4 114
 v 2071 512 V 1753 515 2 2 v 1755 516 315 4 v 2070 515
-2 2 v 1779 472 a Fp(K)5 b(ey)s(g)s(en)1937 769 y Fk(P)j(r)r(v)2046
-783 y Fh(H)s Ff(\()p Fh(K)s Ff(\))1913 1016 y Fo(\017)p
-Fn(\017)p 1911 1016 4 505 v 2206 561 a Fk(P)g(ub)2317
-575 y Fh(H)s Ff(\()p Fh(K)s Ff(\))2520 720 y Fo(\()p
-Fn(\()2482 704 y Fl(Q)2445 688 y(Q)2409 672 y(Q)2372
+2 2 v 1779 472 a Fm(K)5 b(ey)s(g)s(en)1937 769 y Fh(P)j(r)r(v)2046
+783 y Fe(H)s Fc(\()p Fe(K)s Fc(\))1913 1016 y Fl(\017)p
+Fk(\017)p 1911 1016 4 505 v 2206 561 a Fh(P)g(ub)2317
+575 y Fe(H)s Fc(\()p Fe(K)s Fc(\))2520 720 y Fl(\()p
+Fk(\()2482 704 y Fi(Q)2445 688 y(Q)2409 672 y(Q)2372
 656 y(Q)2336 640 y(Q)2299 624 y(Q)2263 608 y(Q)2226 592
 y(Q)2190 576 y(Q)2153 560 y(Q)2117 544 y(Q)2080 528 y(Q)2044
 512 y(Q)p 2519 717 2 2 v 2521 718 206 4 v 2727 717 2
 2 v 2518 817 4 100 v 2729 817 V 2519 820 2 2 v 2521 821
-206 4 v 2727 820 2 2 v 2545 792 a Fp(J)f(oin)2928 766
-y Fo(+)p Fn(3)p 2729 760 179 4 v 2729 776 V 2953 792
-a Fp(K)e(B)t(l)q(ock)573 1100 y(data)972 1074 y Fo(/)p
-Fn(/)p 747 1076 225 4 v 971 1017 2 2 v 972 1018 331 4
+206 4 v 2727 820 2 2 v 2545 792 a Fm(J)f(oin)2928 766
+y Fl(+)p Fk(3)p 2729 760 179 4 v 2729 776 V 2953 792
+a Fm(K)e(B)t(l)q(ock)573 1100 y(data)972 1074 y Fl(/)p
+Fk(/)p 747 1076 225 4 v 971 1017 2 2 v 972 1018 331 4
 v 1303 1017 2 2 v 970 1132 4 114 v 1305 1132 V 971 1135
-2 2 v 972 1136 331 4 v 1303 1135 2 2 v 997 1092 a Fp(E)t(ncr)r(y)s(pt)
-1343 1136 y Fk(E)1388 1150 y Fh(H)s Ff(\()p Fh(K)s Ff(\))1537
-1136 y Fy(\()p Fk(data)p Fy(\))1806 1074 y Fo(/)p Fn(/)p
+2 2 v 972 1136 331 4 v 1303 1135 2 2 v 997 1092 a Fm(E)t(ncr)r(y)s(pt)
+1343 1136 y Fh(E)1388 1150 y Fe(H)s Fc(\()p Fe(K)s Fc(\))1537
+1136 y Fv(\()p Fh(data)p Fv(\))1806 1074 y Fl(/)p Fk(/)p
 1305 1076 501 4 v 1805 1017 2 2 v 1807 1018 210 4 v 2017
 1017 2 2 v 1804 1132 4 114 v 2019 1132 V 1805 1135 2
-2 v 1807 1136 210 4 v 2017 1135 2 2 v 1831 1092 a Fp(S)t(ig)s(n)2520
-811 y Fo(6)p Fn(6)2482 828 y Fl(m)2446 843 y(m)2410 859
+2 v 1807 1136 210 4 v 2017 1135 2 2 v 1831 1092 a Fm(S)t(ig)s(n)2520
+811 y Fl(6)p Fk(6)2482 828 y Fi(m)2446 843 y(m)2410 859
 y(m)2375 874 y(m)2339 889 y(m)2304 905 y(m)2268 920 y(m)2233
 936 y(m)2197 951 y(m)2161 966 y(m)2126 982 y(m)2090 997
-y(m)2055 1013 y(m)2019 1028 y(m)2280 991 y Fx([)p Fp(E)2358
-1003 y Fk(H)t Fy(\()p Fk(K)s Fy(\))2518 991 y Fx(\()p
-Fp(data)p Fx(\)])2749 999 y Fk(P)j(r)r(v)2858 1013 y
-Fh(H)s Ff(\()p Fh(K)s Ff(\))523 1339 y Fr(Fig.)15 b(2.)p
+y(m)2055 1013 y(m)2019 1028 y(m)2280 991 y Fu([)p Fm(E)2358
+1003 y Fh(H)t Fv(\()p Fh(K)s Fv(\))2518 991 y Fu(\()p
+Fm(data)p Fu(\)])2749 999 y Fh(P)j(r)r(v)2858 1013 y
+Fe(H)s Fc(\()p Fe(K)s Fc(\))523 1339 y Fo(Fig.)15 b(2.)p
 0 TeXcolorgray 799 1240 a
 SDict begin H.S end
  799 1240 a 0 TeXcolorgray 0
@@ -7852,301 +6975,177 @@
 SDict begin [ /View [/XYZ H.V] /Dest (figure.1.2) cvn H.B /DEST pdfmark
 end
  799 1240
-a Black 99 x FA(The)25 b(construction)f(of)g(a)h Ft(KBlo)l(ck)p
-FA(.)h(The)e(hash)h Fs(H)7 b FA(\()p Fs(K)f FA(\))24
-b(of)h(the)g(k)n(eyw)n(ord)e Fs(K)30 b FA(is)25 b(used)523
+a Black 99 x Fx(The)25 b(construction)f(of)g(a)h Fq(KBlo)l(ck)p
+Fx(.)h(The)e(hash)h Fp(H)7 b Fx(\()p Fp(K)f Fx(\))24
+b(of)h(the)g(k)n(eyw)n(ord)e Fp(K)30 b Fx(is)25 b(used)523
 1439 y(to)36 b(encrypt)f(the)h(data)f(and)g(to)h(seed)f(the)h(k)n(ey)f
 (generator.)e(The)j(obtained)f(priv)-5 b(ate)36 b(k)n(ey)523
-1538 y Fs(P)12 b(r)r(v)667 1553 y Fi(H)t Fz(\()p Fi(K)t
-Fz(\))867 1538 y FA(signs)24 b(the)h(encrypted)f(data,)g(but)h(is)f
+1538 y Fp(P)12 b(r)r(v)667 1553 y Ff(H)t Fw(\()p Ff(K)t
+Fw(\))867 1538 y Fx(signs)24 b(the)h(encrypted)f(data,)g(but)h(is)f
 (not)g(otherwise)g(used.)g(Finally)-7 b(,)25 b(the)g(public)523
-1638 y(k)n(ey)i Fs(P)12 b(ub)822 1653 y Fi(H)t Fz(\()p
-Fi(K)t Fz(\))1023 1638 y FA(is)28 b(app)r(ended)g(to)f(the)h(signed)f
-(data)g(to)h(form)f(the)h Ft(KBlo)l(ck)p FA(.)p Black
-Black Black 523 2159 a(seman)n(tic)33 b(relation)f(with)h(the)h(con)n
-(ten)n(t)e(and)h(thereb)n(y)f(increasing)g(the)h(c)n(hance)g(of)g
-(other)523 2259 y(users)27 b(\014nding)g(undesirable)g(results)g(for)g
-(those)h(k)n(eyw)n(ords.)648 2396 y(Despite)38 b(these)g(fundamen)n
-(tal)h(dra)n(wbac)n(ks,)c(ECRS)j(should)g(\(and)g(can\))g(giv)n(e)g
-(some)523 2496 y(un)n(usual)e Ft(guar)l(ante)l(es)f FA(for)h(k)n(eyw)n
-(ord-based)d(searc)n(hes.)h(First,)i(the)g(k)n(eyw)n(ord)e(used)i(for)f
-(a)523 2595 y(searc)n(h)28 b(is)h(not)g(exp)r(osed)f(to)h(in)n
-(termediaries)f(in)i(a)e(w)n(a)n(y)g(that)i(w)n(ould)e(allo)n(w)g(them)
-i(to)f(eas-)523 2695 y(ily)g(exercise)g(editorial)f(con)n(trol)g
-(\(i.e.)i(to)f(censor)f(queries\).)h(Note)g(again)g(that)g(a)g
-(guessing)523 2795 y(attac)n(k)35 b(in)h(whic)n(h)g(the)h(in)n
-(termediary)d(guesses)h(a)h(k)n(eyw)n(ord,)e(computes)h(the)i(resp)r
-(ectiv)n(e)523 2894 y(query)d(hash,)h(and)g(attempts)h(to)f(matc)n(h)g
-(the)g(query)g(hash)f(to)h(the)h(incoming)f(query)-7
-b(,)34 b(is)523 2994 y(considered)c(acceptable;)g(plausible)h
-(deniabilit)n(y)g(for)f(the)h(in)n(termediaries)f(is)h(una\013ected)523
-3094 y(b)n(y)c(this)g(attac)n(k.)f(Secondly)-7 b(,)26
-b(only)h(p)r(eers)f(that)h(ha)n(v)n(e)f(con)n(ten)n(t)g(a)n(v)-5
-b(ailable)26 b(under)h(the)g(giv)n(en)523 3193 y(k)n(eyw)n(ord)32
-b(should)h(b)r(e)h(able)g(to)f(pro)r(duce)h(a)f(v)-5
-b(alid)34 b(resp)r(onse.)e(In)i(other)f(w)n(ords,)g(the)h(ulti-)523
-3293 y(mate)24 b(resp)r(onder)e(m)n(ust)i(ha)n(v)n(e)e(succeeded)h(in)h
-(guessing)f(the)h(k)n(eyw)n(ord.)d(This)j(is)f(imp)r(ortan)n(t)523
-3392 y(since)f(it)g(prev)n(en)n(ts)f(p)r(eers)g(from)h(making)f(up)i
-(replies)e(for)g(arbitrary)f(requests)h(on-the-\015y)-7
-b(.)22 b(If)523 3492 y(p)r(eers)e(w)n(ere)g(able)h(to)g(resp)r(ond)f
-(to)h(an)n(y)f(k)n(eyw)n(ord)f(query)h(without)h(ha)n(ving)f(to)h(at)f
-(least)h(guess)523 3592 y(the)33 b(k)n(eyw)n(ord,)f(they)h(could)f(use)
-h(this)h(to)e(spam)h(ev)n(ery)f(p)r(ossible)g(searc)n(h,)g(rendering)g
-(the)523 3691 y(k)n(eyw)n(ord)e(searc)n(h)g(mostly)i(useless.)f(F)-7
-b(orcing)31 b(resp)r(onders)f(to)i(guess)f(k)n(eyw)n(ords)f(do)r(es)h
-(not)523 3791 y(eliminate)c(the)g(problem)f(completely;)h(ho)n(w)n(ev)n
-(er,)d(it)j(do)r(es)g(limit)g(the)g(attac)n(k)f(to)h(the)g(com-)523
-3891 y(mon,)33 b(easily-guessed)d(k)n(eyw)n(ords.)g(Finally)-7
-b(,)33 b(the)g(v)n(eri\014cation)e(that)i(a)f(resp)r(onse)g(is)g(v)-5
-b(alid)523 3990 y(should)27 b(b)r(e)h(p)r(ossible)g(not)f(only)g(for)h
-(the)f(\014nal)h(recipien)n(t,)f(but)h(also)f(for)g(in)n(termediaries.)
-648 4127 y(ECRS)43 b(ac)n(hiev)n(es)g(all)h(of)g(this)g(with)h(a)f
-Ft(new)h(crypto)l(gr)l(aphic)i(primitive)f FA(called)e
-Fs(K)6 b Ft(-)523 4227 y(deterministic)40 b(keys)f FA(whic)n(h)f(is)g
-(a)g(k)n(ey)f(pair)g(\()p Fs(P)12 b(ub)2167 4242 y Fi(H)t
-Fz(\()p Fi(K)t Fz(\))2341 4227 y Fs(;)i(P)e(r)r(v)2522
-4242 y Fi(H)t Fz(\()p Fi(K)t Fz(\))2698 4227 y FA(\))38
-b(generated)f(from)g(a)523 4327 y(k)n(eyw)n(ord)32 b
-Fs(K)6 b FA(.)34 b(The)g(hash)f Fs(H)7 b FA(\()p Fs(K)f
-FA(\))34 b(of)g(the)g(k)n(eyw)n(ord)e(is)i(used)g(as)f(the)i(seed)e
-(and)h(the)g(only)523 4426 y(input)26 b(to)e(the)h(pseudo-random)e(n)n
-(um)n(b)r(er)i(generator)d(that)j(generates)e(the)i(public-priv)-5
-b(ate)523 4526 y(k)n(ey)23 b(pair.)f(The)i(authors)e(are)g(not)i(a)n(w)
-n(are)d(of)i(an)n(y)g(previous)f(use)h(of)g Fs(K)6 b
-FA(-deterministic)23 b(k)n(eys.)523 4625 y(Giv)n(en)g(suc)n(h)g(a)g(k)n
-(ey)f(pair,)h(the)g(inserting)g(p)r(eer)g(generates)e
-Ft(KBlo)l(ck)p FA(s)k(b)n(y)d(signing)h(the)g(meta-)523
-4725 y(data)30 b(necessary)g(to)h(do)n(wnload)e(the)i(\014le)h(with)f
-Fs(P)12 b(r)r(v)2186 4740 y Fi(H)t Fz(\()p Fi(K)t Fz(\))2362
-4725 y FA(.)31 b Ft(KBlo)l(ck)p FA(s)h(are)d(essen)n(tially)h(lik)n(e)
-523 4825 y Ft(SBlo)l(ck)p FA(s)k(with)g(the)g(di\013erence)f(that)h
-(the)f Fs(K)6 b FA(-determinate)33 b(k)n(ey)g(is)g(used)g(instead)g(of)
-h(the)523 4924 y(pseudon)n(ym.)27 b(The)h(construction)f(of)g(a)g
-Ft(KBlo)l(ck)i FA(is)e(sho)n(wn)g(in)h(Figure)p 1 0 0
-TeXcolorrgb 2770 4924 a
+1638 y(k)n(ey)i Fp(P)12 b(ub)822 1653 y Ff(H)t Fw(\()p
+Ff(K)t Fw(\))1023 1638 y Fx(is)28 b(app)r(ended)g(to)f(the)h(signed)f
+(data)g(to)h(form)f(the)h Fq(KBlo)l(ck)p Fx(.)p Black
+Black Black Black 523 1942 2882 4 v 523 2013 a
 SDict begin H.S end
- 2770 4924 a 1 0 0 TeXcolorrgb
-FA(2)p 1 0 0 TeXcolorrgb 2812 4871 a
-SDict begin H.R end
- 2812 4871 a 2812
-4924 a
-SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(figure.1.2) cvn H.B /ANN pdfmark end
- 2812 4924 a Black FA(.)p Black Black eop end
-%%Page: 14 14
-TeXDict begin 14 13 bop 0 0 a
-SDict begin /product where{pop product(Distiller)search{pop pop pop
-version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
-closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
-grestore}if}{pop}ifelse}{pop}ifelse}if end
- 0 0 a Black 0 TeXcolorgray
-523 232 a
-SDict begin H.S end
- 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
-232 a
-SDict begin H.R end
- 523 232 a 523 232 a
-SDict begin [ /View [/XYZ H.V] /Dest (page.14) cvn H.B /DEST pdfmark
-end
- 523 232 a Black Fx(14)199 b(C.)27
-b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
-Black Black 523 369 2882 4 v 523 439 a
-SDict begin H.S end
- 523 439 a 523
-439 a
+ 523 2013
+a 523 2013 a
 SDict begin 11 H.A end
- 523 439 a 523 439 a
+ 523 2013 a 523 2013 a
 SDict begin [ /View [/XYZ H.V] /Dest (Item.1) cvn H.B /DEST pdfmark
 end
- 523 439 a Black 563 496 a Fx(1.)p
-Black 42 w(Input:)e(Con)n(ten)n(t)g Fp(C)5 b Fx(,)26
-b(a)g(list)h(of)f(k)n(eyw)n(ords)f Fe(f)p Fp(K)2014 504
-y Fy(1)2049 496 y Fp(;)14 b(:::)p Fe(g)27 b Fx(and)e(metadata)h
-Fp(D)r Fx(.)523 514 y
+ 523 2013 a Black 563
+2069 a Fu(1.)p Black 42 w(Input:)d(Con)n(ten)n(t)g Fm(C)5
+b Fu(,)26 b(a)g(list)h(of)f(k)n(eyw)n(ords)f Fb(f)p Fm(K)2014
+2077 y Fv(1)2049 2069 y Fm(;)14 b(:::)p Fb(g)27 b Fu(and)e(metadata)h
+Fm(D)r Fu(.)523 2088 y
 SDict begin H.S end
- 523 514 a 523 514 a
+ 523 2088 a 523 2088 a
 SDict begin 11 H.A end
- 523 514 a 523
-514 a
+ 523 2088
+a 523 2088 a
 SDict begin [ /View [/XYZ H.V] /Dest (Item.2) cvn H.B /DEST pdfmark
 end
- 523 514 a Black 563 587 a Fx(2.)p Black 42 w(Split)g(con)n(ten)n
-(t)f Fp(C)30 b Fx(in)n(to)c(blo)r(c)n(ks)g Fp(B)1653
-595 y Fk(i)1680 587 y Fx(,)f(eac)n(h)h(of)h(size)f(32Kb.)g(Call)i
-(these)d Fq(DBlo)l(cks)p Fx(.)523 602 y
+ 523 2088 a Black 563 2160 a Fu(2.)p Black
+42 w(Split)g(con)n(ten)n(t)f Fm(C)30 b Fu(in)n(to)c(blo)r(c)n(ks)g
+Fm(B)1653 2168 y Fh(i)1680 2160 y Fu(,)f(eac)n(h)h(of)h(size)f(32Kb.)g
+(Call)i(these)d Fn(DBlo)l(cks)p Fu(.)523 2175 y
 SDict begin H.S end
- 523 602 a 523
-602 a
+ 523 2175
+a 523 2175 a
 SDict begin 11 H.A end
- 523 602 a 523 602 a
+ 523 2175 a 523 2175 a
 SDict begin [ /View [/XYZ H.V] /Dest (Item.3) cvn H.B /DEST pdfmark
 end
- 523 602 a Black 563 678 a Fx(3.)p
-Black 42 w(Compute)f(hash)f(v)l(alues)h Fp(H)1469 643
-y Fk(k)q(ey)1463 698 y(i)1590 678 y Fx(=)d Fp(H)6 b Fx(\()p
-Fp(B)1829 686 y Fk(i)1855 678 y Fx(\),)23 b Fp(E)1986
-686 y Fk(i)2034 678 y Fx(=)e Fp(E)2172 686 y Fk(H)2222
-698 y Fh(k)q(ey)2321 678 y Fx(\()p Fp(B)2409 686 y Fk(i)2436
-678 y Fx(\))i(and)g Fp(H)2706 643 y Fk(q)r(uer)r(y)2700
-698 y(i)2891 678 y Fx(=)e Fp(H)6 b Fx(\()p Fp(E)3129
-686 y Fk(i)3154 678 y Fx(\).)24 b(F)-6 b(orm)664 785
-y Fq(CHK)835 793 y Fk(i)887 785 y Fx(from)26 b(\()p Fp(H)1168
-749 y Fk(q)r(uer)r(y)1162 804 y(i)1332 785 y Fp(;)13
-b(H)1436 749 y Fk(k)q(ey)1430 804 y(i)1536 785 y Fx(\).)26
+ 523 2175 a Black 563
+2252 a Fu(3.)p Black 42 w(Compute)f(hash)f(v)l(alues)h
+Fm(H)1469 2216 y Fh(k)q(ey)1463 2272 y(i)1590 2252 y
+Fu(=)d Fm(H)6 b Fu(\()p Fm(B)1829 2260 y Fh(i)1855 2252
+y Fu(\),)23 b Fm(E)1986 2260 y Fh(i)2034 2252 y Fu(=)e
+Fm(E)2172 2260 y Fh(H)2222 2272 y Fe(k)q(ey)2321 2252
+y Fu(\()p Fm(B)2409 2260 y Fh(i)2436 2252 y Fu(\))i(and)g
+Fm(H)2706 2216 y Fh(q)r(uer)r(y)2700 2272 y(i)2891 2252
+y Fu(=)e Fm(H)6 b Fu(\()p Fm(E)3129 2260 y Fh(i)3154
+2252 y Fu(\).)24 b(F)-6 b(orm)664 2358 y Fn(CHK)835 2366
+y Fh(i)887 2358 y Fu(from)26 b(\()p Fm(H)1168 2323 y
+Fh(q)r(uer)r(y)1162 2378 y(i)1332 2358 y Fm(;)13 b(H)1436
+2323 y Fh(k)q(ey)1430 2378 y(i)1536 2358 y Fu(\).)26
 b(P)n(ad)g(con)n(ten)n(t)f(\(with)h(zeros\))g(if)h(needed.)523
-804 y
+2378 y
 SDict begin H.S end
- 523 804 a 523 804 a
+ 523 2378 a 523 2378 a
 SDict begin 11 H.A end
- 523 804 a 523 804 a
+ 523 2378 a 523 2378 a
 SDict begin [ /View [/XYZ H.V] /Dest (Item.4) cvn H.B /DEST pdfmark
 end
- 523 804
-a Black 563 876 a Fx(4.)p Black 42 w(Store)f Fp(E)922
-884 y Fk(i)973 876 y Fx(under)f(the)g(name)h Fp(H)1598
-840 y Fk(q)r(uer)r(y)1592 896 y(i)1762 876 y Fx(.)523
-896 y
+ 523
+2378 a Black 563 2449 a Fu(4.)p Black 42 w(Store)f Fm(E)922
+2457 y Fh(i)973 2449 y Fu(under)f(the)g(name)h Fm(H)1598
+2414 y Fh(q)r(uer)r(y)1592 2469 y(i)1762 2449 y Fu(.)523
+2469 y
 SDict begin H.S end
- 523 896 a 523 896 a
+ 523 2469 a 523 2469 a
 SDict begin 11 H.A end
- 523 896 a 523 896 a
+ 523 2469 a 523 2469 a
 SDict begin [ /View [/XYZ H.V] /Dest (Item.5) cvn H.B /DEST pdfmark
 end
- 523 896
-a Black 563 967 a Fx(5.)p Black 42 w(If)g(there)f(is)g(more)h(than)f
-(one)g(blo)r(c)n(k,)h(group)f(the)g(blo)r(c)n(ks)g(in)n(to)h(disjoin)n
-(t)g(sets)g Fp(I)2942 975 y Fk(j)2999 967 y Fx(of)g(up)e(to)i(256)664
-1059 y(mem)n(b)r(ers.)e(F)-6 b(or)23 b(eac)n(h)h Fp(I)1348
-1067 y Fk(j)1380 1059 y Fx(,)f(create)h Fq(Iblo)l(ck)1838
-1067 y Fk(j)1894 1059 y Fx(con)n(taining)g(the)f Fq(CHK)p
-Fx(s)g(of)h(the)f(blo)r(c)n(ks)g(in)g Fp(I)3185 1067
-y Fk(j)3218 1059 y Fx(.)g(Add)664 1150 y(zero)k(padding)e(if)h(needed.)
-g(Pro)r(cess)h(eac)n(h)f(new)g(32Kb)f(blo)r(c)n(k)h(obtained)g(as)g(in)
-g(step)p 1 0 0 TeXcolorrgb 3146 1150 a
+ 523
+2469 a Black 563 2541 a Fu(5.)p Black 42 w(If)g(there)f(is)g(more)h
+(than)f(one)g(blo)r(c)n(k,)h(group)f(the)g(blo)r(c)n(ks)g(in)n(to)h
+(disjoin)n(t)g(sets)g Fm(I)2942 2549 y Fh(j)2999 2541
+y Fu(of)g(up)e(to)i(256)664 2632 y(mem)n(b)r(ers.)e(F)-6
+b(or)23 b(eac)n(h)h Fm(I)1348 2640 y Fh(j)1380 2632 y
+Fu(,)f(create)h Fn(Iblo)l(ck)1838 2640 y Fh(j)1894 2632
+y Fu(con)n(taining)g(the)f Fn(CHK)p Fu(s)g(of)h(the)f(blo)r(c)n(ks)g
+(in)g Fm(I)3185 2640 y Fh(j)3218 2632 y Fu(.)g(Add)664
+2723 y(zero)k(padding)e(if)h(needed.)g(Pro)r(cess)h(eac)n(h)f(new)g
+(32Kb)f(blo)r(c)n(k)h(obtained)g(as)g(in)g(step)p 1 0 0
+TeXcolorrgb 3146 2723 a
 SDict begin H.S end
- 3146 1150 a 1 0 0
-TeXcolorrgb Fx(3)p 1 0 0 TeXcolorrgb 3185 1102 a
+ 3146 2723 a 1 0 0 TeXcolorrgb
+Fu(3)p 1 0 0 TeXcolorrgb 3185 2675 a
 SDict begin H.R end
- 3185
-1102 a 3185 1150 a
+ 3185 2675 a 3185
+2723 a
 SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (Item.3) cvn H.B /ANN pdfmark end
- 3185 1150 a Black Fx(.)523 1165 y
+ 3185 2723 a Black Fu(.)523 2738 y
 SDict begin H.S end
-
-523 1165 a 523 1165 a
+ 523 2738 a 523
+2738 a
 SDict begin 11 H.A end
- 523 1165 a 523 1165 a
+ 523 2738 a 523 2738 a
 SDict begin [ /View [/XYZ H.V] /Dest (Item.6) cvn H.B /DEST pdfmark
 end
- 523 1165
-a Black 563 1241 a Fx(6.)p Black 42 w(If)20 b(the)g(size)h(of)g
-Fp(C)k Fx(w)n(as)c(smaller)g(than)f(32Kb)g(\(and)f(th)n(us)h(there)f
-(is)i(only)f(one)g(pair)g(of)h(hashco)r(des)664 1332
-y Fq(CHK)835 1340 y Fy(0)870 1332 y Fx(\),)k(create)h
-Fq(SBlo)l(ck)p Fx(s)f(and)g Fq(KBlo)l(ck)p Fx(s)h(con)n(taining)g
-Fq(CHK)2436 1340 y Fy(0)2470 1332 y Fx(,)f(the)g(metadata)h
-Fp(D)h Fx(ab)r(out)e(the)664 1424 y(con)n(ten)n(t)i(and)g(the)g
-(original)i(length)f(of)g Fp(C)5 b Fx(.)28 b(Encrypt)f(and)g(sign)h
-(the)f(resulting)h Fq(SBlo)l(ck)p Fx(s)g(and)664 1515
-y Fq(KBlo)l(ck)p Fx(s.)p 523 1649 2882 4 v Black 1253
-1789 a Fr(Fig.)14 b(3.)p 0 TeXcolorgray 1531 1690 a
+ 523 2738 a Black 563 2815
+a Fu(6.)p Black 42 w(If)20 b(the)g(size)h(of)g Fm(C)k
+Fu(w)n(as)c(smaller)g(than)f(32Kb)g(\(and)f(th)n(us)h(there)f(is)i
+(only)f(one)g(pair)g(of)h(hashco)r(des)664 2906 y Fn(CHK)835
+2914 y Fv(0)870 2906 y Fu(\),)k(create)h Fn(SBlo)l(ck)p
+Fu(s)f(and)g Fn(KBlo)l(ck)p Fu(s)h(con)n(taining)g Fn(CHK)2436
+2914 y Fv(0)2470 2906 y Fu(,)f(the)g(metadata)h Fm(D)h
+Fu(ab)r(out)e(the)664 2997 y(con)n(ten)n(t)i(and)g(the)g(original)i
+(length)f(of)g Fm(C)5 b Fu(.)28 b(Encrypt)f(and)g(sign)h(the)f
+(resulting)h Fn(SBlo)l(ck)p Fu(s)g(and)664 3089 y Fn(KBlo)l(ck)p
+Fu(s.)p 523 3222 2882 4 v Black 1253 3363 a Fo(Fig.)14
+b(3.)p 0 TeXcolorgray 1531 3263 a
 SDict begin H.S end
- 1531
-1690 a 0 TeXcolorgray 0 TeXcolorgray 1531 1690 a
+ 1531 3263 a 0 TeXcolorgray
+0 TeXcolorgray 1531 3263 a
 SDict begin H.R end
- 1531
-1690 a 1531 1690 a
+ 1531 3263 a 1531 3263 a
 SDict begin [ /View [/XYZ H.V] /Dest (figure.1.3) cvn H.B /DEST pdfmark
 end
- 1531 1690 a Black 99 x FA(The)28 b(ECRS)f(enco)r
-(ding)h(algorithm.)p Black Black 648 2072 a(A)c(p)r(eer)h(searc)n(hing)
-d(for)i Fs(K)30 b FA(also)23 b(computes)i Fs(P)12 b(ub)2177
-2087 y Fi(H)t Fz(\()p Fi(K)t Fz(\))2375 2072 y FA(using)24
-b(the)h(same)f(deterministic)523 2172 y(k)n(ey-generation)32
-b(algorithm)g(\()p Fs(P)12 b(r)r(v)1646 2187 y Fi(H)t
-Fz(\()p Fi(K)t Fz(\))1857 2172 y FA(is)33 b(also)g(computed)i(but)g
-(not)f(used\).)g(The)g(p)r(eer)523 2272 y(then)k(uses)f
-Fs(H)7 b FA(\()p Fs(P)12 b(ub)1165 2287 y Fi(H)t Fz(\()p
-Fi(K)t Fz(\))1339 2272 y FA(\))38 b(as)f(the)h(query)f(hash.)g(In)n
-(termediaries)f(can)h(v)n(erify)g(that)h(the)523 2371
-y(resp)r(onse)30 b(is)h(v)-5 b(alid)31 b(b)n(y)f(c)n(hec)n(king)g(the)h
-Ft(KBlo)l(ck)p FA(s)h(signature)e(against)f(its)i(public)h(k)n(ey)-7
-b(,)30 b(and)523 2471 y(c)n(hec)n(king)i(that)i(the)f(public)h(k)n(ey)f
-(hashes)f(to)h(the)h(query)e(hash.)h(Y)-7 b(et)34 b(in)n(termediaries)e
-(are)523 2571 y(unable)21 b(to)h(decrypt)f(the)g(resp)r(onse)g(or)f
-(learn)h(the)g(k)n(eyw)n(ord)f Fs(K)27 b FA(that)21 b(w)n(as)g(used)g
-(to)g(generate)523 2670 y(the)28 b(public)g(k)n(ey)f(without)h
-(guessing.)648 2770 y(In)20 b(conclusion,)g(using)g Ft(KBlo)l(ck)p
-FA(s)h(it)f(is)h(p)r(ossible)f(to)g(allo)n(w)f(in)n(termediaries)g(to)h
-(v)n(erify)g(the)523 2869 y(in)n(tegrit)n(y)h(of)h(replies)f(without)i
-(learning)d(the)j(plain)n(text)e(of)h(the)h(k)n(eyw)n(ord)d(or)h(the)h
-(resp)r(onse.)523 2969 y Ft(KBlo)l(ck)p FA(s)f(require)e(a)h(k)n(eyw)n
-(ord)f(guess,)g(making)h(it)h(it)f(harder)f(to)i(reply)e(to)i
-(arbitrary)d(queries)523 3069 y(with)36 b(random)f(data;)g(they)h
-(cannot)f(prev)n(en)n(t)g(users)f(from)i(inserting)f(suc)n(h)g(data)g
-(under)523 3168 y(p)r(opular)f(k)n(eyw)n(ords.)f(The)h(receiv)n(er)f
-(of)i(the)g Ft(KBlo)l(ck)h FA(can)e(retriev)n(e)f(the)i(rest)f(of)h
-(the)g(\014le)523 3268 y(tree)27 b(using)h(CHK)f(queries)g(in)h(the)g
-(same)f(w)n(a)n(y)f(as)h(it)h(is)f(done)h(for)f Ft(SBlo)l(ck)p
-FA(s.)523 3428 y
+ 1531
+3263 a Black 100 x Fx(The)28 b(ECRS)f(enco)r(ding)h(algorithm.)p
+Black Black 648 3678 a(In)20 b(conclusion,)g(using)g
+Fq(KBlo)l(ck)p Fx(s)h(it)f(is)h(p)r(ossible)f(to)g(allo)n(w)f(in)n
+(termediaries)g(to)h(v)n(erify)g(the)523 3777 y(in)n(tegrit)n(y)h(of)h
+(replies)f(without)i(learning)d(the)j(plain)n(text)e(of)h(the)h(k)n
+(eyw)n(ord)d(or)h(the)h(resp)r(onse.)523 3877 y Fq(KBlo)l(ck)p
+Fx(s)f(require)e(a)h(k)n(eyw)n(ord)f(guess,)g(making)h(it)h(it)f
+(harder)f(to)i(reply)e(to)i(arbitrary)d(queries)523 3977
+y(with)36 b(random)f(data;)g(they)h(cannot)f(prev)n(en)n(t)g(users)f
+(from)i(inserting)f(suc)n(h)g(data)g(under)523 4076 y(p)r(opular)f(k)n
+(eyw)n(ords.)f(The)h(receiv)n(er)f(of)i(the)g Fq(KBlo)l(ck)h
+Fx(can)e(retriev)n(e)f(the)i(rest)f(of)h(the)g(\014le)523
+4176 y(tree)27 b(using)h(CHK)f(queries)g(in)h(the)g(same)f(w)n(a)n(y)f
+(as)h(it)h(is)f(done)h(for)f Fq(SBlo)l(ck)p Fx(s.)523
+4395 y
 SDict begin H.S end
- 523 3428 a 523 3428 a
+ 523 4395 a 523 4395 a
 SDict begin 12 H.A end
- 523 3428 a 523
-3428 a
-SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.3.7) cvn H.B /DEST
+ 523 4395 a 523 4395 a
+SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.3.5) cvn H.B /DEST
 pdfmark end
- 523 3428 a 84 x Fr(3.7)95 b(Summary)523 3673 y
-FA(The)32 b(ECRS)g(enco)r(ding)f(algorithm)g(is)h(summarized)f(in)h
-(Figure)p 1 0 0 TeXcolorrgb 2610 3673 a
+ 523
+4395 a 97 x Fo(3.5)95 b(Summary)523 4725 y Fx(The)32
+b(ECRS)g(enco)r(ding)f(algorithm)g(is)h(summarized)f(in)h(Figure)p
+1 0 0 TeXcolorrgb 2610 4725 a
 SDict begin H.S end
- 2610 3673 a 1 0 0
-TeXcolorrgb FA(3)p 1 0 0 TeXcolorrgb 2652 3619 a
+ 2610 4725 a 1 0 0 TeXcolorrgb
+Fx(3)p 1 0 0 TeXcolorrgb 2652 4672 a
 SDict begin H.R end
- 2652
-3619 a 2652 3673 a
+ 2652 4672 a 2652
+4725 a
 SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (figure.1.3) cvn H.B /ANN pdfmark end
- 2652 3673 a Black FA(.)g(Figure)p
-1 0 0 TeXcolorrgb 2973 3673 a
+ 2652 4725 a Black Fx(.)g(Figure)p 1 0 0 TeXcolorrgb
+2973 4725 a
 SDict begin H.S end
- 2973 3673 a 1 0 0 TeXcolorrgb
-FA(4)p 1 0 0 TeXcolorrgb 3015 3619 a
+ 2973 4725 a 1 0 0 TeXcolorrgb Fx(4)p 1 0 0
+TeXcolorrgb 3015 4672 a
 SDict begin H.R end
- 3015 3619 a 3015
-3673 a
+ 3015 4672 a 3015 4725 a
 SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (figure.1.4) cvn H.B /ANN pdfmark end
- 3015 3673 a Black 32 w FA(sho)n(ws)f(the)523 3772
-y(sequence)26 b(of)h(messages)e(exc)n(hanged)h(b)n(y)h(p)r(eers)f(to)h
-(do)n(wnload)e(a)i(64Kb)e(\014le)i(starting)f(with)523
-3872 y(a)h(k)n(eyw)n(ord.)523 4032 y
-SDict begin H.S end
- 523 4032 a 523 4032
-a
-SDict begin 12 H.A end
- 523 4032 a 523 4032 a
-SDict begin [ /View [/XYZ H.V] /Dest (section.1.4) cvn H.B /DEST pdfmark
-end
- 523 4032 a 100 x Fu(4)112 b(Extensions)523
-4327 y FA(The)38 b(v)-5 b(anilla)38 b(ECRS)g(enco)r(ding)f(sc)n(heme)h
-(still)g(lea)n(v)n(es)f(some)g(practical)g(problems)h(that)523
-4426 y(should)i(b)r(e)g(addressed)f(to)h(facilitate)g(real-life)f
-(usabilit)n(y)-7 b(.)40 b(F)-7 b(or)40 b(example,)f(the)i(man)n(ual)523
-4526 y(e\013ort)30 b(of)g(assigning)f(or)g(guessing)h(k)n(eyw)n(ords)e
-(should)i(b)r(e)g(minimized.)h(Also,)f(the)h(o)n(v)n(erall)523
-4625 y(system)i(should)g(b)r(e)h(e\016cien)n(t)f(in)g(practice.)g(In)g
-(particular,)f(the)i(system)f(requires)e(p)r(eers)523
-4725 y(to)k(frequen)n(tly)h(handle)f(small,)g(p)r(er-blo)r(c)n(k)g
-(queries,)f(man)n(y)h(of)h(whic)n(h)f(ma)n(y)g(not)g(ha)n(v)n(e)f(a)523
-4825 y(answ)n(er)23 b(that)i(is)g(lo)r(cally)f(a)n(v)-5
-b(ailable.)23 b(The)i(follo)n(wing)e(subsections)h(presen)n(t)g(some)g
-(ideas)g(on)523 4924 y(ho)n(w)j(these)h(issues)f(can)g(b)r(e)h
-(addressed.)p Black Black eop end
-%%Page: 15 15
-TeXDict begin 15 14 bop 0 0 a
+ 3015
+4725 a Black 32 w Fx(sho)n(ws)f(the)523 4825 y(sequence)26
+b(of)h(messages)e(exc)n(hanged)h(b)n(y)h(p)r(eers)f(to)h(do)n(wnload)e
+(a)i(64Kb)e(\014le)i(starting)f(with)523 4924 y(a)h(k)n(eyw)n(ord.)p
+Black Black eop end
+%%Page: 12 12
+TeXDict begin 12 11 bop 0 0 a
 SDict begin /product where{pop product(Distiller)search{pop pop pop
 version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
 closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
@@ -8158,43 +7157,42 @@
 232 a
 SDict begin H.R end
  523 232 a 523 232 a
-SDict begin [ /View [/XYZ H.V] /Dest (page.15) cvn H.B /DEST pdfmark
+SDict begin [ /View [/XYZ H.V] /Dest (page.12) cvn H.B /DEST pdfmark
 end
- 523 232 a Black 1036 w Fx(An)25
-b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)199
-b(15)p Black Black 523 369 2882 4 v 523 491 a Fp(B)29
-b Fx(shares)e(\014le)f(whic)n(h)f(is)i(enco)r(ded)e(as)h
-Fp(B)1711 499 y Fy(1)1746 491 y Fp(;)13 b(B)1838 499
-y Fy(2)1899 491 y Fx(and)25 b(one)h Fq(IBlo)l(ck)f Fx(under)g(k)n(eyw)n
-(ord)g(\\test".)p Black 523 649 a Fp(A)c Fe(!)g Fp(B)t
-Fv(:)p Black 41 w Fx(Query:)k Fp(H)6 b Fx(\()p Fp(P)11
-b(ub)1319 661 y Fk(H)t Fy(\(\\)p Fk(test)p Fy("\))1591
-649 y Fx(\))p Black 523 740 a Fp(B)25 b Fe(!)c Fp(A)p
-Fv(:)p Black 41 w Fx(Resp)r(onse:)26 b(\([)p Fp(E)1294
-752 y Fk(H)t Fy(\(\\)p Fk(test)p Fy("\))1566 740 y Fx(\()p
-Fp(Q)1657 748 y Fy(0)1691 740 y Fp(;)14 b(K)1791 748
-y Fy(0)1825 740 y Fp(;)f(siz)s(e)p Fx(\)])2047 748 y
-Fk(P)8 b(r)r(v)2156 762 y Fh(H)s Ff(\(\\)p Fh(test)p
-Ff("\))2417 740 y Fp(;)14 b(P)d(ub)2589 752 y Fk(H)t
-Fy(\(\\)p Fk(test)p Fy("\))2861 740 y Fx(\))25 b(\(one)h
-Fq(KBlo)l(ck)p Fx(\))p Black 523 832 a Fp(A)21 b Fe(!)g
-Fp(B)t Fv(:)p Black 41 w Fx(Query:)k Fp(Q)1143 840 y
-Fy(0)1203 832 y Fx(\(CHK-query\))p Black 523 923 a Fp(B)g
-Fe(!)c Fp(A)p Fv(:)p Black 41 w Fx(Resp)r(onse:)26 b
-Fp(E)1243 931 y Fk(K)1294 941 y Ff(0)1330 923 y Fx(\()p
-Fp(Q)1421 931 y Fy(1)1455 923 y Fp(;)14 b(K)1555 931
-y Fy(1)1589 923 y Fp(;)f(Q)1684 931 y Fy(2)1718 923 y
-Fp(;)h(K)1818 931 y Fy(2)1852 923 y Fx(\))26 b(\(encrypted)e
-Fq(IBlo)l(ck)p Fx(\))p Black 523 1014 a Fp(A)d Fe(!)g
-Fp(B)t Fv(:)p Black 41 w Fx(Query:)k Fp(Q)1143 1022 y
-Fy(1)1203 1014 y Fx(and)g Fp(Q)1413 1022 y Fy(2)1473
-1014 y Fx(\(CHK-query\))p Black 523 1106 a Fp(B)g Fe(!)c
-Fp(A)p Fv(:)p Black 41 w Fx(Resp)r(onse:)26 b Fp(E)1243
-1114 y Fk(K)1294 1124 y Ff(1)1330 1106 y Fx(\()p Fp(B)1418
-1114 y Fy(1)1453 1106 y Fx(\))f(and)h Fp(E)1715 1114
-y Fk(K)1766 1124 y Ff(2)1802 1106 y Fx(\()p Fp(B)1890
-1114 y Fy(2)1924 1106 y Fx(\))g(\(encrypted)e Fq(DBlo)l(ck)p
-Fx(s\))p 523 1241 V 523 1387 a Fr(Fig.)15 b(4.)p 0 TeXcolorgray
+ 523 232 a Black Fu(12)199 b(C.)27
+b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
+Black Black 523 369 2882 4 v 523 491 a Fm(B)i Fu(shares)e(\014le)f
+(whic)n(h)f(is)i(enco)r(ded)e(as)h Fm(B)1711 499 y Fv(1)1746
+491 y Fm(;)13 b(B)1838 499 y Fv(2)1899 491 y Fu(and)25
+b(one)h Fn(IBlo)l(ck)f Fu(under)g(k)n(eyw)n(ord)g(\\test".)p
+Black 523 649 a Fm(A)c Fb(!)g Fm(B)t Fs(:)p Black 41
+w Fu(Query:)k Fm(H)6 b Fu(\()p Fm(P)11 b(ub)1319 661
+y Fh(H)t Fv(\(\\)p Fh(test)p Fv("\))1591 649 y Fu(\))p
+Black 523 740 a Fm(B)25 b Fb(!)c Fm(A)p Fs(:)p Black
+41 w Fu(Resp)r(onse:)26 b(\([)p Fm(E)1294 752 y Fh(H)t
+Fv(\(\\)p Fh(test)p Fv("\))1566 740 y Fu(\()p Fm(Q)1657
+748 y Fv(0)1691 740 y Fm(;)14 b(K)1791 748 y Fv(0)1825
+740 y Fm(;)f(siz)s(e)p Fu(\)])2047 748 y Fh(P)8 b(r)r(v)2156
+762 y Fe(H)s Fc(\(\\)p Fe(test)p Fc("\))2417 740 y Fm(;)14
+b(P)d(ub)2589 752 y Fh(H)t Fv(\(\\)p Fh(test)p Fv("\))2861
+740 y Fu(\))25 b(\(one)h Fn(KBlo)l(ck)p Fu(\))p Black
+523 832 a Fm(A)21 b Fb(!)g Fm(B)t Fs(:)p Black 41 w Fu(Query:)k
+Fm(Q)1143 840 y Fv(0)1203 832 y Fu(\(CHK-query\))p Black
+523 923 a Fm(B)g Fb(!)c Fm(A)p Fs(:)p Black 41 w Fu(Resp)r(onse:)26
+b Fm(E)1243 931 y Fh(K)1294 941 y Fc(0)1330 923 y Fu(\()p
+Fm(Q)1421 931 y Fv(1)1455 923 y Fm(;)14 b(K)1555 931
+y Fv(1)1589 923 y Fm(;)f(Q)1684 931 y Fv(2)1718 923 y
+Fm(;)h(K)1818 931 y Fv(2)1852 923 y Fu(\))26 b(\(encrypted)e
+Fn(IBlo)l(ck)p Fu(\))p Black 523 1014 a Fm(A)d Fb(!)g
+Fm(B)t Fs(:)p Black 41 w Fu(Query:)k Fm(Q)1143 1022 y
+Fv(1)1203 1014 y Fu(and)g Fm(Q)1413 1022 y Fv(2)1473
+1014 y Fu(\(CHK-query\))p Black 523 1106 a Fm(B)g Fb(!)c
+Fm(A)p Fs(:)p Black 41 w Fu(Resp)r(onse:)26 b Fm(E)1243
+1114 y Fh(K)1294 1124 y Fc(1)1330 1106 y Fu(\()p Fm(B)1418
+1114 y Fv(1)1453 1106 y Fu(\))f(and)h Fm(E)1715 1114
+y Fh(K)1766 1124 y Fc(2)1802 1106 y Fu(\()p Fm(B)1890
+1114 y Fv(2)1924 1106 y Fu(\))g(\(encrypted)e Fn(DBlo)l(ck)p
+Fu(s\))p 523 1241 V 523 1387 a Fo(Fig.)15 b(4.)p 0 TeXcolorgray
 811 1287 a
 SDict begin H.S end
  811 1287 a 0 TeXcolorgray 0 TeXcolorgray 811
@@ -8203,534 +7201,113 @@
  811 1287 a 811 1287 a
 SDict begin [ /View [/XYZ H.V] /Dest (figure.1.4) cvn H.B /DEST pdfmark
 end
- 811 1287 a Black 100 x FA(Example)36
+ 811 1287 a Black 100 x Fx(Example)36
 b(proto)r(col)g(for)g(an)h(ECRS)g(do)n(wnload.)f(\()p
-Fs(Q)2524 1399 y Fi(i)2551 1387 y Fs(;)14 b(K)2659 1399
-y Fi(i)2686 1387 y FA(\))38 b(is)e(a)h(CHK)g(pair)f(to)523
-1486 y(request)27 b(and)g(decrypt)h(blo)r(c)n(k)f Fs(i)p
-FA(.)p Black 523 1686 a
+Fp(Q)2524 1399 y Ff(i)2551 1387 y Fp(;)14 b(K)2659 1399
+y Ff(i)2686 1387 y Fx(\))38 b(is)e(a)h(CHK)g(pair)f(to)523
+1486 y(request)27 b(and)g(decrypt)h(blo)r(c)n(k)f Fp(i)p
+Fx(.)p Black 523 1705 a
 SDict begin H.S end
- 523 1686 a 523 1686 a
+ 523 1705 a 523 1705 a
 SDict begin 12 H.A end
- 523 1686
-a 523 1686 a
-SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.4.1) cvn H.B /DEST
-pdfmark end
- 523 1686 a 83 x Fr(4.1)95 b(Keyw)m(ord)32
-b(inference)523 1930 y FA(One)40 b(problem)g(with)i(ECRS)e(is)g(that)h
-(the)g(con)n(ten)n(t)g(m)n(ust)f(often)h(b)r(e)g(asso)r(ciated)e(with)
-523 2029 y(k)n(eyw)n(ords.)23 b(Although)i(this)h(is)f(v)-5
-b(astly)25 b(b)r(etter)g(than)g(forcing)g(the)g(user)g(to)g(rely)f(on)h
-(\\mean-)523 2129 y(ingless")33 b(bitstrings)g(as)g(the)i(only)e(iden)n
-(ti\014er,)h(the)g(k)n(eys)f(m)n(ust)h(still)g(b)r(e)h(c)n(hosen)e(so)g
-(that)523 2229 y(the)25 b(target)f(audience)g(can)h(guess)f(them.)h
-(The)g(simplest)g(non-tec)n(hnical)e(solution)i(for)f(this)523
-2328 y(problem)g(is)g(for)f(a)h(group)f(of)h(users)g(to)g(agree)e(on)i
-(an)g(informal)g(standard)f(for)g(k)n(eyw)n(ords.)g(If)523
-2428 y(con)n(ten)n(t)28 b(pro)n(viders)e(w)n(an)n(t)i(to)g(mak)n(e)f
-(it)i(easy)e(for)h(others)f(to)h(guess)f(a)h(k)n(eyw)n(ord,)f(it)h(is)g
-(t)n(yp-)523 2527 y(ically)h(useful)h(to)g(follo)n(w)f(informal)g(con)n
-(v)n(en)n(tions)f(for)h(k)n(eyw)n(ord)f(selection.)h(F)-7
-b(or)29 b(example,)523 2627 y(a)e(reasonable)f(con)n(v)n(en)n(tion)g
-(ma)n(y)h(b)r(e)h(to)f(only)g(use)h(lo)n(w)n(er-case)d(letters.)648
-2727 y(A)j(larger)f(problem)h(for)g(a)g(k)n(eyw)n(ord-based)e(searc)n
-(h)h(is)h(that)h(users)f(ma)n(y)g(b)r(e)h(reluctan)n(t)523
-2826 y(to)e(put)g(in)g(the)g(e\013ort)f(to)g(pro)n(vide)g(go)r(o)r(d)g
-(k)n(eyw)n(ords)e(for)i(the)h(con)n(ten)n(t)f(that)h(they)g(pro)n
-(vide.)523 2926 y(A)g(solution)f(to)h(this)g(problem)f(is)g(the)h
-Fd(libextractor)22 b FA(library)j([)p 0 1 0 TeXcolorrgb
-2575 2926 a
-SDict begin H.S end
- 2575 2926 a 0 1 0 TeXcolorrgb FA(14)p 0 1 0
-TeXcolorrgb 2658 2872 a
-SDict begin H.R end
- 2658 2872 a 2658 2926 a
-SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(cite.le2005) cvn H.B /ANN pdfmark end
- 2658
-2926 a Black FA(].)i Fd(libextractor)22 b FA(is)k(a)523
-3026 y(library)j(for)h(metadata)f(extraction)h(that)g(is)g(used)g(to)g
-(automatically)g(extract)f(k)n(eyw)n(ords)523 3125 y(and)f(other)g
-(metadata,)g(suc)n(h)g(as)g(descriptions,)g(commen)n(ts)g(and)g(mime-t)
-n(yp)r(es)h(from)f(\014les)523 3225 y(of)g(v)-5 b(arious)26
-b(formats.)523 3369 y
-SDict begin H.S end
- 523 3369 a 523 3369 a
-SDict begin 12 H.A end
- 523 3369
-a 523 3369 a
-SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.4.2) cvn H.B /DEST
-pdfmark end
- 523 3369 a 100 x Fr(4.2)95 b(Directories)523
-3629 y FA(Another)25 b(approac)n(h)e(to)i(a)n(v)n(oiding)e(searc)n(hes)
-g(is)i(to)g(group)e(\014les)i(in)n(to)g(directories.)f(Directo-)523
-3729 y(ries)k(can)g(help)h(with)h(the)f(searc)n(h)e(problem)h(since)h
-(they)f(reduce)h(the)g(need)g(for)f(searc)n(hing.)523
-3828 y(Also,)i(they)h(can)f(b)r(e)h(used)f(to)g(bundle)h(similar)f(con)
-n(ten)n(t)g(and)g(th)n(us)h(help)g(users)e(a)n(v)n(oid)g(in-)523
-3928 y(appropriately)g(lab)r(eled)h(data.)h(If)g(sev)n(eral)d(\014les)j
-(of)g(suc)n(h)f(a)g(directory)f(ha)n(v)n(e)h(appropriate)523
-4028 y(descriptions,)k(it)h(is)g(lik)n(ely)f(that)h(the)g(other)f
-(\014les)h(will)g(also)f(ha)n(v)n(e)f(b)r(een)i(pro)n(vided)f(b)n(y)g
-(a)523 4127 y(non-malicious)26 b(part)n(y)-7 b(.)648
-4227 y(In)n(tegrating)38 b(directories)g(in)n(to)i(the)g(ECRS)f(sc)n
-(heme)g(is)h(fairly)f(straigh)n(tforw)n(ard.)e(A)523
-4327 y(directory)f(is)h(simply)h(a)f(\014le)g(that)h(con)n(tains)e(an)n
-(y)h(n)n(um)n(b)r(er)g(of)g Ft(SBlo)l(ck)p FA(s)h(or)f
-Ft(KBlo)l(ck)p FA(s)h(in)523 4426 y(plain)n(text)25 b(\(!\).)h(Lik)n(e)
-f(\014les,)g(directories)f(are)g(imm)n(utable)i(and)f(are)f(sub)5
-b(jected)26 b(to)f(the)h(same)523 4526 y(enco)r(ding)h(for)g(sharing.)
-648 4625 y(Note)k(that)h(it)h(is)e(p)r(ossible)h(for)f(users)g(to)h
-(assem)n(ble)e(a)i(directory)e(that)i(refers)f(to)h(an)n(y)523
-4725 y(com)n(bination)d(of)h(\014les:)g(\014les)g(the)g(user)f
-(inserted)h(p)r(ersonally)-7 b(,)28 b(\014les)i(that)g(the)h(user)e(do)
-n(wn-)523 4825 y(loaded,)21 b(\014les)g(that)g(the)h(user)e(encoun)n
-(tered)h(as)f(searc)n(h)g(results)h(but)h(nev)n(er)e(do)n(wnloaded,)g
-(or)523 4924 y(ev)n(en)29 b(in)n(v)-5 b(alid)30 b(data)f(\(whic)n(h)h
-(w)n(ould)g(b)r(e)g(in)n(terpreted)f(as)g(references)g(that)h(corresp)r
-(ond)e(to)p Black Black eop end
-%%Page: 16 16
-TeXDict begin 16 15 bop 0 0 a
-SDict begin /product where{pop product(Distiller)search{pop pop pop
-version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
-closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
-grestore}if}{pop}ifelse}{pop}ifelse}if end
- 0 0 a Black 0 TeXcolorgray
-523 232 a
-SDict begin H.S end
- 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
-232 a
-SDict begin H.R end
- 523 232 a 523 232 a
-SDict begin [ /View [/XYZ H.V] /Dest (page.16) cvn H.B /DEST pdfmark
+ 523 1705
+a 523 1705 a
+SDict begin [ /View [/XYZ H.V] /Dest (section.1.4) cvn H.B /DEST pdfmark
 end
- 523 232 a Black Fx(16)199 b(C.)27
-b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
-Black Black 533 366 2 2 v 535 367 533 4 v 1068 366 2
-2 v 532 490 4 124 v 1070 490 V 533 493 2 2 v 535 494
-533 4 v 1068 493 2 2 v 559 446 a Fp(S)t(B)t(l)q(ock)r
-Fx(\()p Fp(Al)q(ice)p 838 459 177 4 v 1 w Fx(\))2020
-453 y Fo(1)p Fn(1)p 1071 460 4 4 v 1074 460 V 1077 460
-V 1079 461 V 1082 461 V 1085 461 V 1088 461 V 1091 461
-V 1093 462 V 1096 462 V 1099 462 V 1102 462 V 1105 463
-V 1107 463 V 1110 463 V 1113 463 V 1116 463 V 1119 464
-V 1121 464 V 1124 464 V 1127 464 V 1130 465 V 1132 465
-V 1135 465 V 1138 465 V 1141 465 V 1144 466 V 1146 466
-V 1149 466 V 1152 466 V 1155 466 V 1158 467 V 1160 467
-V 1163 467 V 1166 467 V 1169 467 V 1172 468 V 1174 468
-V 1177 468 V 1180 468 V 1183 468 V 1186 468 V 1188 469
-V 1191 469 V 1194 469 V 1197 469 V 1199 469 V 1202 470
-V 1205 470 V 1208 470 V 1211 470 V 1213 470 V 1216 470
-V 1219 470 V 1222 471 V 1225 471 V 1227 471 V 1230 471
-V 1233 471 V 1236 471 V 1239 472 V 1241 472 V 1244 472
-V 1247 472 V 1250 472 V 1252 472 V 1255 472 V 1258 473
-V 1261 473 V 1264 473 V 1266 473 V 1269 473 V 1272 473
-V 1275 473 V 1278 474 V 1280 474 V 1283 474 V 1286 474
-V 1289 474 V 1292 474 V 1294 474 V 1297 474 V 1300 475
-V 1303 475 V 1305 475 V 1308 475 V 1311 475 V 1314 475
-V 1317 475 V 1319 475 V 1322 475 V 1325 476 V 1328 476
-V 1331 476 V 1333 476 V 1336 476 V 1339 476 V 1342 476
-V 1345 476 V 1347 476 V 1350 476 V 1353 476 V 1356 477
-V 1358 477 V 1361 477 V 1364 477 V 1367 477 V 1370 477
-V 1372 477 V 1375 477 V 1378 477 V 1381 477 V 1384 477
-V 1386 477 V 1389 477 V 1392 478 V 1395 478 V 1398 478
-V 1400 478 V 1403 478 V 1406 478 V 1409 478 V 1411 478
-V 1414 478 V 1417 478 V 1420 478 V 1423 478 V 1425 478
-V 1428 478 V 1431 478 V 1434 478 V 1437 478 V 1439 478
-V 1442 479 V 1445 479 V 1448 479 V 1451 479 V 1453 479
-V 1456 479 V 1459 479 V 1462 479 V 1464 479 V 1467 479
-V 1470 479 V 1473 479 V 1476 479 V 1478 479 V 1481 479
-V 1484 479 V 1487 479 V 1490 479 V 1492 479 V 1495 479
-V 1498 479 V 1501 479 V 1504 479 V 1506 479 V 1509 479
-V 1512 479 V 1515 479 V 1517 479 V 1520 479 V 1523 479
-V 1526 479 V 1529 479 V 1531 479 V 1534 479 V 1537 479
-V 1540 479 V 1543 479 V 1545 479 V 1548 479 V 1551 479
-V 1554 479 V 1557 479 V 1559 479 V 1562 479 V 1565 479
-V 1568 479 V 1570 479 V 1573 479 V 1576 479 V 1579 479
-V 1582 479 V 1584 479 V 1587 479 V 1590 478 V 1593 478
-V 1596 478 V 1598 478 V 1601 478 V 1604 478 V 1607 478
-V 1610 478 V 1612 478 V 1615 478 V 1618 478 V 1621 478
-V 1624 478 V 1626 478 V 1629 478 V 1632 478 V 1635 478
-V 1637 478 V 1640 477 V 1643 477 V 1646 477 V 1649 477
-V 1651 477 V 1654 477 V 1657 477 V 1660 477 V 1663 477
-V 1665 477 V 1668 477 V 1671 477 V 1674 477 V 1677 476
-V 1679 476 V 1682 476 V 1685 476 V 1688 476 V 1690 476
-V 1693 476 V 1696 476 V 1699 476 V 1702 476 V 1704 476
-V 1707 475 V 1710 475 V 1713 475 V 1716 475 V 1718 475
-V 1721 475 V 1724 475 V 1727 475 V 1730 475 V 1732 474
-V 1735 474 V 1738 474 V 1741 474 V 1743 474 V 1746 474
-V 1749 474 V 1752 474 V 1755 473 V 1757 473 V 1760 473
-V 1763 473 V 1766 473 V 1769 473 V 1771 473 V 1774 472
-V 1777 472 V 1780 472 V 1783 472 V 1785 472 V 1788 472
-V 1791 472 V 1794 471 V 1796 471 V 1799 471 V 1802 471
-V 1805 471 V 1808 471 V 1810 470 V 1813 470 V 1816 470
-V 1819 470 V 1822 470 V 1824 470 V 1827 470 V 1830 469
-V 1833 469 V 1836 469 V 1838 469 V 1841 469 V 1844 468
-V 1847 468 V 1849 468 V 1852 468 V 1855 468 V 1858 468
-V 1861 467 V 1863 467 V 1866 467 V 1869 467 V 1872 467
-V 1875 466 V 1877 466 V 1880 466 V 1883 466 V 1886 466
-V 1889 465 V 1891 465 V 1894 465 V 1897 465 V 1900 465
-V 1902 464 V 1905 464 V 1908 464 V 1911 464 V 1914 463
-V 1916 463 V 1919 463 V 1922 463 V 1925 463 V 1928 462
-V 1930 462 V 1933 462 V 1936 462 V 1939 461 V 1942 461
-V 1944 461 V 1947 461 V 1950 461 V 1953 460 V 1955 460
-V 1958 460 V 1961 460 V 1964 459 V 1967 459 V 1969 459
-V 1972 459 V 1975 458 V 1978 458 V 1981 458 V 1983 458
-V 1986 457 V 1989 457 V 1992 457 V 1995 457 V 1997 456
-V 2000 456 V 2003 456 V 2006 455 V 2009 455 V 2011 455
-V 2014 455 V 2017 454 V 2045 446 a Fp(D)r(ir)r(ector)r(y)2382
-454 y Fy(1)1070 397 y Fo(p)p Fn(p)p 2017 404 V 2014 404
-V 2011 403 V 2009 403 V 2006 403 V 2003 403 V 2000 402
-V 1997 402 V 1995 402 V 1992 402 V 1989 401 V 1986 401
-V 1983 401 V 1981 401 V 1978 400 V 1975 400 V 1972 400
-V 1969 400 V 1967 399 V 1964 399 V 1961 399 V 1958 399
-V 1955 398 V 1953 398 V 1950 398 V 1947 398 V 1944 397
-V 1942 397 V 1939 397 V 1936 397 V 1933 397 V 1930 396
-V 1928 396 V 1925 396 V 1922 396 V 1919 395 V 1916 395
-V 1914 395 V 1911 395 V 1908 395 V 1905 394 V 1902 394
-V 1900 394 V 1897 394 V 1894 393 V 1891 393 V 1889 393
-V 1886 393 V 1883 393 V 1880 392 V 1877 392 V 1875 392
-V 1872 392 V 1869 392 V 1866 391 V 1863 391 V 1861 391
-V 1858 391 V 1855 391 V 1852 391 V 1849 390 V 1847 390
-V 1844 390 V 1841 390 V 1838 390 V 1836 389 V 1833 389
-V 1830 389 V 1827 389 V 1824 389 V 1822 389 V 1819 388
-V 1816 388 V 1813 388 V 1810 388 V 1808 388 V 1805 388
-V 1802 387 V 1799 387 V 1796 387 V 1794 387 V 1791 387
-V 1788 387 V 1785 387 V 1783 386 V 1780 386 V 1777 386
-V 1774 386 V 1771 386 V 1769 386 V 1766 386 V 1763 385
-V 1760 385 V 1757 385 V 1755 385 V 1752 385 V 1749 385
-V 1746 385 V 1743 385 V 1741 384 V 1738 384 V 1735 384
-V 1732 384 V 1730 384 V 1727 384 V 1724 384 V 1721 384
-V 1718 383 V 1716 383 V 1713 383 V 1710 383 V 1707 383
-V 1704 383 V 1702 383 V 1699 383 V 1696 383 V 1693 383
-V 1690 382 V 1688 382 V 1685 382 V 1682 382 V 1679 382
-V 1677 382 V 1674 382 V 1671 382 V 1668 382 V 1665 382
-V 1663 382 V 1660 381 V 1657 381 V 1654 381 V 1651 381
-V 1649 381 V 1646 381 V 1643 381 V 1640 381 V 1637 381
-V 1635 381 V 1632 381 V 1629 381 V 1626 381 V 1624 381
-V 1621 381 V 1618 380 V 1615 380 V 1612 380 V 1610 380
-V 1607 380 V 1604 380 V 1601 380 V 1598 380 V 1596 380
-V 1593 380 V 1590 380 V 1587 380 V 1584 380 V 1582 380
-V 1579 380 V 1576 380 V 1573 380 V 1570 380 V 1568 380
-V 1565 380 V 1562 380 V 1559 380 V 1557 380 V 1554 380
-V 1551 380 V 1548 380 V 1545 380 V 1543 379 V 1540 379
-V 1537 379 V 1534 379 V 1531 379 V 1529 379 V 1526 379
-V 1523 379 V 1520 379 V 1517 379 V 1515 379 V 1512 379
-V 1509 379 V 1506 379 V 1504 379 V 1501 379 V 1498 379
-V 1495 379 V 1492 379 V 1490 379 V 1487 379 V 1484 380
-V 1481 380 V 1478 380 V 1476 380 V 1473 380 V 1470 380
-V 1467 380 V 1464 380 V 1462 380 V 1459 380 V 1456 380
-V 1453 380 V 1451 380 V 1448 380 V 1445 380 V 1442 380
-V 1439 380 V 1437 380 V 1434 380 V 1431 380 V 1428 380
-V 1425 380 V 1423 380 V 1420 380 V 1417 380 V 1414 380
-V 1411 380 V 1409 381 V 1406 381 V 1403 381 V 1400 381
-V 1398 381 V 1395 381 V 1392 381 V 1389 381 V 1386 381
-V 1384 381 V 1381 381 V 1378 381 V 1375 381 V 1372 381
-V 1370 381 V 1367 382 V 1364 382 V 1361 382 V 1358 382
-V 1356 382 V 1353 382 V 1350 382 V 1347 382 V 1345 382
-V 1342 382 V 1339 382 V 1336 383 V 1333 383 V 1331 383
-V 1328 383 V 1325 383 V 1322 383 V 1319 383 V 1317 383
-V 1314 383 V 1311 383 V 1308 384 V 1305 384 V 1303 384
-V 1300 384 V 1297 384 V 1294 384 V 1292 384 V 1289 384
-V 1286 385 V 1283 385 V 1280 385 V 1278 385 V 1275 385
-V 1272 385 V 1269 385 V 1266 385 V 1264 386 V 1261 386
-V 1258 386 V 1255 386 V 1252 386 V 1250 386 V 1247 386
-V 1244 387 V 1241 387 V 1239 387 V 1236 387 V 1233 387
-V 1230 387 V 1227 387 V 1225 388 V 1222 388 V 1219 388
-V 1216 388 V 1213 388 V 1211 388 V 1208 389 V 1205 389
-V 1202 389 V 1199 389 V 1197 389 V 1194 389 V 1191 390
-V 1188 390 V 1186 390 V 1183 390 V 1180 390 V 1177 391
-V 1174 391 V 1172 391 V 1169 391 V 1166 391 V 1163 391
-V 1160 392 V 1158 392 V 1155 392 V 1152 392 V 1149 392
-V 1146 393 V 1144 393 V 1141 393 V 1138 393 V 1135 393
-V 1132 394 V 1130 394 V 1127 394 V 1124 394 V 1121 395
-V 1119 395 V 1116 395 V 1113 395 V 1110 395 V 1107 396
-V 1105 396 V 1102 396 V 1099 396 V 1096 397 V 1093 397
-V 1091 397 V 1088 397 V 1085 397 V 1082 398 V 1079 398
-V 1077 398 V 1074 398 V 1071 399 V 1048 628 a Fo(r)p
-Fn(r)p Fl(d)1088 621 y(d)1129 614 y(d)1169 607 y(d)1210
-600 y(d)1250 594 y(d)1291 587 y(d)1331 580 y(d)1372 573
-y(d)1412 566 y(d)1453 559 y(d)1493 552 y(d)1534 545 y(d)1574
-539 y(d)1615 532 y(d)1655 525 y(d)1695 518 y(d)1736 511
-y(d)1776 504 y(d)1817 497 y(d)1857 490 y(d)1898 484 y(d)1938
-477 y(d)1979 470 y(d)1690 608 y Fo(t)p Fn(t)p Fl(j)1727
-596 y(j)1763 584 y(j)1800 572 y(j)1836 560 y(j)1873 547
-y(j)1909 535 y(j)1946 523 y(j)1982 511 y(j)2018 499 y(j)2231
-608 y Fo(\017)p Fn(\017)p 2229 608 4 123 v 2652 366 2
-2 v 2654 367 612 4 v 3266 366 2 2 v 2651 490 4 124 v
-3268 490 V 2652 493 2 2 v 2654 494 612 4 v 3266 493 2
-2 v 2678 446 a Fp(K)5 b(B)t(l)q(ock)r Fx(\(\\)p Fp(f)j(ood)p
-Fx("\))2441 428 y Fo(o)p Fn(o)p 2441 430 212 4 v 556
-609 2 2 v 557 610 488 4 v 1045 609 2 2 v 555 733 4 124
-v 1048 733 V 556 736 2 2 v 557 737 488 4 v 1045 736 2
-2 v 581 689 a Fp(S)t(B)t(l)q(ock)r Fx(\()p Fp(B)t(ob)p
-860 702 132 4 v 1 w Fx(\))1346 858 y Fo(\))p Fn(\))1307
-845 y Fl(T)1271 832 y(T)1235 820 y(T)1199 807 y(T)1162
-795 y(T)1126 782 y(T)1090 770 y(T)1054 757 y(T)1018 745
-y(T)982 732 y(T)p 1199 609 2 2 v 1200 610 606 4 v 1806
-609 2 2 v 1198 733 4 124 v 1808 733 V 1199 736 2 2 v
-1200 737 606 4 v 1806 736 2 2 v 1224 689 a Fp(K)d(B)t(l)q(ock)r
-Fx(\(\\)p Fp(soda)p Fx("\))1504 858 y Fo(\017)p Fn(\017)p
-1502 858 4 126 v 1925 609 2 2 v 1927 610 606 4 v 2533
-609 2 2 v 1925 733 4 124 v 2535 733 V 1925 736 2 2 v
-1927 737 606 4 v 2533 736 2 2 v 1951 689 a Fp(K)g(B)t(l)q(ock)r
-Fx(\(\\)p Fp(soda)p Fx("\))2231 858 y Fo(\017)p Fn(\017)p
-2229 858 4 126 v 2664 609 2 2 v 2666 610 588 4 v 3254
-609 2 2 v 2663 733 4 124 v 3256 733 V 2664 736 2 2 v
-2666 737 588 4 v 3254 736 2 2 v 2690 689 a Fp(K)g(B)t(l)q(ock)r
-Fx(\(\\)p Fp(col)q(a)p Fx("\))2395 858 y Fo(t)p Fn(t)2395
-859 y Fl(j)2432 846 y(j)2470 834 y(j)2508 821 y(j)2545
-809 y(j)2583 796 y(j)2621 784 y(j)2659 771 y(j)2696 758
-y(j)2734 746 y(j)p 522 852 V 524 853 555 4 v 1079 852
-2 2 v 521 975 4 124 v 1081 975 V 522 978 2 2 v 524 979
-555 4 v 1079 978 2 2 v 548 932 a Fp(K)g(B)t(l)q(ock)r
-Fx(\(\\)p Fp(bob)p Fx("\))802 732 y Fo(O)p Fn(O)p 801
-851 4 119 v 1308 934 a Fp(D)r(ocument)1665 942 y Fy(1)2035
-934 y Fp(D)r(ocument)2392 942 y Fy(2)2764 934 y Fp(D)r(ocument)3121
-942 y Fy(3)523 1124 y Fr(Fig.)15 b(5.)p 0 TeXcolorgray
-805 1024 a
-SDict begin H.S end
- 805 1024 a 0 TeXcolorgray 0 TeXcolorgray 805
-1024 a
-SDict begin H.R end
- 805 1024 a 805 1024 a
-SDict begin [ /View [/XYZ H.V] /Dest (figure.1.5) cvn H.B /DEST pdfmark
-end
- 805 1024 a Black 835 1124
-a FA(ECRS)30 b(allo)n(ws)f(the)i(formation)f(of)g(complicated)g(net)n
-(w)n(ork)f(structures.)h(In)h(this)523 1224 y(example,)38
-b(the)h Ft(SBlo)l(ck)g FA(of)f(pseudon)n(ym)g Ft(A)n(lic)l(e)p
-1865 1237 179 4 v 39 w FA(ev)n(en)n(tually)f(allo)n(ws)g(to)h(retriev)n
-(e)f(t)n(w)n(o)h(of)523 1323 y(the)24 b(do)r(cumen)n(ts)f(enco)r(ded)h
-(in)g(the)f(system,)h(as)f(do)r(es)g Ft(Kblo)l(ck)h FA(for)f(k)n(eyw)n
-(ord)f(\\fo)r(o)r(d".)g(Bo)n(xes)523 1423 y(denote)d(simple)h(blo)r(c)n
-(ks)e(that)i(serv)n(e)d(as)i(en)n(try-p)r(oin)n(ts.)f(The)h(directory)f
-(and)h(the)h(do)r(cumen)n(ts)523 1523 y(consist)33 b(of)h(trees)f(of)h
-(p)r(ossibly)g(man)n(y)f(CHK-enco)r(ded)g(blo)r(c)n(ks.)g(Searc)n(hing)
-g(for)g(k)n(eyw)n(ord)523 1622 y(\\so)r(da")h(w)n(ould)h(return)g(t)n
-(w)n(o)f(results)h(p)r(oin)n(ting)g(to)g(di\013eren)n(t)h(resources.)d
-(Note)j(that)f(all)523 1722 y(the)d(enco)r(ded)f(resources,)f
-(including)h(the)h(one)f(do)r(cumen)n(t)h(with)f(no)h(p)r(oin)n(ters)e
-(to)i(it,)f(can)523 1821 y(b)r(e)d(retriev)n(ed)e(b)n(y)i(kno)n(wing)e
-(the)i(CHK)g(k)n(eys)e(of)i(their)f(ro)r(ot)g Ft(IBlo)l(ck)p
-FA(s.)p Black Black Black 523 2275 a(non-existen)n(t)h(\014les\).)h
-(Directories)e(can)h(also)g(refer)f(to)i(other)f(directories,)f(allo)n
-(wing)g(users)523 2375 y(to)g(build)h(na)n(vigable)d(structures)h
-(similar)h(to)g(\014le)g(systems)f(or)g(the)i(W)-7 b(orld)27
-b(Wide)g(W)-7 b(eb.)28 b(In)523 2474 y(particular)k(it)i(is)f(p)r
-(ossible)g(to)g(refer)f(to)h(con)n(ten)n(ts)g(of)g(other)g(users)f(and)
-h(ev)n(en)g(to)g(\014les)g(or)523 2574 y(directories)28
-b(that)h(are)f(supp)r(osed)h(to)g(b)r(e)g(published)h(in)f(the)g
-(future.)h(Figure)p 1 0 0 TeXcolorrgb 2978 2574 a
-SDict begin H.S end
- 2978
-2574 a 1 0 0 TeXcolorrgb FA(5)p 1 0 0 TeXcolorrgb 3020
-2520 a
-SDict begin H.R end
- 3020 2520 a 3020 2574 a
-SDict begin [ /Color [1 0 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(figure.1.5) cvn H.B /ANN pdfmark end
- 3020 2574 a Black 29 w
-FA(illustrates)523 2673 y(some)d(of)h(the)g(p)r(ossible)f(reference)g
-(relationships)f(b)r(et)n(w)n(een)i(the)g(v)-5 b(arious)26
-b(constructs.)523 2853 y
-SDict begin H.S end
- 523 2853 a 523 2853 a
-SDict begin 12 H.A end
- 523 2853
-a 523 2853 a
-SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.4.3) cvn H.B /DEST
-pdfmark end
- 523 2853 a 87 x Fr(4.3)95 b(E\016cien)m(t)31
-b(lo)s(okups)f(with)i(blo)s(om)e(\014lters)523 3124 y
-FA(Giv)n(en)24 b(that)h(a)g(query)e(only)i(requires)e(the)i
-(transmission)e(of)i(a)f(hash)g(co)r(de,)h(the)g(n)n(um)n(b)r(er)f(of)
-523 3224 y(queries)29 b(that)i(an)n(y)e(giv)n(en)g(p)r(eer)h(ma)n(y)f
-(receiv)n(e)g(is)h(quite)g(high.)g(The)g(bandwidth)h(required)523
-3323 y(for)40 b(the)i(resp)r(onse)d(can)i(often)g(b)r(e)g(discoun)n
-(ted,)g(since)g(a)f(p)r(eer)h(ma)n(y)f(only)g(b)r(e)i(able)e(to)523
-3423 y(resp)r(ond)32 b(to)h(a)f(fraction)g(of)h(the)g(receiv)n(ed)e
-(queries.)h(Assuming)g(that)h(queries)f(dominate)523
-3522 y(the)d(tra\016c,)f(o)n(v)n(er)f(50)g(queries)h(p)r(er)g(second)g
-(could)h(b)r(e)g(transmitted)f(o)n(v)n(er)f(a)h(slo)n(w)g(mo)r(dem)523
-3622 y(line.)j(Man)n(y)f(p)r(eers)g(migh)n(t)g(not)h(b)r(e)g(able)f(to)
-g(p)r(erform)h(disk-based)e(database)g(lo)r(okups)h(at)523
-3722 y(suc)n(h)f(rates.)f(W)-7 b(orse,)28 b(if)h(p)r(eers)g(are)e
-(sharing)h(gigab)n(ytes)f(of)i(con)n(ten)n(t,)g(simply)g(k)n(eeping)f
-(the)523 3821 y(index)g(information)f(in)h(memory)e(is)i(also)e(often)i
-(no)f(longer)g(feasible.)648 3925 y(In)j(order)f(to)h(dramatically)e
-(reduce)i(the)g(necessary)f(n)n(um)n(b)r(er)h(of)g(database)f
-(accesses,)523 4024 y(ECRS)c(can)g(b)r(e)g(supplemen)n(ted)h(with)f(a)g
-(blo)r(om)g(\014lter)g([)p 0 1 0 TeXcolorrgb 2275 4024
-a
-SDict begin H.S end
- 2275 4024 a 0 1 0 TeXcolorrgb FA(3)p 0 1 0 TeXcolorrgb
-2316 3971 a
-SDict begin H.R end
- 2316 3971 a 2316 4024 a
-SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(cite.bloom) cvn H.B /ANN pdfmark end
- 2316 4024 a Black
-FA(],)h(whic)n(h)f(is)g(a)f(probabilistic)g(data)523
-4124 y(structure)39 b(that)h(uses)f(little)h(memory)f(and)g(can)g(b)r
-(e)h(used)g(to)f(\014lter)h(out)f(queries)g(that)523
-4223 y(de\014nitely)29 b(cannot)f(b)r(e)i(answ)n(ered)d(b)n(y)h(the)h
-(lo)r(cal)g(p)r(eer.)f(The)h(blo)r(om)f(\014lter)h(is)g(guaran)n(teed)
-523 4323 y(to)21 b(allo)n(w)f(all)g(queries)h(that)g(can)f(b)r(e)i(lo)r
-(cally)e(answ)n(ered)f(through)i(the)g(\014lter,)g(and)g(will)g(reject)
-523 4423 y(all)33 b(but)h(a)f(statistically)g(insigni\014can)n(t)f(n)n
-(um)n(b)r(er)h(of)h(queries)e(that)i(cannot)f(b)r(e)g(answ)n(ered)523
-4522 y(lo)r(cally)-7 b(.)648 4625 y(The)24 b(size)g(of)g(the)h(blo)r
-(om)f(\014lter)g(in)g(memory)g(that)g(is)g(required)g(to)g(reduce)g
-(the)g(n)n(um)n(b)r(er)523 4725 y(of)36 b(false-p)r(ositiv)n(es)e(to)h
-(appro)n(ximately)f(3\045)h(is)h(ab)r(out)f(one)g(b)n(yte)h(\(8)f(bit)h
-(with)g(5)f(blo)r(om)523 4825 y(tests,)24 b(2)779 4795
-y Fc(\000)p Fz(5)891 4825 y Fb(\031)f FA(3\045\))h(p)r(er)g(en)n(try)-7
-b(.)24 b(This)h(reduces)e(the)i(memory)e(requiremen)n(ts)g(for)h(the)h
-(index)523 4924 y(b)n(y)e(a)f(factor)g(of)h(16-64,)e(dep)r(ending)j(on)
-e(the)i(size)e(of)h(the)h(hash.)e(Since)h(a)g(no)r(de)g(o)r
-(ccasionally)p Black Black eop end
-%%Page: 17 17
-TeXDict begin 17 16 bop 0 0 a
-SDict begin /product where{pop product(Distiller)search{pop pop pop
-version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
-closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
-grestore}if}{pop}ifelse}{pop}ifelse}if end
- 0 0 a Black 0 TeXcolorgray
-523 232 a
-SDict begin H.S end
- 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
-232 a
-SDict begin H.R end
- 523 232 a 523 232 a
-SDict begin [ /View [/XYZ H.V] /Dest (page.17) cvn H.B /DEST pdfmark
-end
- 523 232 a Black 1036 w Fx(An)25
-b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)199
-b(17)p Black 523 448 a FA(needs)26 b(to)f(remo)n(v)n(e)f(con)n(ten)n(t)
-h(from)g(the)h(lo)r(cal)f(database,)g(additional)g(bit)h(coun)n(ters)f
-(for)g(the)523 548 y(blo)r(om)f(\014lter)g(should)g(b)r(e)h(stored)f
-(on)g(the)g(disk.)h(The)f(assumption)g(is)g(that)h(c)n(hanges)d(to)j
-(the)523 648 y(\014lter)30 b(are)f(rare)g(compared)g(to)h(the)g
-(frequency)g(of)g(queries.)f(Queries)g(that)h(pass)g(through)523
-747 y(the)38 b(blo)r(om)f(\014lter)h(are)e(forw)n(arded)g(to)i(the)g
-(database)e(la)n(y)n(er)g(whic)n(h)h(then)h(attempts)g(to)523
-847 y(lo)r(cate)27 b(the)h(con)n(ten)n(t.)523 1017 y
-SDict begin H.S end
-
-523 1017 a 523 1017 a
-SDict begin 12 H.A end
- 523 1017 a 523 1017 a
-SDict begin [ /View [/XYZ H.V] /Dest (section.1.5) cvn H.B /DEST pdfmark
-end
- 523 1017
-a 121 x Fu(5)112 b(Discussion)523 1364 y FA(The)23 b(fact)g(that)h(eac)
-n(h)e Ft(DBlo)l(ck)i FA(can)f(b)r(e)g(enco)r(ded)h(indep)r(enden)n(tly)
-f(from)g(an)n(y)g(other)f Ft(DBlo)l(ck)523 1463 y FA(results)35
-b(in)g(an)g(imp)r(ortan)n(t)g(feature)f(of)h(ECRS)g(called)g
-Ft(on-demand)i(enc)l(o)l(ding)p FA(.)f(Giv)n(en)f(a)523
-1563 y(plain)n(text)c(\014le)h(and)f(an)f(index)i(that)f(maps)g(a)g
-(query)f(hash)h(to)g(an)g(o\013set)g(in)h(the)f(\014le,)h(the)523
-1663 y(resulting)f Ft(DBlo)l(ck)i FA(can)e(b)r(e)i(enco)r(ded)e
-(on-the-\015y)-7 b(,)32 b(without)g(pro)r(cessing)e(an)n(y)h(other)g
-(part)523 1762 y(of)e(the)h(\014le.)g(This)f(can)g(b)r(e)g(an)g(imp)r
-(ortan)n(t)g(b)r(ene\014t)i(if)e(the)h(user)f(in)n(tends)g(to)g(k)n
-(eep)g(the)h(\014le)523 1862 y(in)i(plain)n(text)g(on)f(the)h(lo)r(cal)
-f(driv)n(e.)g(In)h(this)g(case,)f(the)h(system)f(can)g(index)h(the)g
-Ft(DBlo)l(cks)523 1961 y FA(without)22 b(replicating)f(the)i(actual)e
+ 523 1705 a 83 x Fr(4)112 b(Discussion)523
+2022 y Fx(The)23 b(fact)g(that)h(eac)n(h)e Fq(DBlo)l(ck)i
+Fx(can)f(b)r(e)g(enco)r(ded)h(indep)r(enden)n(tly)f(from)g(an)n(y)g
+(other)f Fq(DBlo)l(ck)523 2121 y Fx(results)35 b(in)g(an)g(imp)r(ortan)
+n(t)g(feature)f(of)h(ECRS)g(called)g Fq(on-demand)i(enc)l(o)l(ding)p
+Fx(.)f(Giv)n(en)f(a)523 2221 y(plain)n(text)c(\014le)h(and)f(an)f
+(index)i(that)f(maps)g(a)g(query)f(hash)h(to)g(an)g(o\013set)g(in)h
+(the)f(\014le,)h(the)523 2320 y(resulting)f Fq(DBlo)l(ck)i
+Fx(can)e(b)r(e)i(enco)r(ded)e(on-the-\015y)-7 b(,)32
+b(without)g(pro)r(cessing)e(an)n(y)h(other)g(part)523
+2420 y(of)e(the)h(\014le.)g(This)f(can)g(b)r(e)g(an)g(imp)r(ortan)n(t)g
+(b)r(ene\014t)i(if)e(the)h(user)f(in)n(tends)g(to)g(k)n(eep)g(the)h
+(\014le)523 2520 y(in)i(plain)n(text)g(on)f(the)h(lo)r(cal)f(driv)n(e.)
+g(In)h(this)g(case,)f(the)h(system)f(can)g(index)h(the)g
+Fq(DBlo)l(cks)523 2619 y Fx(without)22 b(replicating)f(the)i(actual)e
 (data)g(completely)-7 b(,)22 b(storing)f(only)g(the)h(resulting)g
-Ft(IBlo)l(cks)523 2061 y FA(\(and)j Ft(SBlo)l(cks)g FA(and)f
-Ft(KBlo)l(cks)p FA(\))i(and)e(then)h(later)f(pro)r(ducing)f(the)i
-Ft(DBlo)l(cks)h FA(only)e(using)g(the)523 2161 y(index)31
+Fq(IBlo)l(cks)523 2719 y Fx(\(and)j Fq(SBlo)l(cks)g Fx(and)f
+Fq(KBlo)l(cks)p Fx(\))i(and)e(then)h(later)f(pro)r(ducing)f(the)i
+Fq(DBlo)l(cks)h Fx(only)e(using)g(the)523 2819 y(index)31
 b(and)h(the)f(original)f(\014le.)i(This)f(can)g(result)g(in)h(rather)e
-(dramatic)h(sa)n(vings)e(in)j(space)523 2260 y(\(no)c(replication)e(of)
-i(enco)r(ded)f(con)n(ten)n(t\).)648 2365 y(Splitting)k(\014les)g(in)n
+(dramatic)h(sa)n(vings)e(in)j(space)523 2918 y(\(no)c(replication)e(of)
+i(enco)r(ded)f(con)n(ten)n(t\).)648 3025 y(Splitting)k(\014les)g(in)n
 (to)g(blo)r(c)n(ks)f(migh)n(t)g(b)r(e)i(p)r(erceiv)n(ed)e(as)g(ha)n
-(ving)g(a)g(negativ)n(e)g(e\013ect)h(on)523 2465 y(the)38
+(ving)g(a)g(negativ)n(e)g(e\013ect)h(on)523 3124 y(the)38
 b(preserv)-5 b(ation)37 b(of)h(data.)f(If)i(only)e(one)h(of)g(the)g
 (blo)r(c)n(ks)f(is)h(lost,)g(the)g(larger)e(\014le)i(can)523
-2564 y(no)30 b(longer)g(b)r(e)h(reconstructed.)f(Man)n(y)g(other)g
-(systems)g([)p 0 1 0 TeXcolorrgb 2344 2564 a
+3224 y(no)30 b(longer)g(b)r(e)h(reconstructed.)f(Man)n(y)g(other)g
+(systems)g([)p 0 1 0 TeXcolorrgb 2344 3224 a
 SDict begin H.S end
- 2344 2564
-a 0 1 0 TeXcolorrgb FA(9)p 0 1 0 TeXcolorrgb 2385 2511
+ 2344 3224
+a 0 1 0 TeXcolorrgb Fx(9)p 0 1 0 TeXcolorrgb 2385 3170
 a
 SDict begin H.R end
- 2385 2511 a 2385 2564 a
+ 2385 3170 a 2385 3224 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.freehaven-berk) cvn H.B /ANN pdfmark end
- 2385 2564 a Black FA(,)p 0 1 0
-TeXcolorrgb 2408 2564 a
+ 2385 3224 a Black Fx(,)p 0 1 0
+TeXcolorrgb 2408 3224 a
 SDict begin H.S end
- 2408 2564 a 0 1 0 TeXcolorrgb
-FA(33)p 0 1 0 TeXcolorrgb 2492 2511 a
+ 2408 3224 a 0 1 0 TeXcolorrgb
+Fx(31)p 0 1 0 TeXcolorrgb 2492 3170 a
 SDict begin H.R end
- 2492 2511 a 2492
-2564 a
+ 2492 3170 a 2492
+3224 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.mojotech) cvn H.B /ANN pdfmark end
- 2492 2564 a Black FA(])g(attempt)i(to)e(address)g(this)523
-2664 y(problem)c(b)n(y)g(either)h(attempting)g(to)f(k)n(eep)g(\014les)h
+ 2492 3224 a Black Fx(])g(attempt)i(to)e(address)g(this)523
+3323 y(problem)c(b)n(y)g(either)h(attempting)g(to)f(k)n(eep)g(\014les)h
 (in)n(tact,)g(or)e(b)n(y)i(using)f(erasure)f(co)r(des)h([)p
-0 1 0 TeXcolorrgb 3299 2664 a
+0 1 0 TeXcolorrgb 3299 3323 a
 SDict begin H.S end
- 3299 2664 a 0 1 0 TeXcolorrgb
-FA(25)p 0 1 0 TeXcolorrgb 3382 2611 a
+ 3299 3323 a 0 1 0 TeXcolorrgb
+Fx(23)p 0 1 0 TeXcolorrgb 3382 3270 a
 SDict begin H.R end
- 3382 2611 a 3382
-2664 a
+ 3382 3270 a 3382
+3323 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
 (cite.rabin89efficient) cvn H.B /ANN pdfmark end
- 3382 2664 a Black FA(])523 2764 y(to)e(patc)n(h)f(missing)g
+ 3382 3323 a Black Fx(])523 3423 y(to)e(patc)n(h)f(missing)g
 (pieces.)g(While)h(erasure)e(co)r(des)h(could)h(b)r(e)g(used)f
-(together)g(with)h(ECRS,)523 2863 y(they)i(w)n(ould)e(con\015ict)i
+(together)g(with)h(ECRS,)523 3523 y(they)i(w)n(ould)e(con\015ict)i
 (with)g(the)f(p)r(erformance)g(b)r(ene\014ts)h(of)f(on-demand)g(enco)r
-(ding.)g(Con-)523 2963 y(sequen)n(tly)-7 b(,)23 b(the)g(primary)f(mec)n
+(ding.)g(Con-)523 3622 y(sequen)n(tly)-7 b(,)23 b(the)g(primary)f(mec)n
 (hanism)g(to)h(guard)f(against)g(the)h(loss)g(of)g(\014les)g(enco)r
-(ded)f(with)523 3063 y(ECRS)31 b(should)f(b)r(e)i(data)e(replication.)g
+(ded)f(with)523 3722 y(ECRS)31 b(should)f(b)r(e)i(data)e(replication.)g
 (Since)h(ECRS)g(splits)g(\014les)g(in)n(to)g(blo)r(c)n(ks)f(it)h
-(should)523 3162 y(b)r(e)k(p)r(ossible)f(for)f(the)i(net)n(w)n(ork)e
+(should)523 3822 y(b)r(e)k(p)r(ossible)f(for)f(the)i(net)n(w)n(ork)e
 (to)h(duplicate)g(blo)r(c)n(ks)g(at)g(a)g(negligible)f(cost)h(p)r(er)g
-(blo)r(c)n(k.)523 3262 y(Duplicating)27 b(a)f(complete)h(\014le)g(of)f
+(blo)r(c)n(k.)523 3921 y(Duplicating)27 b(a)f(complete)h(\014le)g(of)f
 (sev)n(eral)f(gigab)n(ytes)g(w)n(ould)i(b)r(e)g(m)n(uc)n(h)f(more)g
-(costly)g(and)523 3361 y(more)e(lik)n(ely)h(to)g(fail.)g(F)-7
+(costly)g(and)523 4021 y(more)e(lik)n(ely)h(to)g(fail.)g(F)-7
 b(or)24 b(large)g(\014les,)h(it)h(ma)n(y)e(b)r(e)h(di\016cult)h(for)f
-(a)g(p)r(eer)f(to)h(\014nd)h(individual)523 3461 y(hosts)c(that)h(are)e
+(a)g(p)r(eer)f(to)h(\014nd)h(individual)523 4121 y(hosts)c(that)h(are)e
 (willing)h(\(or)g(able\))g(to)h(pro)n(vide)e(enough)h(space)f(to)i
-(replicate)e(the)i(complete)523 3561 y(\014le)30 b(in)g(its)g(en)n
+(replicate)e(the)i(complete)523 4220 y(\014le)30 b(in)g(its)g(en)n
 (tiret)n(y)-7 b(.)30 b(Also,)f(the)i(tra\016c)e(burst)h(that)g(a)g
-(large)e(transfer)h(w)n(ould)g(imp)r(ose)h(on)523 3660
+(large)e(transfer)h(w)n(ould)g(imp)r(ose)h(on)523 4320
 y(the)35 b(net)n(w)n(ork)d(migh)n(t)i(k)n(eep)g(the)h(participating)e
 (no)r(des)h(busy)g(for)g(to)r(o)g(long.)f(Blo)r(c)n(ks,)g(on)523
-3760 y(the)c(other)f(hand,)g(can)g(migrate)g(quic)n(kly)g(from)g(host)g
+4419 y(the)c(other)f(hand,)g(can)g(migrate)g(quic)n(kly)g(from)g(host)g
 (to)g(host.)h(Storing)e(a)i(large)e(\014le)h(on)g(a)523
-3860 y(single)f(host)g(also)g(fails)g(to)h(facilitate)f(distribution)h
-(of)g(load)f(for)g(do)n(wnloading)f(purp)r(oses.)523
-4046 y
-SDict begin H.S end
- 523 4046 a 523 4046 a
-SDict begin 12 H.A end
- 523 4046 a 523 4046 a
-SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.5.1) cvn H.B /DEST
-pdfmark end
- 523
-4046 a 89 x Fr(5.1)95 b(A)m(ttac)m(ks)523 4327 y FA(ECRS)34
-b(is)f(op)r(en)h(to)g(t)n(w)n(o)f(t)n(yp)r(es)h(of)f(attac)n(ks)g(from)
-h(censors.)e(The)i(most)f(ob)n(vious)g(attac)n(k)523
-4426 y(is)40 b(to)g(guess)f(k)n(eyw)n(ords)f(and)i(use)g(those)f(to)h
-(compute)g(queries)f(for)h(sp)r(eci\014c)g Ft(KBlo)l(ck)p
-FA(s.)523 4526 y(The)28 b(adv)n(ersary)c(can)j(then)h(try)f(to)h
+4519 y(single)f(host)g(also)g(fails)g(to)h(facilitate)f(distribution)h
+(of)g(load)f(for)g(do)n(wnloading)f(purp)r(oses.)648
+4625 y(ECRS)e(is)g(op)r(en)g(to)g(t)n(w)n(o)g(t)n(yp)r(es)g(of)g(attac)
+n(ks)f(from)h(censors.)f(The)h(most)g(ob)n(vious)f(attac)n(k)523
+4725 y(is)40 b(to)g(guess)f(k)n(eyw)n(ords)f(and)i(use)g(those)f(to)h
+(compute)g(queries)f(for)h(sp)r(eci\014c)g Fq(KBlo)l(ck)p
+Fx(s.)523 4825 y(The)28 b(adv)n(ersary)c(can)j(then)h(try)f(to)h
 (censor)e(these)h(queries.)g(Since)h(the)f(same)g(con)n(ten)n(t)g(can)
-523 4625 y(b)r(e)36 b(a)n(v)-5 b(ailable)33 b(under)i(man)n(y)g(k)n
+523 4924 y(b)r(e)36 b(a)n(v)-5 b(ailable)33 b(under)i(man)n(y)g(k)n
 (eyw)n(ords,)e(this)j(tec)n(hnique)f(is)g(not)g(necessary)e
-(successful.)523 4725 y(Ho)n(w)n(ev)n(er,)25 b(this)i(guessing)f(attac)
-n(k)f(do)r(es)i(pro)n(vide)f(the)h(opp)r(ortunit)n(y)f(for)g(limited)i
-(forms)e(of)523 4825 y(censorship.)g(An)h(adv)n(ersary)c(could)k
-(create)e(a)i(\\blac)n(klist")e(of)h(k)n(eyw)n(ords)e(and)j(attempt)g
-(to)523 4924 y(legally)g(force)g(op)r(erators)e(to)j(\014lter)f(matc)n
-(hing)g(queries)g(or)g(replies.)p Black Black eop end
-%%Page: 18 18
-TeXDict begin 18 17 bop 0 0 a
+(successful.)p Black Black eop end
+%%Page: 13 13
+TeXDict begin 13 12 bop 0 0 a
 SDict begin /product where{pop product(Distiller)search{pop pop pop
 version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
 closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
@@ -8742,268 +7319,141 @@
 232 a
 SDict begin H.R end
  523 232 a 523 232 a
-SDict begin [ /View [/XYZ H.V] /Dest (page.18) cvn H.B /DEST pdfmark
+SDict begin [ /View [/XYZ H.V] /Dest (page.13) cvn H.B /DEST pdfmark
 end
- 523 232 a Black Fx(18)199 b(C.)27
-b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
-Black 648 448 a FA(Instead)e(of)h(predicting)g(k)n(eyw)n(ords,)e(the)i
-(attac)n(k)n(er)e(can)i(also)f(try)h(to)f(obtain)h(the)h(exact)523
-548 y(con)n(ten)n(ts)37 b(of)h(the)g(\014le)g(\(or)f(at)h(least)g(the)g
-(exact)f(con)n(ten)n(ts)g(of)h(an)g(incriminating)f(part\).)523
-648 y(This)d(ma)n(yb)r(e)f(ac)n(hiev)n(ed)g(b)n(y)g(searc)n(hing)f(the)
-i(net)n(w)n(ork)f(for)g(certain)g(k)n(eyw)n(ords)f(and)h(then)523
-747 y(do)n(wnloading)21 b(the)j(resulting)e(con)n(ten)n(t.)h(This)g(w)n
-(a)n(y)f(the)h(attac)n(k)n(er)e(can)i(again)f(compute)h(the)523
-847 y(query)28 b(hash)h(for)f(the)i Ft(DBlo)l(ck)p FA(s)g(and)e
-Ft(IBlo)l(ck)p FA(s)j(and)d(also)g(obtain)h(the)g(encrypted)g
-Ft(DBlo)l(ck)p FA(s)523 946 y(and)h Ft(IBlo)l(ck)p FA(s)h(themselv)n
-(es.)f(Again,)f(the)i(adv)n(ersary)c(can)j(then)g(try)g(to)g(censor)f
-(this)h(data.)523 1046 y(Note)25 b(that)g(this)h(attac)n(k)e(requires)g
-(the)h(adv)n(ersary)d(to)j(obtain)g(a)g(cop)n(y)f(of)h(the)h(con)n(ten)
-n(t)e(and)523 1146 y(then)g(exercise)f(a)g(certain)g(amoun)n(t)g(of)h
-(con)n(trol)e(o)n(v)n(er)g(the)i(p)r(eers)f(in)h(the)g(net)n(w)n(ork.)e
-(As)i(users)523 1245 y(m)n(ust)e(ha)n(v)n(e)f(a)h(w)n(a)n(y)f(to)h
-(decrypt)g(the)g(\014le)g(solely)g(b)n(y)f(means)h(of)g(guessing)f(the)
-h(k)n(eyw)n(ord,)f(this)523 1345 y(attac)n(k)j(cannot)g(b)r(e)i(a)n(v)n
-(oided.)d(A)i(fault-toleran)n(t)f(p)r(eer-to-p)r(eer)g(routing)g(proto)
-r(col)f(ma)n(y)i(b)r(e)523 1445 y(able)i(to)h(route)f(the)h(con)n(ten)n
-(t)f(around)g(the)h(censoring)e(p)r(eers.)648 1546 y(If)39
+ 523 232 a Black 1036 w Fu(An)25
+b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)199
+b(13)p Black 523 448 a Fx(Ho)n(w)n(ev)n(er,)25 b(this)i(guessing)f
+(attac)n(k)f(do)r(es)i(pro)n(vide)f(the)h(opp)r(ortunit)n(y)f(for)g
+(limited)i(forms)e(of)523 548 y(censorship.)g(An)h(adv)n(ersary)c
+(could)k(create)e(a)i(\\blac)n(klist")e(of)h(k)n(eyw)n(ords)e(and)j
+(attempt)g(to)523 648 y(legally)g(force)g(op)r(erators)e(to)j(\014lter)
+f(matc)n(hing)g(queries)g(or)g(replies.)648 747 y(Instead)e(of)h
+(predicting)g(k)n(eyw)n(ords,)e(the)i(attac)n(k)n(er)e(can)i(also)f
+(try)h(to)f(obtain)h(the)h(exact)523 847 y(con)n(ten)n(ts)37
+b(of)h(the)g(\014le)g(\(or)f(at)h(least)g(the)g(exact)f(con)n(ten)n(ts)
+g(of)h(an)g(incriminating)f(part\).)523 946 y(This)d(ma)n(yb)r(e)f(ac)n
+(hiev)n(ed)g(b)n(y)g(searc)n(hing)f(the)i(net)n(w)n(ork)f(for)g
+(certain)g(k)n(eyw)n(ords)f(and)h(then)523 1046 y(do)n(wnloading)21
+b(the)j(resulting)e(con)n(ten)n(t.)h(This)g(w)n(a)n(y)f(the)h(attac)n
+(k)n(er)e(can)i(again)f(compute)h(the)523 1146 y(query)28
+b(hash)h(for)f(the)i Fq(DBlo)l(ck)p Fx(s)g(and)e Fq(IBlo)l(ck)p
+Fx(s)j(and)d(also)g(obtain)h(the)g(encrypted)g Fq(DBlo)l(ck)p
+Fx(s)523 1245 y(and)h Fq(IBlo)l(ck)p Fx(s)h(themselv)n(es.)f(Again,)f
+(the)i(adv)n(ersary)c(can)j(then)g(try)g(to)g(censor)f(this)h(data.)523
+1345 y(Note)25 b(that)g(this)h(attac)n(k)e(requires)g(the)h(adv)n
+(ersary)d(to)j(obtain)g(a)g(cop)n(y)f(of)h(the)h(con)n(ten)n(t)e(and)
+523 1445 y(then)g(exercise)f(a)g(certain)g(amoun)n(t)g(of)h(con)n(trol)
+e(o)n(v)n(er)g(the)i(p)r(eers)f(in)h(the)g(net)n(w)n(ork.)e(As)i(users)
+523 1544 y(m)n(ust)e(ha)n(v)n(e)f(a)h(w)n(a)n(y)f(to)h(decrypt)g(the)g
+(\014le)g(solely)g(b)n(y)f(means)h(of)g(guessing)f(the)h(k)n(eyw)n
+(ord,)f(this)523 1644 y(attac)n(k)j(cannot)g(b)r(e)i(a)n(v)n(oided.)d
+(A)i(fault-toleran)n(t)f(p)r(eer-to-p)r(eer)g(routing)g(proto)r(col)f
+(ma)n(y)i(b)r(e)523 1743 y(able)i(to)h(route)f(the)h(con)n(ten)n(t)f
+(around)g(the)h(censoring)e(p)r(eers.)648 1843 y(If)39
 b(suc)n(h)f(an)g(activ)n(e)g(censorship)f(attac)n(k)h(is)g(kno)n(wn)g
-(to)g(o)r(ccur)g(on)g(a)h(large)e(scale,)g(a)523 1645
+(to)g(o)r(ccur)g(on)g(a)h(large)e(scale,)g(a)523 1943
 y(p)r(ossible)26 b(defense)g(w)n(ould)g(b)r(e)h(to)f(publish)h(the)g
 (con)n(ten)n(t)e(with)i(sligh)n(t)f(alterations)f(for)h(eac)n(h)523
-1745 y(k)n(eyw)n(ord.)20 b(A)h(single)g(space)g(inserted)g(at)g(the)h
+2042 y(k)n(eyw)n(ord.)20 b(A)h(single)g(space)g(inserted)g(at)g(the)h
 (b)r(eginning)f(of)g(a)g(text-do)r(cumen)n(t)h(is)f(su\016cien)n(t)523
-1844 y(to)34 b(c)n(hange)g Ft(al)t(l)h FA(blo)r(c)n(ks)f(of)g(the)h
-(ECRS)f(enco)r(ding.)p 1 0 0 TeXcolorrgb 2148 1844 a
+2142 y(to)34 b(c)n(hange)g Fq(al)t(l)h Fx(blo)r(c)n(ks)f(of)g(the)h
+(ECRS)f(enco)r(ding.)p 1 0 0 TeXcolorrgb 2148 2142 a
 SDict begin H.S end
 
-2148 1844 a -30 x Fz(3)2185 1844 y
+2148 2142 a -30 x Fw(3)2185 2142 y
 SDict begin 12 H.L end
- 2185 1844 a 2185 1844
+ 2185 2142 a 2185 2142
 a
 SDict begin [ /Subtype /Link /Dest (Hfootnote.3) cvn /H /I /Border
 [0 0 0] /Color [1 0 0] H.B /ANN pdfmark end
- 2185 1844 a Black 34 w FA(While)h(this)g(w)n(ould)f(defeat)g(the)h
-(use)523 1944 y(of)26 b(con)n(v)n(ergen)n(t)e(encryption)i(and)g
+ 2185 2142 a Black 34 w Fx(While)h(this)g(w)n(ould)f(defeat)g(the)h
+(use)523 2242 y(of)26 b(con)n(v)n(ergen)n(t)e(encryption)i(and)g
 (increase)f(the)h(storage)e(and)i(bandwidth)h(requiremen)n(ts,)523
-2044 y(this)20 b(w)n(ould)f(mak)n(e)f(it)i(infeasible)f(for)g(the)h
+2341 y(this)20 b(w)n(ould)f(mak)n(e)f(it)i(infeasible)f(for)g(the)h
 (censor)e(to)i(e\013ectiv)n(ely)f(censor)f(all)h(of)g(the)h(v)-5
-b(arian)n(ts.)523 2143 y(Since)33 b(suc)n(h)f(a)g(p)r(o)n(w)n(erful)g
+b(arian)n(ts.)523 2441 y(Since)33 b(suc)n(h)f(a)g(p)r(o)n(w)n(erful)g
 (activ)n(e)g(attac)n(k)n(er)f(is)h(lik)n(ely)g(to)h(b)r(e)g(uncommon,)f
-(the)h Ft(default)h FA(in)523 2243 y(ECRS)27 b(is)h(to)f(use)h(con)n(v)
-n(ergen)n(t)d(encryption.)648 2344 y(Both)33 b(attac)n(ks)f(fail)i(to)f
+(the)h Fq(default)h Fx(in)523 2540 y(ECRS)27 b(is)h(to)f(use)h(con)n(v)
+n(ergen)n(t)d(encryption.)648 2640 y(Both)33 b(attac)n(ks)f(fail)i(to)f
 (enable)h(in)n(termediaries)e(to)h(exercise)g(editorial)g(con)n(trol)f
-(o)n(v)n(er)523 2444 y(con)n(ten)n(t)25 b(in)g(general.)f(While)i(p)r
+(o)n(v)n(er)523 2740 y(con)n(ten)n(t)25 b(in)g(general.)f(While)i(p)r
 (eers)f(can)g(theoretically)f(b)r(e)i(forced)e(to)h(censor)f(w)n
-(ell-kno)n(wn)523 2543 y(k)n(eyw)n(ords)d(and)h(\014les,)h(they)g(are)f
+(ell-kno)n(wn)523 2839 y(k)n(eyw)n(ords)d(and)h(\014les,)h(they)g(are)f
 (unable)h(to)g(censor)e(new)i(k)n(eyw)n(ords)e(or)h(unkno)n(wn)g(con)n
-(ten)n(t.)523 2643 y(As)38 b(small)g(c)n(hanges)f(to)h(the)h(con)n(ten)
+(ten)n(t.)523 2939 y(As)38 b(small)g(c)n(hanges)f(to)h(the)h(con)n(ten)
 n(t)f(or)f(k)n(eyw)n(ord)g(are)g(su\016cien)n(t)h(to)g(mak)n(e)g
-(detection)523 2742 y(imp)r(ossible,)28 b(these)f(t)n(yp)r(es)h(of)f
-(censorship)g(should)g(b)r(e)h(impractical.)648 2843
+(detection)523 3039 y(imp)r(ossible,)28 b(these)f(t)n(yp)r(es)h(of)f
+(censorship)g(should)g(b)r(e)h(impractical.)648 3138
 y(Another)j(serious)f(t)n(yp)r(e)i(of)g(attac)n(k)f(is)g(spamming)g
-(the)h(global)f(k)n(eyw)n(ord)f(space)g(with)523 2943
+(the)h(global)f(k)n(eyw)n(ord)f(space)g(with)523 3238
 y(useless)i(con)n(ten)n(t.)g(P)n(opular)f(k)n(eyw)n(ords)g(are)g(an)i
 (easy)e(target)h(since)h(they)f(are)g(b)n(y)g(nature)523
-3043 y(easily)k(guessed.)h(Namespaces)f(can)g(theoretically)h
-(eliminate)g(this)g(problem,)g(ho)n(w)n(ev)n(er)523 3142
-y(they)28 b(create)e(a)h(new)g(di\016cult)n(y)h(in)f(assessing)f(whic)n
-(h)h(pseudon)n(yms)f(represen)n(t)g(users)h(that)523
-3242 y(pro)n(vide)20 b(v)-5 b(aluable)20 b(con)n(ten)n(t.)h(A)g(secure)
-f(reputation)g(system,)h(lik)n(e)f(Adv)n(ogato)f([)p
-0 1 0 TeXcolorrgb 2996 3242 a
+3337 y(easily)g(guessed.)g(Directories)g(and)g(namespaces)g([)p
+0 1 0 TeXcolorrgb 2154 3337 a
 SDict begin H.S end
- 2996 3242 a 0 1 0 TeXcolorrgb
-FA(17)p 0 1 0 TeXcolorrgb 3079 3188 a
+ 2154 3337 a 0 1 0 TeXcolorrgb
+Fx(2)p 0 1 0 TeXcolorrgb 2195 3284 a
 SDict begin H.R end
- 3079 3188 a 3079
-3242 a
+ 2195 3284 a 2195
+3337 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(cite.levien03advogato) cvn H.B /ANN pdfmark end
- 3079 3242 a Black FA(],)i(ma)n(y)g(b)r(e)523 3342
-y(a)k(step)h(to)n(w)n(ards)e(a)i(tec)n(hnical)f(solution)h(for)f(this)h
-(problem.)g(A)g(p)r(ossibly)f(more)g(imp)r(ortan)n(t)523
-3441 y(c)n(hallenge)i(for)h(future)h(w)n(ork)e(is)h(making)g(suc)n(h)g
-(complex)g(solutions)g(easily)f(accessible)h(for)523
-3541 y(the)g(a)n(v)n(erage)d(user.)523 3712 y
+(cite.ecrstechreport) cvn H.B /ANN pdfmark end
+ 2195 3337 a Black Fx(])h(are)f(additional)g(constructs)g(whic)n
+(h)523 3437 y(can)k(help)h(with)h(this)f(problem,)f(esp)r(ecially)g(in)
+h(com)n(bination)f(with)i(secure)d(reputation)523 3537
+y(systems,)27 b(suc)n(h)g(as)g(Adv)n(ogato)f([)p 0 1 0
+TeXcolorrgb 1542 3537 a
 SDict begin H.S end
- 523 3712
-a 523 3712 a
-SDict begin 12 H.A end
- 523 3712 a 523 3712 a
-SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.5.2) cvn H.B /DEST
-pdfmark end
- 523 3712 a 85 x Fr(5.2)95
-b Fj(KBlo)-5 b(cks)32 b Fr(or)g(triple-hash)523 3969
-y FA(The)c(triple-hash)f(that)h(w)n(as)f(used)g(instead)h(of)g
-Ft(KBlo)l(ck)p FA(s)g(in)g(our)f(earlier)g(w)n(ork)54
-b([)p 0 1 0 TeXcolorrgb 3093 3969 a
-SDict begin H.S end
- 3093 3969 a 0 1 0
-TeXcolorrgb FA(2)p 0 1 0 TeXcolorrgb 3134 3916 a
+ 1542 3537 a 0 1 0 TeXcolorrgb
+Fx(15)p 0 1 0 TeXcolorrgb 1625 3483 a
 SDict begin H.R end
- 3134
-3916 a 3134 3969 a
+ 1625 3483 a 1625
+3537 a
 SDict begin [ /Color [0 1 0] /H /I /Border [0 0 0] /Subtype /Link /Dest
-(cite.esed) cvn H.B /ANN pdfmark end
- 3134 3969 a Black FA(])28 b(allo)n(ws)523
-4069 y(for)19 b(an)g(attac)n(k)g(b)n(y)g(an)g(activ)n(e,)g
-(participating)g(adv)n(ersary)-7 b(.)17 b(The)i(follo)n(wing)f
-(paragraphs)f(\014rst)523 4169 y(brie\015y)28 b(presen)n(t)g(the)h
-(original)e(sc)n(heme)h(and)h(discuss)f(the)h(attac)n(k,)f(and)g(then)h
-(compare)f(it)523 4268 y(with)g(the)g Ft(KBlo)l(ck)h
-FA(approac)n(h)d(tak)n(en)h(in)g(this)h(pap)r(er.)648
-4369 y(Let)35 b(an)g Ft(RBlo)l(ck)h FA(b)r(e)g(a)e(new)i(kind)f(of)g
-(blo)r(c)n(k)g(that)g(also)g(con)n(tains)f(the)h(metadata)g(of)523
-4469 y(a)c(\014le)g(\(including)h(the)g(top)f(CHK)g(data\).)g(The)g
-(only)g(di\013erence)g(b)r(et)n(w)n(een)g Ft(RBlo)l(ck)p
-FA(s)h(and)523 4569 y Ft(KBlo)l(ck)p FA(s)c(is)f(that)h
-Ft(RBlo)l(ck)p FA(s)f(are)f(encrypted)h(and)g(requested)g(using)g(the)g
-(follo)n(wing)f(triple-)523 4668 y(hash)35 b(sc)n(heme.)f(F)-7
-b(or)35 b(eac)n(h)f(k)n(eyw)n(ord)g Fs(k)s FA(,)h(the)g
-Ft(RBlo)l(ck)h Fs(R)g FA(is)f(encrypted)g(with)h Fs(H)7
-b FA(\()p Fs(k)s FA(\))35 b(and)p Black 523 4748 473
-4 v 546 4801 a Fy(3)p 0 TeXcolorgray 606 4742 a
+(cite.levien03advogato) cvn H.B /ANN pdfmark end
+ 1625 3537 a Black Fx(].)i(Ho)n(w)n(ev)n(er,)e(these)h(tec)n
+(hnical)h(solutions)e(lea)n(v)n(e)h(an)g(im-)523 3636
+y(p)r(ortan)n(t)c(c)n(hallenge)e(for)i(future)g(w)n(ork,)f(whic)n(h)h
+(is)g(making)f(suc)n(h)h(complex)g(solutions)f(easily)523
+3736 y(accessible)27 b(for)g(the)h(a)n(v)n(erage)c(user.)523
+3893 y
 SDict begin H.S end
- 606 4742
-a 0 TeXcolorgray 0 TeXcolorgray 606 4742 a
-SDict begin H.R end
- 606 4742 a
-606 4742 a
-SDict begin [ /View [/XYZ H.V] /Dest (Hfootnote.3) cvn H.B /DEST pdfmark
+ 523 3893 a 523 3893 a
+SDict begin 12 H.A end
+ 523 3893 a 523 3893 a
+SDict begin [ /View [/XYZ H.V] /Dest (section.1.5) cvn H.B /DEST pdfmark
 end
- 606 4742 a Black 91 x Fx(Note)27 b(that)f(only)g(op)r
-(erations)i(causing)g(global)g(shifts)f(in)g(the)f(data)h(ha)n(v)n(e)f
-(this)h(prop)r(ert)n(y)-6 b(.)25 b(One)606 4924 y(single-c)n(haracter)d
-(replacemen)n(t)g(c)n(hanges)f(only)g(one)g(ro)r(ot-to-leaf)i(path)d
-(in)h(the)g(enco)r(ding)g(tree.)p Black Black Black eop
-end
-%%Page: 19 19
-TeXDict begin 19 18 bop 0 0 a
-SDict begin /product where{pop product(Distiller)search{pop pop pop
-version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
-closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
-grestore}if}{pop}ifelse}{pop}ifelse}if end
- 0 0 a Black 0 TeXcolorgray
-523 232 a
+ 523
+3893 a 100 x Fr(5)112 b(Conclusion)523 4184 y Fx(This)39
+b(pap)r(er)f(has)h(describ)r(ed)g(an)f(enco)r(ding)h(sc)n(heme)f(whic)n
+(h)h(hides)g(shared)f(data)g(from)523 4284 y(in)n(termediaries.)29
+b(The)h(enco)r(ding)g(uses)g(con)n(v)n(ergen)n(t)e(encryption,)i(allo)n
+(ws)f(sw)n(arming)f(and)523 4384 y(pro)r(duces)34 b(a)g(ciphertext)h
+(that)g(is)f(not)h(signi\014can)n(tly)f(larger)f(than)h(the)h(plain)n
+(text.)g(Indi-)523 4483 y(vidual)26 b(blo)r(c)n(ks)e(of)i(the)g
+(ciphertext)g(can)f(b)r(e)h(generated)f(from)g(plain)n(text)h(without)g
+(reading)523 4583 y(unrelated)38 b(parts)h(of)f(the)h(original.)f
+(While)h(dictionary)f(attac)n(ks)g(on)g(the)h(k)n(eyw)n(ords)e(or)523
+4682 y(kno)n(wn)24 b(plain)n(text)g(attac)n(ks)g(on)g(the)h(con)n(ten)n
+(t)f(are)g(still)h(p)r(ossible,)f(they)h(are)e(harmless)g(with)p
+Black 523 4748 473 4 v 546 4801 a Fv(3)p 0 TeXcolorgray
+606 4742 a
 SDict begin H.S end
- 523 232 a 0 TeXcolorgray 0 TeXcolorgray 523
-232 a
+ 606 4742 a 0 TeXcolorgray 0 TeXcolorgray 606
+4742 a
 SDict begin H.R end
- 523 232 a 523 232 a
-SDict begin [ /View [/XYZ H.V] /Dest (page.19) cvn H.B /DEST pdfmark
+ 606 4742 a 606 4742 a
+SDict begin [ /View [/XYZ H.V] /Dest (Hfootnote.3) cvn H.B /DEST pdfmark
 end
- 523 232 a Black 1036 w Fx(An)25
-b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)199
-b(19)p Black 523 448 a FA(stored)34 b(as)f(the)i(pair)f
-Fb(f)p Fs(H)7 b FA(\()p Fs(H)g FA(\()p Fs(k)s FA(\)\))p
-Fs(;)14 b(E)1682 463 y Fi(H)t Fz(\()p Fi(k)q Fz(\))1834
-448 y FA(\()p Fs(R)q FA(\))p Fb(g)p FA(.)34 b(Using)g(the)h(k)n(eyw)n
-(ord)e(as)g(the)i(source)f(for)523 548 y(the)28 b(k)n(ey)f(allo)n(ws)f
-(the)i(receiv)n(er)e(of)i(the)g(\014le)f(to)h(obtain)f(the)h(k)n(ey)f
-(b)n(y)g(guessing.)648 649 y(Querying)39 b(for)h(an)g
-Ft(RBlo)l(ck)h FA(is)f Fr(not)h FA(straigh)n(tforw)n(ard.)c(The)k
-(problem)f(is)g(that)h(the)523 749 y(in)n(tuitiv)n(e)32
-b(c)n(hoice)f(for)h(a)g(query)f(hash,)h Fs(H)7 b FA(\()p
-Fs(H)g FA(\()p Fs(k)s FA(\)\))32 b(do)r(es)g(not)g(giv)n(e)f(in)n
-(termediaries)g(a)g(w)n(a)n(y)523 849 y(to)37 b(v)n(erify)f(that)h(the)
-h(\(encrypted\))f(resp)r(onse)f(is)h(correct.)e(Instead)i(of)g(using)f
-Fs(H)7 b FA(\()p Fs(H)g FA(\()p Fs(k)s FA(\)\),)523 948
-y(the)27 b(initiator)e(sends)h(the)h(so-called)d Ft(triple-hash)k
-FA(query)e Fs(H)7 b FA(\()p Fs(H)g FA(\()p Fs(H)g FA(\()p
-Fs(k)s FA(\)\)\).)27 b(A)f(p)r(eer)g(that)h(has)523 1048
-y(stored)32 b Fs(E)839 1063 y Fi(H)t Fz(\()p Fi(k)q Fz(\))991
-1048 y FA(\()p Fs(R)q FA(\))i(under)f Fs(H)7 b FA(\()p
-Fs(H)g FA(\()p Fs(k)s FA(\)\))34 b(can)f(matc)n(h)g(the)g(query)g(hash)
-g(with)g(the)h(resp)r(onse)523 1148 y(and)39 b(send)g(bac)n(k)g(the)g
-(pair)g Fb(f)p Fs(H)7 b FA(\()p Fs(H)g FA(\()p Fs(k)s
-FA(\)\))p Fs(;)14 b(E)1906 1163 y Fi(H)t Fz(\()p Fi(k)q
-Fz(\))2057 1148 y FA(\()p Fs(R)q FA(\))p Fb(g)p FA(.)40
-b(In)n(termediaries)d(can)i(v)n(erify)g(that)523 1247
-y(the)25 b(pro)r(of)f(of)g(authen)n(ticit)n(y)-7 b(,)25
-b Fs(H)7 b FA(\()p Fs(H)g FA(\()p Fs(k)s FA(\)\),)25
-b(hashes)f(to)h(the)g(query)e Fs(H)7 b FA(\()p Fs(H)g
-FA(\()p Fs(H)g FA(\()p Fs(k)s FA(\)\)\).)26 b(Malicious)523
-1347 y(p)r(eers)31 b(cannot)f(construct)h(the)h(pro)r(of)e
-Fs(H)7 b FA(\()p Fs(H)g FA(\()p Fs(k)s FA(\)\))32 b(without)f(guessing)
-f Fs(k)k FA(or)d(in)n(v)n(erting)f(the)523 1446 y(hash)d(function.)648
-1548 y(The)41 b(problem)g(with)h(the)f(triple-hash)g(is)g(that)h(an)f
-(adv)n(ersary)d(that)k(is)f(routing)f(a)523 1648 y(resp)r(onse)35
-b(to)h(a)g(triple-hash)f(request)h(can)g(substitute)h(the)f(encrypted)g
-(con)n(ten)n(t)g(in)h(the)523 1747 y Fb(f)p Fs(H)7 b
-FA(\()p Fs(H)g FA(\()p Fs(k)s FA(\)\))p Fs(;)14 b(E)989
-1762 y Fi(H)t Fz(\()p Fi(k)q Fz(\))1141 1747 y FA(\()p
-Fs(C)6 b(H)h(K)q(;)14 b(siz)t(e)p FA(\))p Fb(g)26 b FA(resp)r(onse)h
-(while)h(main)n(taining)g(the)g Fs(H)7 b FA(\()p Fs(H)g
-FA(\()p Fs(k)s FA(\)\))29 b(tok)n(en.)523 1847 y(The)g(resulting)f
-(reply)g Fb(f)p Fs(H)7 b FA(\()p Fs(H)g FA(\()p Fs(k)s
-FA(\)\))p Fs(;)14 b(X)7 b Fb(g)27 b FA(still)i(lo)r(oks)e(lik)n(e)i(a)f
-(v)-5 b(alid)28 b(resp)r(onse)g(to)g(the)h(triple-)523
-1946 y(hash)h(query)g Fs(H)7 b FA(\()p Fs(H)g FA(\()p
-Fs(H)g FA(\()p Fs(k)s FA(\)\)\).)32 b(The)f(triple-hash)f(th)n(us)g(do)
-r(es)h(not)f(protect)h(against)e(suc)n(h)h(a)523 2046
-y(substitution)22 b(attac)n(k)f(b)n(y)h(an)g(in)n(termediary)-7
-b(.)20 b(The)i(impact)g(of)g(the)g(attac)n(k)f(is)h(suc)n(h)f(that)i
-(the)523 2146 y(net)n(w)n(ork)i(w)n(ould)h(propagate)e(and)i(p)r
-(ossibly)g(cac)n(he)f(the)i(in)n(v)-5 b(alid)26 b(replies.)g(The)g
-(attac)n(k)g(will)523 2245 y(not)i(prev)n(en)n(t)f(the)h(spread)f(of)h
-(v)-5 b(alid)28 b(replies)f(through)h(other)f(routes)g(in)h(the)h
-(system)e(since)523 2345 y(m)n(ultiple)e(results)f(to)g(the)g(same)g
-(query)f(are)h(p)r(ossible.)g(F)-7 b(urthermore,)23 b(an)n(y)g(user)h
-(searc)n(hing)523 2445 y(for)i Fs(K)32 b FA(will)27 b(not)f(see)h(the)f
-(in)n(v)-5 b(alid)27 b(results.)f(The)h(reason)e(is)h(that)h(the)g
-(attempt)g(to)f(decrypt)523 2544 y Fs(X)34 b FA(with)29
-b Fs(H)7 b FA(\()p Fs(K)f FA(\))28 b(will)g(\(with)h(high)e(probabilit)
-n(y\))h(result)f(in)h(a)g(malformed)f Ft(RBlo)l(ck)p
-FA(.)i(Th)n(us,)523 2644 y(the)21 b(end-user)f(is)h(still)g(protected)f
-(from)h(this)g(t)n(yp)r(e)g(of)f(spam.)h(Nev)n(ertheless,)f(the)h(adv)n
-(ersary)523 2743 y(can)29 b(abuse)g(net)n(w)n(ork)f(resources)f(in)i
-(the)h(form)f(of)g(transmission)f(and)i(cac)n(hing)e(of)h(in)n(v)-5
-b(alid)523 2843 y(data.)648 2945 y(Replacing)26 b(the)h(triple-hash)g
-(with)g Ft(KBlo)l(ck)p FA(s)h(for)f(ECRS)f(comes)h(at)g(a)f(relativ)n
-(ely)g(high)523 3044 y(price.)40 b(Where)g(the)h(triple-hash)e(only)h
-(requires)f(a)g(simple)i(hash)f(op)r(eration)f(to)h(v)n(erify)523
-3144 y(replies,)22 b Ft(KBlo)l(ck)p FA(s)i(need)e(to)h(p)r(erform)f(a)g
-(public)i(k)n(ey)d(op)r(eration.)h(W)-7 b(orse,)22 b(when)h(publishing)
-523 3243 y(con)n(ten)n(t)f(or)f(searc)n(hing,)g(the)h(triple-hash)g(sc)
-n(heme)g(again)f(only)g(requires)g(a)h(few)h(quic)n(k)e(hash)523
-3343 y(op)r(erations)e(to)h(compute)h(the)g(query)e(or)h(the)g(con)n
-(ten)n(t.)g(With)i Ft(KBlo)l(ck)p FA(s,)f(the)g(cost)f(increases)523
-3443 y(to)30 b(additionally)g(generating)e(a)i(public-priv)-5
-b(ate)30 b(k)n(ey)f(pair)h(in)g(addition)g(to)g(a)g(public)h(k)n(ey)523
-3542 y(op)r(eration)c(and)g(hash)g(op)r(erations.)648
-3644 y(Both)42 b Ft(KBlo)l(cks)h FA(and)f(the)h(triple-hash)e(are)h
-(vulnerable)f(to)h(the)h(guessing)e(attac)n(k.)523 3743
-y(Guessing)d(is)h(sligh)n(tly)f(easier)f(for)h(the)h(triple-hash)f
-(since)g(the)h(computation)g(for)f(eac)n(h)523 3843 y(guess)21
-b(is)h(m)n(uc)n(h)f(c)n(heap)r(er.)g(Ov)n(erall,)f Ft(KBlo)l(cks)j
-FA(w)n(ork)e(b)r(etter)h(than)g(the)g(triple-hash)f(against)523
-3943 y(adv)n(ersaries)f(that)j(indiscriminately)g(attempt)h(to)e(abuse)
-h(net)n(w)n(ork)e(resources,)g(but)j(at)f(the)523 4042
-y(exp)r(ense)j(of)g(higher)f(CPU)g(utilization)h(ev)n(en)g(in)g(the)g
-(absence)f(of)h(an)g(attac)n(k.)f(Th)n(us,)g(using)523
-4142 y(the)36 b(triple-hash)e(sc)n(heme)g(ma)n(y)h(still)g(b)r(e)h
-(reasonable)d(in)i(net)n(w)n(orks)f(with)h(limited)h(CPU)523
-4242 y(p)r(o)n(w)n(er)26 b(or)h(less)g(stringen)n(t)g(securit)n(y)g
-(requiremen)n(ts.)523 4415 y
-SDict begin H.S end
- 523 4415 a 523 4415 a
-SDict begin 12 H.A end
- 523
-4415 a 523 4415 a
-SDict begin [ /View [/XYZ H.V] /Dest (section.1.6) cvn H.B /DEST pdfmark
-end
- 523 4415 a 102 x Fu(6)112 b(Conclusion)523
-4725 y FA(This)39 b(pap)r(er)f(has)h(describ)r(ed)g(an)f(enco)r(ding)h
-(sc)n(heme)f(whic)n(h)h(hides)g(shared)f(data)g(from)523
-4825 y(in)n(termediaries.)29 b(The)h(enco)r(ding)g(uses)g(con)n(v)n
-(ergen)n(t)e(encryption,)i(allo)n(ws)f(sw)n(arming)f(and)523
-4924 y(pro)r(duces)34 b(a)g(ciphertext)h(that)g(is)f(not)h
-(signi\014can)n(tly)f(larger)f(than)h(the)h(plain)n(text.)g(Indi-)p
-Black Black eop end
-%%Page: 20 20
-TeXDict begin 20 19 bop 0 0 a
+ 606 4742 a Black 91 x Fu(Note)k(that)f
+(only)g(op)r(erations)i(causing)g(global)g(shifts)f(in)g(the)f(data)h
+(ha)n(v)n(e)f(this)h(prop)r(ert)n(y)-6 b(.)25 b(One)606
+4924 y(single-c)n(haracter)d(replacemen)n(t)g(c)n(hanges)f(only)g(one)g
+(ro)r(ot-to-leaf)i(path)d(in)h(the)g(enco)r(ding)g(tree.)p
+Black Black Black eop end
+%%Page: 14 14
+TeXDict begin 14 13 bop 0 0 a
 SDict begin /product where{pop product(Distiller)search{pop pop pop
 version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
 closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
@@ -9015,200 +7465,213 @@
 232 a
 SDict begin H.R end
  523 232 a 523 232 a
-SDict begin [ /View [/XYZ H.V] /Dest (page.20) cvn H.B /DEST pdfmark
+SDict begin [ /View [/XYZ H.V] /Dest (page.14) cvn H.B /DEST pdfmark
 end
- 523 232 a Black Fx(20)199 b(C.)27
+ 523 232 a Black Fu(14)199 b(C.)27
 b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
-Black 523 448 a FA(vidual)f(blo)r(c)n(ks)e(of)i(the)g(ciphertext)g(can)
-f(b)r(e)h(generated)f(from)g(plain)n(text)h(without)g(reading)523
-548 y(unrelated)38 b(parts)h(of)f(the)h(original.)f(While)h(dictionary)
-f(attac)n(ks)g(on)g(the)h(k)n(eyw)n(ords)e(or)523 648
-y(kno)n(wn)24 b(plain)n(text)g(attac)n(ks)g(on)g(the)h(con)n(ten)n(t)f
-(are)g(still)h(p)r(ossible,)f(they)h(are)e(harmless)g(with)523
-747 y(resp)r(ect)k(to)h(the)g(goal)e(of)i(deniabilit)n(y)g(for)f(in)n
-(termediaries.)f(The)i(basic)f(enco)r(ding)g(sc)n(heme)523
-847 y(can)21 b(b)r(e)h(extended)g(with)g(directories)e(and)i
+Black 523 448 a Fx(resp)r(ect)g(to)h(the)g(goal)e(of)i(deniabilit)n(y)g
+(for)f(in)n(termediaries.)f(The)i(basic)f(enco)r(ding)g(sc)n(heme)523
+548 y(can)21 b(b)r(e)h(extended)g(with)g(directories)e(and)i
 (namespaces.)e(Namespaces)g(allo)n(w)h(for)g(\014les)g(and)523
-946 y(directories)k(to)h(b)r(e)h(up)r(dated.)g(Using)f
-Fs(K)6 b FA(-deterministic)26 b(public-priv)-5 b(ate)26
-b(k)n(eys)f(for)h(signing)523 1046 y(con)n(ten)n(t)h(it)h(is)g(p)r
+648 y(directories)k(to)h(b)r(e)h(up)r(dated.)g(Using)f
+Fp(K)6 b Fx(-deterministic)26 b(public-priv)-5 b(ate)26
+b(k)n(eys)f(for)h(signing)523 747 y(con)n(ten)n(t)h(it)h(is)g(p)r
 (ossible)f(to)g(v)n(erify)g(searc)n(h)f(results)h(in)h(a)f(global)g(k)n
-(eyw)n(ord)f(space.)648 1147 y(ECRS)35 b(is)g(implemen)n(ted)h(as)f(a)g
-(part)g(of)h Fa(gnu)p FA(net,)g(a)f(secure)g(platform)g(for)g(p)r
-(eer-to-)523 1247 y(p)r(eer)i(net)n(w)n(orking.)f(In)i
-Fa(gnu)p FA(net,)g(ECRS)f(w)n(orks)f(to)n(w)n(ards)g(implemen)n(ting)i
-(anon)n(ymous,)523 1347 y(censorship-resistan)n(t)31
-b(\014le-sharing.)h Fa(gnu)p FA(net)i(is)g(free)f(soft)n(w)n(are)f(and)
-i(part)f(of)g(the)h(GNU)523 1446 y(pro)5 b(ject.)25 b(The)g
-Fa(gnu)p FA(net)h(co)r(de)f(is)h(appro)n(ximately)d(100,000)g(lines)i
-(of)h(C)f(co)r(de.)g(ECRS)h(itself)523 1546 y(is)20 b(implemen)n(ted)h
+(eyw)n(ord)f(space.)648 847 y(ECRS)35 b(is)g(implemen)n(ted)h(as)f(a)g
+(part)g(of)h Fa(gnu)p Fx(net,)g(a)f(secure)g(platform)g(for)g(p)r
+(eer-to-)523 946 y(p)r(eer)i(net)n(w)n(orking.)f(In)i
+Fa(gnu)p Fx(net,)g(ECRS)f(w)n(orks)f(to)n(w)n(ards)g(implemen)n(ting)i
+(anon)n(ymous,)523 1046 y(censorship-resistan)n(t)31
+b(\014le-sharing.)h Fa(gnu)p Fx(net)i(is)g(free)f(soft)n(w)n(are)f(and)
+i(part)f(of)g(the)h(GNU)523 1146 y(pro)5 b(ject.)25 b(The)g
+Fa(gnu)p Fx(net)h(co)r(de)f(is)h(appro)n(ximately)d(100,000)g(lines)i
+(of)h(C)f(co)r(de.)g(ECRS)h(itself)523 1245 y(is)20 b(implemen)n(ted)h
 (in)g(ab)r(out)f(8,000)f(LOC.)h(The)g(co)r(de)g(is)h(freely)f(a)n(v)-5
-b(ailable)19 b(from)h(the)h Fa(gnu)p FA(net)523 1646
-y(w)n(ebpage)p 1 0 0 TeXcolorrgb 831 1646 a
+b(ailable)19 b(from)h(the)h Fa(gnu)p Fx(net)523 1345
+y(w)n(ebpage)p 1 0 0 TeXcolorrgb 831 1345 a
 SDict begin H.S end
- 831 1646
-a -31 x Fz(4)867 1646 y
+ 831 1345
+a -30 x Fw(4)867 1345 y
 SDict begin 12 H.L end
- 867 1646 a 867 1646 a
+ 867 1345 a 867 1345 a
 SDict begin [ /Subtype /Link /Dest (Hfootnote.4) cvn /H /I /Border
 [0 0 0] /Color [1 0 0] H.B /ANN pdfmark end
- 867 1646
-a Black FA(.)523 1903 y Fr(Ac)m(kno)m(wledgemen)m(ts)523
-1993 y
+ 867 1345
+a Black Fx(.)523 1579 y Fo(Ac)m(kno)m(wledgemen)m(ts)523
+1646 y
 SDict begin H.S end
- 523 1993 a 523 1993 a
+ 523 1646 a 523 1646 a
 SDict begin 12 H.A end
- 523 1993 a 523 1993 a
+ 523 1646 a 523 1646 a
 SDict begin [ /View [/XYZ H.V] /Dest (section*.1) cvn H.B /DEST pdfmark
 end
  523
-1993 a 85 x FA(The)k(authors)f(thank)h(Roger)f(Dingledine)h(for)g
+1646 a 84 x Fx(The)k(authors)f(thank)h(Roger)f(Dingledine)h(for)g
 (helpful)g(commen)n(ts)g(on)g(an)g(earlier)e(draft)i(of)523
-2178 y(this)j(pap)r(er.)523 2452 y Fu(References)523
-2559 y
+1829 y(this)j(pap)r(er.)523 2080 y Fr(References)523
+2164 y
 SDict begin H.S end
- 523 2559 a 523 2559 a
+ 523 2164 a 523 2164 a
 SDict begin 11 H.A end
- 523 2559 a 523 2559 a
+ 523 2164 a 523 2164 a
 SDict begin [ /View [/XYZ H.V] /Dest (section*.2) cvn H.B /DEST pdfmark
 end
  523
-2559 a 523 2559 a
+2164 a 523 2164 a
 SDict begin H.S end
- 523 2559 a 523 2559 a
+ 523 2164 a 523 2164 a
 SDict begin 11 H.A end
- 523 2559 a 523
-2559 a
+ 523 2164 a 523
+2164 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.anderson96eternity) cvn
 H.B /DEST pdfmark end
- 523 2559 a Black 561 2652 a Fx(1.)p Black 43 w(Ross)e(Anderson.)
-34 b(The)26 b(Eternit)n(y)f(Service.)34 b(In)25 b Fq(Pr)l(o)l(c)l(e)l
-(e)l(dings)30 b(of)d(Pr)l(ago)l(crypt)j(1996)p Fx(,)d(1996.)523
-2667 y
+ 523 2164 a Black 561 2252 a Fu(1.)p Black 43 w(Ross)e(Anderson.)
+34 b(The)26 b(Eternit)n(y)f(Service.)34 b(In)25 b Fn(Pr)l(o)l(c)l(e)l
+(e)l(dings)30 b(of)d(Pr)l(ago)l(crypt)j(1996)p Fu(,)d(1996.)523
+2267 y
 SDict begin H.S end
- 523 2667 a 523 2667 a
+ 523 2267 a 523 2267 a
 SDict begin 11 H.A end
- 523 2667 a 523 2667 a
-SDict begin [ /View [/XYZ H.V] /Dest (cite.esed) cvn H.B /DEST pdfmark
-end
+ 523 2267 a 523 2267 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.ecrstechreport) cvn H.B
+/DEST pdfmark end
  523
-2667 a Black 561 2745 a Fx(2.)p Black 43 w(Krista)34
-b(Bennett,)g(Christian)h(Grotho\013,)g(Tzv)n(etan)f(Horozo)n(v,)g(and)g
-(Ioana)h(P)n(atrascu.)60 b(Ef-)663 2836 y(\014cien)n(t)31
-b(Sharing)h(of)h(Encrypted)e(Data.)54 b(In)31 b Fq(ASCIP)p
-Fx(,)h(v)n(olume)g(2384)h(of)g Fq(L)l(e)l(ctur)l(e)j(Notes)e(in)663
-2927 y(Computer)28 b(Scienc)l(e)p Fx(,)f(pages)g(107{120.)i(Springer-V)
--6 b(erlag)25 b(Inc.,)h(2002.)523 2942 y
+2267 a Black 561 2339 a Fu(2.)p Black 43 w(Krista)35
+b(Bennett,)g(Christian)g(Grotho\013,)h(Tzv)n(etan)f(Horozo)n(v,)g(and)f
+(J.)i(T.)f(Lindgren.)62 b(An)663 2431 y(Enco)r(ding)30
+b(for)h(Censorship-Resistan)n(t)g(Sharing.)48 b(T)-6
+b(ec)n(hnical)31 b(rep)r(ort,)g(2003.)49 b(a)n(v)l(ailable)32
+b(at)663 2522 y(h)n(ttp://gn)n(unet.org/do)n(wnload/ecrs.ps.)523
+2541 y
 SDict begin H.S end
- 523 2942 a 523
-2942 a
+ 523 2541 a 523 2541 a
 SDict begin 11 H.A end
- 523 2942 a 523 2942 a
-SDict begin [ /View [/XYZ H.V] /Dest (cite.bloom) cvn H.B /DEST pdfmark
+ 523 2541 a 523 2541 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.esed) cvn H.B /DEST pdfmark
 end
- 523 2942 a Black 561 3020
-a Fx(3.)p Black 43 w(Burton)g(Blo)r(om.)37 b(Space/time)26
-b(trade-o\013s)g(in)g(hash)g(co)r(ding)h(with)f(allo)n(w)n(able)i
-(errors.)37 b Fq(Com-)663 3112 y(munic)l(ations)28 b(of)f(the)i(A)n(CM)
-p Fx(,)c(13\(7\):422{426,)30 b(1970.)523 3130 y
+ 523
+2541 a Black 561 2610 a Fu(3.)p Black 43 w(Krista)i(Bennett,)g
+(Christian)h(Grotho\013,)g(Tzv)n(etan)f(Horozo)n(v,)g(and)g(Ioana)h(P)n
+(atrascu.)60 b(Ef-)663 2701 y(\014cien)n(t)31 b(Sharing)h(of)h
+(Encrypted)e(Data.)54 b(In)31 b Fn(ASCIP)p Fu(,)h(v)n(olume)g(2384)h
+(of)g Fn(L)l(e)l(ctur)l(e)j(Notes)e(in)663 2792 y(Computer)28
+b(Scienc)l(e)p Fu(,)f(pages)g(107{120.)i(Springer-V)-6
+b(erlag)25 b(Inc.,)h(2002.)523 2807 y
 SDict begin H.S end
- 523 3130
-a 523 3130 a
+ 523 2807 a 523
+2807 a
 SDict begin 11 H.A end
- 523 3130 a 523 3130 a
+ 523 2807 a 523 2807 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.chen99prototype) cvn H.B
 /DEST pdfmark end
- 523 3130 a Black 561
-3205 a Fx(4.)p Black 43 w(Y)-6 b(uan)19 b(Chen,)i(Jan)h(Edler,)f
-(Andrew)g(Goldb)r(erg,)h(Allan)f(Gottlieb,)h(Sumeet)e(Sobti,)h(and)g(P)
-n(eter)663 3296 y(Yianilos.)39 b(A)26 b(protot)n(yp)r(e)g(implemen)n
-(tation)h(of)h(arc)n(hiv)l(al)f(in)n(termemory)-6 b(.)37
-b(In)26 b Fq(Pr)l(o)l(c)l(e)l(e)l(dings)31 b(of)663 3387
-y(the)d(F)-6 b(ourth)29 b(A)n(CM)e(International)i(Confer)l(enc)l(e)g
-(on)f(Digital)f(Libr)l(aries)p Fx(,)g(1999.)523 3402
-y
+ 523 2807 a Black 561 2880
+a Fu(4.)p Black 43 w(Y)-6 b(uan)19 b(Chen,)i(Jan)h(Edler,)f(Andrew)g
+(Goldb)r(erg,)h(Allan)f(Gottlieb,)h(Sumeet)e(Sobti,)h(and)g(P)n(eter)
+663 2971 y(Yianilos.)39 b(A)26 b(protot)n(yp)r(e)g(implemen)n(tation)h
+(of)h(arc)n(hiv)l(al)f(in)n(termemory)-6 b(.)37 b(In)26
+b Fn(Pr)l(o)l(c)l(e)l(e)l(dings)31 b(of)663 3063 y(the)d(F)-6
+b(ourth)29 b(A)n(CM)e(International)i(Confer)l(enc)l(e)g(on)f(Digital)f
+(Libr)l(aries)p Fu(,)g(1999.)523 3078 y
 SDict begin H.S end
- 523 3402 a 523 3402 a
+ 523 3078 a 523
+3078 a
 SDict begin 11 H.A end
- 523 3402 a 523 3402 a
+ 523 3078 a 523 3078 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.clark99distributed) cvn
 H.B /DEST pdfmark end
- 523 3402
-a Black 561 3480 a Fx(5.)p Black 43 w(Ian)h(Clark)n(e,)h(Osk)l(ar)g
-(Sandb)r(erg,)f(Brandon)h(Wiley)-6 b(,)28 b(and)g(Theo)r(dorew)i(W.)f
-(Hong.)43 b(F)-6 b(reenet:)663 3572 y(A)35 b(distributed)f(anon)n
-(ymous)i(information)g(storage)h(and)e(retriev)l(al)h(system.)63
-b(In)35 b(Hannes)663 3663 y(F)-6 b(ederrath,)28 b(editor,)g
-Fq(Designing)i(privacy)h(enhancing)f(te)l(chnolo)l(gies:)h
-(International)g(Work-)663 3754 y(shop)38 b(on)f(Design)g(Issues)h(in)f
+ 523 3078 a Black 561 3150
+a Fu(5.)p Black 43 w(Ian)h(Clark)n(e,)h(Osk)l(ar)g(Sandb)r(erg,)f
+(Brandon)h(Wiley)-6 b(,)28 b(and)g(Theo)r(dorew)i(W.)f(Hong.)43
+b(F)-6 b(reenet:)663 3241 y(A)35 b(distributed)f(anon)n(ymous)i
+(information)g(storage)h(and)e(retriev)l(al)h(system.)63
+b(In)35 b(Hannes)663 3333 y(F)-6 b(ederrath,)28 b(editor,)g
+Fn(Designing)i(privacy)h(enhancing)f(te)l(chnolo)l(gies:)h
+(International)g(Work-)663 3424 y(shop)38 b(on)f(Design)g(Issues)h(in)f
 (A)n(nonymity)g(and)h(Unobservability,)g(Berkeley,)g(CA,)e(USA,)663
-3846 y(July)25 b(25{26,)g(2000:)g(pr)l(o)l(c)l(e)l(e)l(dings)p
-Fx(,)h(v)n(olume)c(2009)j(of)e Fq(L)l(e)l(ctur)l(e)k(Notes)f(in)f
-(Computer)h(Scienc)l(e)p Fx(.)663 3937 y(Springer-V)-6
-b(erlag)25 b(Inc.,)h(2001.)523 3952 y
+3515 y(July)25 b(25{26,)g(2000:)g(pr)l(o)l(c)l(e)l(e)l(dings)p
+Fu(,)h(v)n(olume)c(2009)j(of)e Fn(L)l(e)l(ctur)l(e)k(Notes)f(in)f
+(Computer)h(Scienc)l(e)p Fu(.)663 3607 y(Springer-V)-6
+b(erlag)25 b(Inc.,)h(2001.)523 3622 y
 SDict begin H.S end
- 523 3952 a 523
-3952 a
+ 523 3622 a 523
+3622 a
 SDict begin 11 H.A end
- 523 3952 a 523 3952 a
+ 523 3622 a 523 3622 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.cohen02replication) cvn
 H.B /DEST pdfmark end
- 523 3952 a Black 561 4030
-a Fx(6.)p Black 43 w(Edith)31 b(Cohen)g(and)g(Scott)g(Shenk)n(er.)50
+ 523 3622 a Black 561 3694
+a Fu(6.)p Black 43 w(Edith)31 b(Cohen)g(and)g(Scott)g(Shenk)n(er.)50
 b(Replication)31 b(strategies)i(in)e(unstructured)f(p)r(eer-to-)663
-4121 y(p)r(eer)25 b(net)n(w)n(orks.)35 b(In)25 b Fq(The)j(A)n(CM)f
-(SIGCOMM'02)g(Confer)l(enc)l(e)p Fx(,)g(August)e(2002.)523
-4136 y
+3786 y(p)r(eer)25 b(net)n(w)n(orks.)35 b(In)25 b Fn(The)j(A)n(CM)f
+(SIGCOMM'02)g(Confer)l(enc)l(e)p Fu(,)g(August)e(2002.)523
+3801 y
 SDict begin H.S end
- 523 4136 a 523 4136 a
+ 523 3801 a 523 3801 a
 SDict begin 11 H.A end
- 523 4136 a 523 4136 a
+ 523 3801 a 523 3801 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.cfs:sosp01) cvn H.B /DEST
 pdfmark end
  523
-4136 a Black 561 4215 a Fx(7.)p Black 43 w(F)-6 b(rank)26
+3801 a Black 561 3873 a Fu(7.)p Black 43 w(F)-6 b(rank)26
 b(Dab)r(ek,)i(M.)g(F)-6 b(rans)27 b(Kaasho)r(ek,)h(Da)n(vid)f(Karger,)h
-(Rob)r(ert)g(Morris,)h(and)e(Ion)g(Stoica.)663 4306 y(Wide-area)j(co)r
+(Rob)r(ert)g(Morris,)h(and)e(Ion)g(Stoica.)663 3964 y(Wide-area)j(co)r
 (op)r(erativ)n(e)h(storage)g(with)e(CFS.)47 b(In)28 b
-Fq(Pr)l(o)l(c)l(e)l(e)l(dings)34 b(of)d(the)h(18th)g(A)n(CM)e(Sym-)663
-4397 y(p)l(osium)25 b(on)g(Op)l(er)l(ating)h(Systems)g(Principles)f
-(\(SOSP)g('01\))p Fx(,)f(Chateau)f(Lak)n(e)g(Louise,)g(Ban\013,)663
-4489 y(Canada,)k(Octob)r(er)e(2001.)523 4504 y
+Fn(Pr)l(o)l(c)l(e)l(e)l(dings)34 b(of)d(the)h(18th)g(A)n(CM)e(Sym-)663
+4056 y(p)l(osium)25 b(on)g(Op)l(er)l(ating)h(Systems)g(Principles)f
+(\(SOSP)g('01\))p Fu(,)f(Chateau)f(Lak)n(e)g(Louise,)g(Ban\013,)663
+4147 y(Canada,)k(Octob)r(er)e(2001.)523 4162 y
 SDict begin H.S end
- 523 4504
-a 523 4504 a
+ 523 4162
+a 523 4162 a
 SDict begin 11 H.A end
- 523 4504 a 523 4504 a
+ 523 4162 a 523 4162 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.dingledine02mixminion) cvn
 H.B /DEST pdfmark end
- 523 4504 a Black 561
-4582 a Fx(8.)p Black 43 w(George)32 b(Danezis,)g(Roger)g(Dingledine,)g
+ 523 4162 a Black 561
+4235 a Fu(8.)p Black 43 w(George)32 b(Danezis,)g(Roger)g(Dingledine,)g
 (and)f(Nic)n(k)f(Mathewson.)52 b(Mixminion:)32 b(Design)g(of)663
-4673 y(a)d(T)n(yp)r(e)f(I)r(I)r(I)g(Anon)n(ymous)g(Remailer)i(Proto)r
-(col.)45 b(In)28 b Fq(IEEE)i(Symp)l(osium)h(on)g(Se)l(curity)g(and)663
-4764 y(Privacy)p Fx(,)c(2003.)p Black 523 4839 473 4
-v 546 4893 a Fy(4)p 0 TeXcolorgray 606 4833 a
+4326 y(a)d(T)n(yp)r(e)f(I)r(I)r(I)g(Anon)n(ymous)g(Remailer)i(Proto)r
+(col.)45 b(In)28 b Fn(IEEE)i(Symp)l(osium)h(on)g(Se)l(curity)g(and)663
+4417 y(Privacy)p Fu(,)c(2003.)523 4432 y
 SDict begin H.S end
- 606 4833
-a 0 TeXcolorgray 0 TeXcolorgray 606 4833 a
-SDict begin H.R end
- 606 4833 a
+ 523 4432 a 523
+4432 a
+SDict begin 11 H.A end
+ 523 4432 a 523 4432 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.freehaven-berk) cvn H.B
+/DEST pdfmark end
+ 523 4432 a Black 561 4505
+a Fu(9.)p Black 43 w(Roger)18 b(Dingledine,)h(Mic)n(hael)g(J.)g(F)-6
+b(reedman,)18 b(and)g(Da)n(vid)f(Molnar.)23 b(The)c(free)f(ha)n(v)n(en)
+g(pro)t(ject:)663 4596 y(Distributed)37 b(anon)n(ymous)i(storage)g
+(service.)73 b(In)38 b(Hannes)g(F)-6 b(ederrath,)38 b(editor,)h
+Fn(Pr)l(o)l(c)l(e)l(e)l(d-)663 4687 y(ings)26 b(of)g(Designing)g
+(Privacy)h(Enhancing)g(T)-6 b(e)l(chnolo)l(gies:)27 b(Workshop)g(on)g
+(Design)f(Issues)h(in)663 4779 y(A)n(nonymity)h(and)g(Unobservability)p
+Fu(.)g(Springer-V)-6 b(erlag,)26 b(LNCS)f(2009,)i(July)f(2000.)p
+Black 523 4839 473 4 v 546 4893 a Fv(4)p 0 TeXcolorgray
 606 4833 a
+SDict begin H.S end
+ 606 4833 a 0 TeXcolorgray 0 TeXcolorgray 606
+4833 a
+SDict begin H.R end
+ 606 4833 a 606 4833 a
 SDict begin [ /View [/XYZ H.V] /Dest (Hfootnote.4) cvn H.B /DEST pdfmark
 end
- 606 4833 a Black 0 1 0 0 TeXcolorcmyk 606
-4941 a
+ 606 4833 a Black 0 1 0 0
+TeXcolorcmyk 606 4941 a
 SDict begin H.S end
- 606 4941 a 0 1 0 0 TeXcolorcmyk -17 x Fw(http://gnunet.org/)p
-0 1 0 0 TeXcolorcmyk 1312 4872 a
+ 606 4941 a 0 1 0 0 TeXcolorcmyk
+-17 x Ft(http://gnunet.org/)p 0 1 0 0 TeXcolorcmyk 1312
+4872 a
 SDict begin H.R end
- 1312 4872 a 1312 4924
-a
+ 1312 4872 a 1312 4924 a
 SDict begin [ /H /I /Border [0 0 0] /Color [0 1 1] /Action << /Subtype
 /URI /URI (http://gnunet.org/) >> /Subtype /Link H.B /ANN pdfmark end
- 1312 4924 a Black Black Black Black eop end
-%%Page: 21 21
-TeXDict begin 21 20 bop 0 0 a
+ 1312 4924 a Black Black
+Black Black eop end
+%%Page: 15 15
+TeXDict begin 15 14 bop 0 0 a
 SDict begin /product where{pop product(Distiller)search{pop pop pop
 version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
 closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
@@ -9220,276 +7683,273 @@
 232 a
 SDict begin H.R end
  523 232 a 523 232 a
-SDict begin [ /View [/XYZ H.V] /Dest (page.21) cvn H.B /DEST pdfmark
+SDict begin [ /View [/XYZ H.V] /Dest (page.15) cvn H.B /DEST pdfmark
 end
- 523 232 a Black 1036 w Fx(An)25
+ 523 232 a Black 1036 w Fu(An)25
 b(Enco)r(ding)h(for)h(Censorship-Resistan)n(t)f(Sharing)199
-b(21)p Black 523 365 a
+b(15)p Black 523 365 a
 SDict begin H.S end
  523 365 a 523 365 a
 SDict begin 11 H.A end
  523 365 a
 523 365 a
-SDict begin [ /View [/XYZ H.V] /Dest (cite.freehaven-berk) cvn H.B
-/DEST pdfmark end
- 523 365 a Black 561 448 a Fx(9.)p Black 43
-w(Roger)18 b(Dingledine,)h(Mic)n(hael)g(J.)g(F)-6 b(reedman,)18
-b(and)g(Da)n(vid)f(Molnar.)23 b(The)c(free)f(ha)n(v)n(en)g(pro)t(ject:)
-663 540 y(Distributed)37 b(anon)n(ymous)i(storage)g(service.)73
-b(In)38 b(Hannes)g(F)-6 b(ederrath,)38 b(editor,)h Fq(Pr)l(o)l(c)l(e)l
-(e)l(d-)663 631 y(ings)26 b(of)g(Designing)g(Privacy)h(Enhancing)g(T)-6
-b(e)l(chnolo)l(gies:)27 b(Workshop)g(on)g(Design)f(Issues)h(in)663
-722 y(A)n(nonymity)h(and)g(Unobservability)p Fx(.)g(Springer-V)-6
-b(erlag,)26 b(LNCS)f(2009,)i(July)f(2000.)523 737 y
-SDict begin H.S end
- 523
-737 a 523 737 a
-SDict begin 11 H.A end
- 523 737 a 523 737 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.farsite) cvn H.B /DEST pdfmark
 end
- 523 737 a Black 72
-x Fx(10.)p Black 43 w(John)19 b(R.)f(Douceur,)h(A)n(tul)f(Ady)n(a,)h
-(Wiliam)h(J.)g(Bolosky)-6 b(,)19 b(Dan)g(Simon,)g(and)g(Marvin)g
-(Theimer.)663 900 y(Reclaiming)26 b(space)g(from)g(duplicate)f(\014les)
-g(in)g(a)h(serv)n(erless)g(distributed)f(\014le)g(system.)33
-b(T)-6 b(ec)n(h-)663 992 y(nical)26 b(rep)r(ort,)g(Microsoft)i(Researc)
-n(h,)e(2002.)523 1007 y
+ 523 365 a Black 83 x Fu(10.)p Black 43 w(John)19
+b(R.)f(Douceur,)h(A)n(tul)f(Ady)n(a,)h(Wiliam)h(J.)g(Bolosky)-6
+b(,)19 b(Dan)g(Simon,)g(and)g(Marvin)g(Theimer.)663 540
+y(Reclaiming)26 b(space)g(from)g(duplicate)f(\014les)g(in)g(a)h(serv)n
+(erless)g(distributed)f(\014le)g(system.)33 b(T)-6 b(ec)n(h-)663
+631 y(nical)26 b(rep)r(ort,)g(Microsoft)i(Researc)n(h,)e(2002.)523
+646 y
 SDict begin H.S end
- 523 1007 a 523 1007 a
+ 523 646 a 523 646 a
 SDict begin 11 H.A end
- 523 1007
-a 523 1007 a
-SDict begin [ /View [/XYZ H.V] /Dest (cite.feamster-infranet) cvn H.B
-/DEST pdfmark end
- 523 1007 a Black 71 x Fx(11.)p Black 43
-w(Nic)n(k)21 b(F)-6 b(eamster,)23 b(Magdalena)g(Balazinsk)l(a,)h(Greg)f
-(Harfst,)g(Hari)f(Balakrishnan,)h(and)e(Da)n(vid)663
-1169 y(Karger.)k(Infranet:)20 b(Circum)n(v)n(en)n(ting)g(w)n(eb)g
-(censorship)g(and)f(surv)n(eillance.)26 b(In)19 b Fq(11th)k(USENIX)663
-1261 y(Se)l(curity)29 b(Symp)l(osium)p Fx(,)d(2002.)523
-1276 y
-SDict begin H.S end
- 523 1276 a 523 1276 a
-SDict begin 11 H.A end
- 523 1276 a 523 1276 a
+ 523 646 a 523 646 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.secure2004goh) cvn H.B /DEST
 pdfmark end
- 523
-1276 a Black 71 x Fx(12.)p Black 43 w(Eu-Jin)f(Goh.)35
-b(Secure)25 b(indexes.)35 b(In)25 b Fq(Cryptolo)l(gy)k(ePrint)f(A)n(r)l
-(chive)p Fx(,)f(Oct)e(2003.)523 1362 y
+ 523 646
+a Black 76 x Fu(11.)p Black 43 w(Eu-Jin)f(Goh.)35 b(Secure)25
+b(indexes.)35 b(In)25 b Fn(Cryptolo)l(gy)k(ePrint)f(A)n(r)l(chive)p
+Fu(,)f(Oct)e(2003.)523 737 y
 SDict begin H.S end
- 523 1362 a 523
-1362 a
+ 523 737 a 523 737 a
 SDict begin 11 H.A end
- 523 1362 a 523 1362 a
+ 523
+737 a 523 737 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.ebe2003) cvn H.B /DEST pdfmark
 end
- 523 1362 a Black 72 x Fx(13.)p
-Black 43 w(Christian)i(Grotho\013.)35 b(An)25 b(Excess-Based)i
-(Economic)g(Mo)r(del)g(for)f(Resource)h(Allo)r(cation)g(in)663
-1525 y(P)n(eer-to-P)n(eer)f(Net)n(w)n(orks.)34 b Fq
-(Wirtschaftsinformatik)p Fx(,)27 b(3-2003,)h(June)d(2003.)523
-1540 y
+ 523 737 a Black 77 x Fu(12.)p Black 43
+w(Christian)i(Grotho\013.)35 b(An)25 b(Excess-Based)i(Economic)g(Mo)r
+(del)g(for)f(Resource)h(Allo)r(cation)g(in)663 905 y(P)n(eer-to-P)n
+(eer)f(Net)n(w)n(orks.)34 b Fn(Wirtschaftsinformatik)p
+Fu(,)27 b(3-2003,)h(June)d(2003.)523 920 y
 SDict begin H.S end
- 523 1540 a 523 1540 a
+ 523 920 a
+523 920 a
 SDict begin 11 H.A end
- 523 1540 a 523 1540 a
-SDict begin [ /View [/XYZ H.V] /Dest (cite.le2005) cvn H.B /DEST pdfmark
-end
- 523
-1540 a Black 72 x Fx(14.)p Black 43 w(Christian)33 b(Grotho\013.)55
-b(Reading)32 b(File)i(Metadata)f(with)g(extract)f(and)g(lib)r
-(extractor.)56 b Fq(Lin-)663 1703 y(uxJournal)p Fx(,)27
-b(6-2005,)h(June)d(2005.)523 1718 y
-SDict begin H.S end
- 523 1718 a 523 1718
-a
-SDict begin 11 H.A end
- 523 1718 a 523 1718 a
+ 523 920 a 523 920 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.hartman99swarm) cvn H.B
 /DEST pdfmark end
- 523 1718 a Black 72 x Fx(15.)p
+ 523 920 a Black 76 x Fu(13.)p
 Black 43 w(John)d(H.)g(Hartman,)h(Ian)f(Murdo)r(c)n(k,)h(and)f(T)-6
 b(ammo)23 b(Spalink.)28 b(The)23 b(sw)n(arm)g(scalable)h(storage)663
-1881 y(system.)67 b(In)36 b Fq(International)j(Confer)l(enc)l(e)g(on)f
-(Distribute)l(d)h(Computing)f(Systems)p Fx(,)h(pages)663
-1972 y(74{81,)28 b(1999.)523 1987 y
+1088 y(system.)67 b(In)36 b Fn(International)j(Confer)l(enc)l(e)g(on)f
+(Distribute)l(d)h(Computing)f(Systems)p Fu(,)h(pages)663
+1179 y(74{81,)28 b(1999.)523 1194 y
 SDict begin H.S end
- 523 1987 a 523 1987
+ 523 1194 a 523 1194
 a
 SDict begin 11 H.A end
- 523 1987 a 523 1987 a
+ 523 1194 a 523 1194 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.herlihy87how) cvn H.B /DEST
 pdfmark end
- 523 1987 a Black 72 x Fx(16.)p
+ 523 1194 a Black 76 x Fu(14.)p
 Black 43 w(Maurice)42 b(Herlih)n(y)e(and)h(J.)h(D.)f(T)n(ygar.)81
 b(Ho)n(w)42 b(to)f(mak)n(e)g(replicated)h(data)g(secure.)81
-b(In)663 2150 y Fq(CR)-6 b(YPTO)p Fx(,)25 b(pages)i(379{391,)i(1987.)
-523 2165 y
+b(In)663 1362 y Fn(CR)-6 b(YPTO)p Fu(,)25 b(pages)i(379{391,)i(1987.)
+523 1377 y
 SDict begin H.S end
- 523 2165 a 523 2165 a
+ 523 1377 a 523 1377 a
 SDict begin 11 H.A end
- 523 2165 a 523 2165
+ 523 1377 a 523 1377
 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.levien03advogato) cvn H.B
 /DEST pdfmark end
- 523 2165 a Black 72 x Fx(17.)p Black 43 w(Raph)76 b(Levien.)189
+ 523 1377 a Black 76 x Fu(15.)p Black 43 w(Raph)76 b(Levien.)189
 b(A)n(ttac)n(k)77 b(resistan)n(t)h(trust)f(metrics.)190
-b(Draft)78 b(a)n(v)l(ailable)h(at)663 2328 y(h)n
+b(Draft)78 b(a)n(v)l(ailable)h(at)663 1545 y(h)n
 (ttp://www.levien.com/thesis/compact.p)r(df,)31 b(2003.)523
-2347 y
+1563 y
 SDict begin H.S end
- 523 2347 a 523 2347 a
+ 523 1563 a 523 1563 a
 SDict begin 11 H.A end
- 523 2347 a 523 2347 a
+ 523 1563 a 523 1563 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.maymounkov02kademlia) cvn
 H.B /DEST pdfmark end
  523
-2347 a Black 68 x Fx(18.)p Black 43 w(P)n(etar)h(Ma)n(ymounk)n(o)n(v)f
+1563 a Black 73 x Fu(16.)p Black 43 w(P)n(etar)h(Ma)n(ymounk)n(o)n(v)f
 (and)h(Da)n(vid)f(Mazi)n(\022)-36 b(eres.)56 b(Kademlia:)33
-b(A)f(p)r(eer-to-p)r(eer)f(information)663 2506 y(system)f(based)g(on)g
-(the)g(xor)g(metric.)48 b(In)29 b Fq(Pr)l(o)l(c)l(e)l(e)l(dings)34
-b(of)d(IPTPS02,)g(Cambridge)p Fx(,)g(Marc)n(h)663 2597
-y(2002.)523 2597 y
+b(A)f(p)r(eer-to-p)r(eer)f(information)663 1727 y(system)f(based)g(on)g
+(the)g(xor)g(metric.)48 b(In)29 b Fn(Pr)l(o)l(c)l(e)l(e)l(dings)34
+b(of)d(IPTPS02,)g(Cambridge)p Fu(,)g(Marc)n(h)663 1819
+y(2002.)523 1819 y
 SDict begin H.S end
- 523 2597 a 523 2597 a
+ 523 1819 a 523 1819 a
 SDict begin 11 H.A end
- 523 2597 a 523
-2597 a
+ 523 1819 a 523
+1819 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.mazires00sfs) cvn H.B /DEST
 pdfmark end
- 523 2597 a Black 87 x Fx(19.)p Black 43 w(Da)n(vid)25
-b(Mazi)n(\022)-36 b(eres.)36 b Fq(Self-c)l(ertifying)28
-b(\014le)g(system)p Fx(.)35 b(PhD)26 b(thesis,)g(MIT,)h(2000.)523
-2699 y
+ 523 1819 a Black 91 x Fu(17.)p Black 43 w(Da)n(vid)25
+b(Mazi)n(\022)-36 b(eres.)36 b Fn(Self-c)l(ertifying)28
+b(\014le)g(system)p Fu(.)35 b(PhD)26 b(thesis,)g(MIT,)h(2000.)523
+1925 y
 SDict begin H.S end
- 523 2699 a 523 2699 a
+ 523 1925 a 523 1925 a
 SDict begin 11 H.A end
- 523 2699 a 523 2699 a
+ 523 1925 a 523 1925 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.mazieres02building) cvn
 H.B /DEST pdfmark end
  523
-2699 a Black 72 x Fx(20.)p Black 43 w(Da)n(vid)e(Mazi)n(\022)-36
+1925 a Black 76 x Fu(18.)p Black 43 w(Da)n(vid)e(Mazi)n(\022)-36
 b(eres)28 b(and)e(Dennis)g(Shasha.)36 b(Building)27 b(secure)g(\014le)f
-(systems)h(out)f(of)h(b)n(yzan)n(tine)663 2862 y(storage.)66
-b(In)35 b Fq(Pr)l(o)l(c)l(e)l(e)l(dings)k(of)d(the)i(Twenty-First)h(A)n
-(CM)d(Symp)l(osium)h(on)g(Principles)g(of)663 2953 y(Distribute)l(d)29
-b(Computing)f(\(PODC)f(2002\))p Fx(,)g(2002.)523 2972
+(systems)h(out)f(of)h(b)n(yzan)n(tine)663 2093 y(storage.)66
+b(In)35 b Fn(Pr)l(o)l(c)l(e)l(e)l(dings)k(of)d(the)i(Twenty-First)h(A)n
+(CM)d(Symp)l(osium)h(on)g(Principles)g(of)663 2184 y(Distribute)l(d)29
+b(Computing)f(\(PODC)f(2002\))p Fu(,)g(2002.)523 2203
 y
 SDict begin H.S end
- 523 2972 a 523 2972 a
+ 523 2203 a 523 2203 a
 SDict begin 11 H.A end
- 523 2972 a 523 2972 a
+ 523 2203 a 523 2203 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.mckusick84fast) cvn H.B
 /DEST pdfmark end
- 523 2972
-a Black 68 x Fx(21.)p Black 43 w(Marshall)e(K.)f(McKusic)n(k,)g
+ 523 2203
+a Black 72 x Fu(19.)p Black 43 w(Marshall)e(K.)f(McKusic)n(k,)g
 (William)i(N.)d(Jo)n(y)-6 b(,)24 b(Sam)n(uel)g(J.)h(Le\017er,)f(and)g
-(Rob)r(ert)f(S.)h(F)-6 b(abry)g(.)30 b(A)663 3131 y(fast)c(\014le)g
-(system)g(for)g(UNIX.)33 b Fq(Computer)c(Systems)p Fx(,)e
-(2\(3\):181{197,)j(1984.)523 3150 y
+(Rob)r(ert)f(S.)h(F)-6 b(abry)g(.)30 b(A)663 2367 y(fast)c(\014le)g
+(system)g(for)g(UNIX.)33 b Fn(Computer)c(Systems)p Fu(,)e
+(2\(3\):181{197,)j(1984.)523 2385 y
 SDict begin H.S end
- 523 3150 a 523 3150
+ 523 2385 a 523 2385
 a
 SDict begin 11 H.A end
- 523 3150 a 523 3150 a
+ 523 2385 a 523 2385 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.merkle89tree) cvn H.B /DEST
 pdfmark end
- 523 3150 a Black 68 x Fx(22.)p
+ 523 2385 a Black 73 x Fu(20.)p
 Black 43 w(Ralph)e(C.)i(Merkle.)45 b(A)28 b(certi\014ed)h(digital)h
-(signature.)45 b(In)28 b Fq(G.)j(Br)l(assar)l(d,)h(e)l(ditor,)f(A)l
-(dvanc)l(es)663 3309 y(in)e(Cryptolo)l(gy|CR)-6 b(YPTO)32
-b('89)p Fx(,)d(pages)g(218{238.)j(Springer-V)-6 b(erlag,)29
-b(1990.)44 b(v)n(olume)29 b(435)663 3400 y(of)d(Lecture)g(Notes)g(in)f
-(Computer)h(Science.)523 3415 y
+(signature.)45 b(In)28 b Fn(G.)j(Br)l(assar)l(d,)h(e)l(ditor,)f(A)l
+(dvanc)l(es)663 2549 y(in)e(Cryptolo)l(gy|CR)-6 b(YPTO)32
+b('89)p Fu(,)d(pages)g(218{238.)j(Springer-V)-6 b(erlag,)29
+b(1990.)44 b(v)n(olume)29 b(435)663 2641 y(of)d(Lecture)g(Notes)g(in)f
+(Computer)h(Science.)523 2656 y
 SDict begin H.S end
- 523 3415 a 523 3415 a
+ 523 2656 a 523 2656 a
 SDict begin 11 H.A end
 
-523 3415 a 523 3415 a
+523 2656 a 523 2656 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.muthitacharoen02ivy) cvn
 H.B /DEST pdfmark end
- 523 3415 a Black 72 x Fx(23.)p
+ 523 2656 a Black 76 x Fu(21.)p
 Black 43 w(A)n(thic)n(ha)21 b(Muthitac)n(haro)r(en,)i(Rob)r(ert)f
 (Morris,)i(Thomer)f(M.)f(Gil,)i(and)d(Benjie)j(Chen.)k(Ivy:)21
-b(A)663 3578 y(read/write)i(p)r(eer-to-p)r(eer)e(\014le)g(system.)28
-b(In)21 b Fq(Pr)l(o)l(c)l(e)l(e)l(dings)26 b(of)d(5th)i(Symp)l(osium)f
-(on)g(Op)l(er)l(ating)663 3670 y(Systems)29 b(Design)f(and)g
-(Implementation)p Fx(,)e(2002.)523 3685 y
+b(A)663 2823 y(read/write)i(p)r(eer-to-p)r(eer)e(\014le)g(system.)28
+b(In)21 b Fn(Pr)l(o)l(c)l(e)l(e)l(dings)26 b(of)d(5th)i(Symp)l(osium)f
+(on)g(Op)l(er)l(ating)663 2915 y(Systems)29 b(Design)f(and)g
+(Implementation)p Fu(,)e(2002.)523 2930 y
 SDict begin H.S end
- 523 3685 a
-523 3685 a
+ 523 2930 a
+523 2930 a
 SDict begin 11 H.A end
- 523 3685 a 523 3685 a
+ 523 2930 a 523 2930 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.perng2005csr) cvn H.B /DEST
 pdfmark end
- 523 3685 a Black 71
-x Fx(24.)p Black 43 w(Ginger)h(P)n(erng,)h(Mic)n(hael)g(K.)f(Reiter,)h
+ 523 2930 a Black 76
+x Fu(22.)p Black 43 w(Ginger)h(P)n(erng,)h(Mic)n(hael)g(K.)f(Reiter,)h
 (and)f(Chenxi)f(W)-6 b(ang.)39 b(Censorship)28 b(resistance)g(revis-)
-663 3847 y(ited.)c(In)18 b(Jordi)i(Herrera-Joancomarti,)i(editor,)e
-Fq(Pr)l(e-Pr)l(o)l(c)l(e)l(e)l(dings)25 b(of)c(the)h(7th)h
-(International)663 3939 y(Workshop)29 b(on)e(Information)h(Hiding)p
-Fx(,)d(pages)i(279{293,)i(2005.)523 3954 y
+663 3097 y(ited.)c(In)18 b(Jordi)i(Herrera-Joancomarti,)i(editor,)e
+Fn(Pr)l(e-Pr)l(o)l(c)l(e)l(e)l(dings)25 b(of)c(the)h(7th)h
+(International)663 3189 y(Workshop)29 b(on)e(Information)h(Hiding)p
+Fu(,)d(pages)i(279{293,)i(2005.)523 3204 y
 SDict begin H.S end
- 523 3954 a
-523 3954 a
+ 523 3204 a
+523 3204 a
 SDict begin 11 H.A end
- 523 3954 a 523 3954 a
+ 523 3204 a 523 3204 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.rabin89efficient) cvn H.B
 /DEST pdfmark end
- 523 3954 a Black 71
-x Fx(25.)p Black 43 w(Mic)n(hael)h(O.)f(Rabin.)45 b(E\016cien)n(t)29
+ 523 3204 a Black 76
+x Fu(23.)p Black 43 w(Mic)n(hael)h(O.)f(Rabin.)45 b(E\016cien)n(t)29
 b(disp)r(ersal)h(of)g(information)h(for)f(securit)n(y)-6
-b(,)29 b(load)h(balancing,)663 4117 y(and)25 b(fault)h(tolerance.)36
-b Fq(Journal)28 b(of)f(the)i(A)n(CM)p Fx(,)c(36\(2\):335{348,)30
-b(1989.)523 4135 y
+b(,)29 b(load)h(balancing,)663 3371 y(and)25 b(fault)h(tolerance.)36
+b Fn(Journal)28 b(of)f(the)i(A)n(CM)p Fu(,)c(36\(2\):335{348,)30
+b(1989.)523 3390 y
 SDict begin H.S end
- 523 4135 a 523 4135 a
+ 523 3390 a 523 3390 a
 SDict begin 11 H.A end
- 523 4135 a 523
-4135 a
+ 523 3390 a 523
+3390 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.rowstron01storage) cvn H.B
 /DEST pdfmark end
- 523 4135 a Black 68 x Fx(26.)p Black 43 w(An)n(ton)n(y)k(I.)h
+ 523 3390 a Black 73 x Fu(24.)p Black 43 w(An)n(ton)n(y)k(I.)h
 (T.)i(Ro)n(wstron)f(and)f(P)n(eter)h(Drusc)n(hel.)64
-b(Storage)37 b(managemen)n(t)f(and)f(cac)n(hing)663 4295
+b(Storage)37 b(managemen)n(t)f(and)f(cac)n(hing)663 3554
 y(in)c(P)-6 b(AST,)30 b(a)i(large-scale,)h(p)r(ersisten)n(t)f(p)r
 (eer-to-p)r(eer)e(storage)j(utilit)n(y)-6 b(.)50 b(In)30
-b Fq(Symp)l(osium)j(on)663 4386 y(Op)l(er)l(ating)c(Systems)g
-(Principles)p Fx(,)d(pages)g(188{201,)j(2001.)523 4401
+b Fn(Symp)l(osium)j(on)663 3646 y(Op)l(er)l(ating)c(Systems)g
+(Principles)p Fu(,)d(pages)g(188{201,)j(2001.)523 3661
 y
 SDict begin H.S end
- 523 4401 a 523 4401 a
+ 523 3661 a 523 3661 a
 SDict begin 11 H.A end
- 523 4401 a 523 4401 a
+ 523 3661 a 523 3661 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.shamir) cvn H.B /DEST pdfmark
 end
- 523 4401
-a Black 71 x Fx(27.)p Black 43 w(A.)g(Shamir.)48 b(Ho)n(w)30
-b(to)g(share)g(a)h(secret.)47 b(In)30 b Fq(Communic)l(ations)i(of)f
-(the)h(A)n(CM)p Fx(,)e(v)n(olume)g(22,)663 4564 y(pages)c(612{613.)j(A)
-n(CM,)d(1979.)523 4579 y
+ 523 3661
+a Black 76 x Fu(25.)p Black 43 w(A.)g(Shamir.)48 b(Ho)n(w)30
+b(to)g(share)g(a)h(secret.)47 b(In)30 b Fn(Communic)l(ations)i(of)f
+(the)h(A)n(CM)p Fu(,)e(v)n(olume)g(22,)663 3828 y(pages)c(612{613.)j(A)
+n(CM,)d(1979.)523 3843 y
 SDict begin H.S end
- 523 4579 a 523 4579 a
+ 523 3843 a 523 3843 a
 SDict begin 11 H.A end
- 523 4579
-a 523 4579 a
+ 523 3843
+a 523 3843 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.stoica01chord) cvn H.B /DEST
 pdfmark end
- 523 4579 a Black 71 x Fx(28.)p Black 43
+ 523 3843 a Black 77 x Fu(26.)p Black 43
 w(Ion)k(Stoica,)i(Rob)r(ert)e(Morris,)j(Da)n(vid)d(Karger,)i(M.)f(F)-6
-b(rans)31 b(Kaasho)r(ek,)h(and)e(Hari)h(Balakr-)663 4742
+b(rans)31 b(Kaasho)r(ek,)h(and)e(Hari)h(Balakr-)663 4011
 y(ishnan.)g(Chord:)24 b(A)f(scalable)i(p)r(eer-to-p)r(eer)f(lo)r(okup)f
 (service)h(for)h(in)n(ternet)e(applications.)33 b(In)663
-4833 y Fq(Pr)l(o)l(c)l(e)l(e)l(dings)26 b(of)d(the)i(2001)f(c)l(onfer)l
+4102 y Fn(Pr)l(o)l(c)l(e)l(e)l(dings)26 b(of)d(the)i(2001)f(c)l(onfer)l
 (enc)l(e)i(on)d(applic)l(ations,)i(te)l(chnolo)l(gies,)g(ar)l(chite)l
-(ctur)l(es,)h(and)663 4924 y(pr)l(oto)l(c)l(ols)j(for)f(c)l(omputer)h
-(c)l(ommunic)l(ations)p Fx(,)e(pages)g(149{160.)h(A)n(CM)e(Press,)h
+(ctur)l(es,)h(and)663 4194 y(pr)l(oto)l(c)l(ols)j(for)f(c)l(omputer)h
+(c)l(ommunic)l(ations)p Fu(,)e(pages)g(149{160.)h(A)n(CM)e(Press,)h
+(2001.)523 4209 y
+SDict begin H.S end
+ 523 4209 a 523 4209 a
+SDict begin 11 H.A end
+ 523 4209 a 523
+4209 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.stratton_oakmont) cvn H.B
+/DEST pdfmark end
+ 523 4209 a Black 76 x Fu(27.)p Black 43 w(Stratton)19
+b(Oakmon)n(t)g(vs)h(Pro)r(digy)g(Services)g(Compan)n(y,)g(1995)h(N.Y.)f
+(Misc.)h(Lexis)f(229,)h(\(N.Y.)663 4376 y(Sup.)k(Ct.)h(Nassau)g(Co.,)h
+(1995\).)523 4395 y
+SDict begin H.S end
+ 523 4395 a 523 4395 a
+SDict begin 11 H.A end
+ 523 4395 a
+523 4395 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.syverson97anonymous) cvn
+H.B /DEST pdfmark end
+ 523 4395 a Black 73 x Fu(28.)p Black 43 w(P)n(aul)35
+b(Syv)n(erson,)g(Da)n(vid)f(Goldsc)n(hlag,)j(and)e(Mic)n(hael)h(Reed.)
+62 b(Anon)n(ymous)34 b(Connections)663 4559 y(and)29
+b(Onion)f(Routing.)45 b(In)29 b Fn(IEEE)h(Symp)l(osium)h(on)g(Se)l
+(curity)h(and)f(Privacy)p Fu(,)g(pages)f(44{54,)663 4650
+y(Oakland,)25 b(California,)k(4{7)e(1997.)523 4665 y
+SDict begin H.S end
+
+523 4665 a 523 4665 a
+SDict begin 11 H.A end
+ 523 4665 a 523 4665 a
+SDict begin [ /View [/XYZ H.V] /Dest (cite.waldman2001tangler) cvn
+H.B /DEST pdfmark end
+ 523 4665
+a Black 77 x Fu(29.)p Black 43 w(Marc)36 b(W)-6 b(aldman)34
+b(and)h(Da)n(vid)f(Mazi)n(\022)-36 b(eres.)64 b(T)-6
+b(angler:)37 b(A)d(censorhip-resistan)n(t)i(publishing)663
+4833 y(system)25 b(based)f(on)h(do)r(cumen)n(t)g(en)n(tanglemen)n(ts.)
+33 b(In)24 b Fn(A)n(CM)i(Confer)l(enc)l(e)i(on)f(Computer)h(and)663
+4924 y(Communic)l(ations)g(Se)l(curity)p Fu(,)f(pages)g(126{135,)h
 (2001.)p Black Black eop end
-%%Page: 22 22
-TeXDict begin 22 21 bop 0 0 a
+%%Page: 16 16
+TeXDict begin 16 15 bop 0 0 a
 SDict begin /product where{pop product(Distiller)search{pop pop pop
 version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto
 closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show
@@ -9501,9 +7961,9 @@
 232 a
 SDict begin H.R end
  523 232 a 523 232 a
-SDict begin [ /View [/XYZ H.V] /Dest (page.22) cvn H.B /DEST pdfmark
+SDict begin [ /View [/XYZ H.V] /Dest (page.16) cvn H.B /DEST pdfmark
 end
- 523 232 a Black Fx(22)199 b(C.)27
+ 523 232 a Black Fu(16)199 b(C.)27
 b(Grotho\013,)f(K.)g(Grotho\013,)g(T.)h(Horozo)n(v,)f(J.T.)h(Lindgren)p
 Black 523 365 a
 SDict begin H.S end
@@ -9511,65 +7971,27 @@
 SDict begin 11 H.A end
  523 365 a 523 365
 a
-SDict begin [ /View [/XYZ H.V] /Dest (cite.stratton_oakmont) cvn H.B
-/DEST pdfmark end
- 523 365 a Black 83 x Fx(29.)p Black 43 w(Stratton)19
-b(Oakmon)n(t)g(vs)h(Pro)r(digy)g(Services)g(Compan)n(y,)g(1995)h(N.Y.)f
-(Misc.)h(Lexis)f(229,)h(\(N.Y.)663 540 y(Sup.)k(Ct.)h(Nassau)g(Co.,)h
-(1995\).)523 558 y
-SDict begin H.S end
- 523 558 a 523 558 a
-SDict begin 11 H.A end
- 523 558 a 523
-558 a
-SDict begin [ /View [/XYZ H.V] /Dest (cite.syverson97anonymous) cvn
-H.B /DEST pdfmark end
- 523 558 a Black 73 x Fx(30.)p Black 43 w(P)n(aul)35
-b(Syv)n(erson,)g(Da)n(vid)f(Goldsc)n(hlag,)j(and)e(Mic)n(hael)h(Reed.)
-62 b(Anon)n(ymous)34 b(Connections)663 722 y(and)29 b(Onion)f(Routing.)
-45 b(In)29 b Fq(IEEE)h(Symp)l(osium)h(on)g(Se)l(curity)h(and)f(Privacy)
-p Fx(,)g(pages)f(44{54,)663 814 y(Oakland,)25 b(California,)k(4{7)e
-(1997.)523 829 y
-SDict begin H.S end
- 523 829 a 523 829 a
-SDict begin 11 H.A end
- 523 829 a 523 829
-a
-SDict begin [ /View [/XYZ H.V] /Dest (cite.waldman2001tangler) cvn
-H.B /DEST pdfmark end
- 523 829 a Black 76 x Fx(31.)p Black 43 w(Marc)36 b(W)-6
-b(aldman)34 b(and)h(Da)n(vid)f(Mazi)n(\022)-36 b(eres.)64
-b(T)-6 b(angler:)37 b(A)d(censorhip-resistan)n(t)i(publishing)663
-996 y(system)25 b(based)f(on)h(do)r(cumen)n(t)g(en)n(tanglemen)n(ts.)33
-b(In)24 b Fq(A)n(CM)i(Confer)l(enc)l(e)i(on)f(Computer)h(and)663
-1088 y(Communic)l(ations)g(Se)l(curity)p Fx(,)f(pages)g(126{135,)h
-(2001.)523 1103 y
-SDict begin H.S end
- 523 1103 a 523 1103 a
-SDict begin 11 H.A end
- 523 1103 a 523
-1103 a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.pub00) cvn H.B /DEST pdfmark
 end
- 523 1103 a Black 76 x Fx(32.)p Black 43 w(Marc)36
-b(W)-6 b(aldman,)36 b(Aviel)g(D.)f(Rubin,)g(and)h(Lorrie)g(F)-6
+ 523 365 a Black 83 x Fu(30.)p Black 43 w(Marc)36 b(W)-6
+b(aldman,)36 b(Aviel)g(D.)f(Rubin,)g(and)h(Lorrie)g(F)-6
 b(aith)36 b(Cranor.)65 b(Publius:)36 b(A)g(robust,)663
-1270 y(tamp)r(er-eviden)n(t,)18 b(censorship-resistan)n(t,)i(w)n(eb)g
-(publishing)f(system.)24 b(In)18 b Fq(Pr)l(o)l(c.)k(9th)g(USENIX)663
-1362 y(Se)l(curity)29 b(Symp)l(osium)p Fx(,)d(pages)g(59{72,)i(August)d
-(2000.)523 1377 y
+540 y(tamp)r(er-eviden)n(t,)18 b(censorship-resistan)n(t,)i(w)n(eb)g
+(publishing)f(system.)24 b(In)18 b Fn(Pr)l(o)l(c.)k(9th)g(USENIX)663
+631 y(Se)l(curity)29 b(Symp)l(osium)p Fu(,)d(pages)g(59{72,)i(August)d
+(2000.)523 646 y
 SDict begin H.S end
- 523 1377 a 523 1377 a
+ 523 646 a 523 646 a
 SDict begin 11 H.A end
- 523 1377 a 523
-1377 a
+ 523 646 a 523 646
+a
 SDict begin [ /View [/XYZ H.V] /Dest (cite.mojotech) cvn H.B /DEST
 pdfmark end
- 523 1377 a Black 76 x Fx(33.)p Black 43 w(Bryce)i(Wilco)n
-(x-O'Hearn.)39 b(Exp)r(eriences)27 b(Deplo)n(ying)h(a)f(Large-Scale)h
-(Emergen)n(t)g(Net)n(w)n(ork.)663 1544 y(In)e Fq(Pe)l(er-to-Pe)l(er)32
+ 523 646 a Black 76 x Fu(31.)p Black 43 w(Bryce)i(Wilco)n(x-O'Hearn.)
+39 b(Exp)r(eriences)27 b(Deplo)n(ying)h(a)f(Large-Scale)h(Emergen)n(t)g
+(Net)n(w)n(ork.)663 814 y(In)e Fn(Pe)l(er-to-Pe)l(er)32
 b(Systems:)e(First)g(International)g(Workshop,)f(ITPTS)f(2002)p
-Fx(,)g(pages)g(104{)663 1636 y(110.)f(Springer-V)-6 b(erlag)25
+Fu(,)g(pages)g(104{)663 905 y(110.)f(Springer-V)-6 b(erlag)25
 b(Heidelb)r(erg,)i(Jan)n(uary)f(2002.)p Black Black eop
 end
 %%Trailer

Modified: GNUnet-docs/papers/ecrs/main.tex
===================================================================
--- GNUnet-docs/papers/ecrs/main.tex    2006-10-23 00:32:41 UTC (rev 3546)
+++ GNUnet-docs/papers/ecrs/main.tex    2006-10-23 22:24:56 UTC (rev 3547)
@@ -267,15 +267,14 @@
 The rest of the paper is organized as follows.  Section~\ref{related}
 contrasts the current work with mechanisms used in other
 censorship-resistant systems.  Section~\ref{content} describes the
-ECRS encoding scheme in detail.  Section~\ref{extensions} lists some
-extensions to the basic scheme.  Finally, Section~\ref{discussion}
+ECRS encoding scheme in detail. Finally, Section~\ref{discussion}
 discusses attacks on ECRS and contrasts it with previous work.
 
 % previous version
-This work builds on our earlier paper~\cite{esed} which was first
-published at ACISP 2001.  Since then, the encoding scheme has been
-revised to address additional requirements an to improve the security
-in various aspects.  This paper reflects these changes.
+%This work builds on our earlier paper~\cite{esed} which was first
+%published at ACISP 2001.  Since then, the encoding scheme has been
+%revised to address additional requirements an to improve the security
+%in various aspects.  This paper reflects these changes.
 
 
 
@@ -283,7 +282,7 @@
 
 A large number of censorship-resistant (or at least
 fault-tolerant) publishing systems have been proposed in recent years
-\cite{anderson96eternity,chen99prototype,clark99distributed,freehaven-berk,feamster-infranet,herlihy87how,waldman2001tangler,pub00}.
+\cite{anderson96eternity,chen99prototype,clark99distributed,herlihy87how,waldman2001tangler,pub00}.
 The proposed protocols differ in various aspects unrelated to the
 specifics of the encoding mechanism, such as content replication and the use of
 anonymous or steganographic communication.  Characteristic of all of
@@ -349,64 +348,6 @@
 censorship by intermediaries easier.
 
 
-\subsection{Free Haven}
-
-In Free Haven~\cite{freehaven-berk}, documents are split into $n$
-shares which are distributed over a number of servers.  Any $k$ out of
-$n$ shares are sufficient to reconstruct the entire
-document~\cite{rabin89efficient}. To retrieve a document, the user
-must obtain the key that was used to sign the document from some
-source outside the Free Haven network.  The design of Free Haven
-itself does not discuss any search functionality.  The user then
-forwards the key to the server which encrypts and sends its share of
-the document.
-
-Shares are encoded with an information dispersal algorithm (IDA).
-Hosts are still able to exercise editorial control over the content
-since the IDA does not prevent hosts from decoding parts of the
-plaintext.  Also, the $k$ out of $n$ share reconstruction scheme does
-not allow reconstruction of a file by mixing shares from independent
-insertions with different values for $k$ or $n$.
-
-
-\subsection{Mnet and Mojo Nation}
-
-Mnet is the successor of Mojo Nation~\cite{mojotech}, a peer-to-peer
-network that was the first to focus on using economic incentives when
-trading content.  As the descendant of a commercial product, Mnet
-focuses mostly on efficiency and reliability.  Nevertheless, Mnet
-encrypts files with AES using a user-supplied key to allow for
-privacy.  The file is then broken into shares using an erasure code.
-Multiple shares are identified with an SHA-1 hash and stored in an
-inode.  The file can be retrieved using the hash of the inode and the
-symmetric encryption key.
-
-The use of whole-file AES encryption and the use of an erasure code
-forces Mnet, as with Freenet, to store a second copy of the entire
-file in the Mnet data store even if the user retains a copy of the
-file in plaintext.  The encoding makes it infeasible to encode parts
-of the file on request.  The free selection of the AES key allows
-independent users to create completely different shares for identical
-files.  Since the encryption of the content is a perfectly independent
-pass over the file, other encodings such as ECRS and Freenet's
-encoding could be easily extended to include this behavior if desired
--- without the need to mandate a certain style of AES encryption.
-
-
-\subsection{Publius}
-
-Publius~\cite{pub00} is a static network that uses Shamir's
-algorithm~\cite{shamir} to split the key required to restore stored
-files between the available servers.  The encrypted file is then
-stored on all servers.  The servers cannot decrypt the file as the key
-is never revealed to them.
-
-Publius keys are random strings.  The system does not provide any
-search mechanism and expects the users to obtain the keys from an
-alternate source.  Publius never discards any content and thus assumes
-that disk space is never a limitation.
-
-
 \subsection{Tangler}
 
 The Tangler network~\cite{waldman2001tangler} is a system where new
@@ -423,19 +364,19 @@
 system after the censorship operation.
 
 Tangler has some similarities with ECRS.  In particular, it uses hash
-trees for integrity checks on fixed-size blocks of data.  However, 
+trees for integrity checks on fixed-size blocks of data.  However,
 unlike ECRS, the Tangler encoding uses Shamir's secret
 sharing~\cite{shamir} to entangle the block with other, pre-existing
-blocks, preferably from other documents.  Both Tangler and ECRS
-(as well as Freenet) use cryptographically signed data,
-which Tangler calls collections.  
-ECRS has analogous constructions to Tangler's collections, referred to
-in this paper as {\em directories} and {\em namespaces}; however, unlike
-ECRS, a Tangler collection has a versioned root which explicitly lists
-all of the contents in the collection, resulting in one of Tangler's
-global synchronization problems. %  [FIXME: better w/ CITE].  
-Placing a document in a Freenet
-subspace or ECRS namespace only requires that it be adequately signed.
+blocks, preferably from other documents.  Both Tangler and ECRS (as
+well as Freenet) use cryptographically signed data, which Tangler
+calls collections.  ECRS has analogous constructions to Tangler's
+collections, referred to in our technical report~\cite{ecrstechreport}
+as {\em directories} and {\em namespaces}; however, unlike ECRS, a
+Tangler collection has a versioned root which explicitly lists all of
+the contents in the collection, resulting in one of Tangler's global
+synchronization problems. % [FIXME: better w/ CITE].  Placing a
+document in a Freenet subspace or ECRS namespace only requires that it
+be adequately signed.
 
 
 \subsection{Gnutella and FastTrack} % what does DirectConnect do?
@@ -479,7 +420,7 @@
 
 Various distributed file systems based on a peer-to-peer
 infrastructure have been built in recent
-years~\cite{cfs:sosp01,mazires00sfs,mazieres02building,muthitacharoen02ivy,rowstron01storage}.
+years~\cite{cfs:sosp01,mazieres02building,muthitacharoen02ivy,rowstron01storage}.
 These systems typically do not focus on censorship resistance and
 consequently do not encrypt the contents.  Modern systems
 like~\cite{cfs:sosp01,rowstron01storage} route content using
@@ -603,7 +544,7 @@
 are encrypted in order to make it impossible for the intermediaries to
 determine what they are storing or transmitting.  Part~\ref{iblocks}
 then describes how files are split into those data blocks.
-Parts~\ref{sec:search} through~\ref{kblocks} motivate and explain how
+Part~\ref{sec:search} motivates and explains how
 ECRS enables users to search for content without exposing the
 plaintext of the keyword or the corresponding content and how
 intermediaries can verify that a given encrypted reply matches the
@@ -696,7 +637,7 @@
 integrated solution is clearly desirable.  Related work on secure
 indexing~\cite{secure2004goh} allows servers to retrieve documents by
 keyword without learning about the rest of the document.  The scheme
-that will be described in Section~\ref{kblocks} improves on this by
+described in this section improves on this by
 keeping the keyword itself private.  Additionally, it still allows
 intermediaries to verify the correct operation of the server.  It also
 avoids the need for the publisher to encrypt the document with the
@@ -718,105 +659,9 @@
 possibility of returning arbitrary nonsense might make such incentive
 schemes impractical.
 
-But how can a system prevent peers from returning invalid responses to
-a keyword-based search?  Since it is inherent in the nature of such a
-search that the initiator does not know precisely what content is
-desired, it is impossible for the query to completely determine the
-reply.  For this reason, schemes like CHK cannot be applied to the
-keyword-search problem: in CHK, the query hash completely determines the
-reply.  As a result, a keyword-based search mechanism where a query
-should possibly have multiple valid results cannot be implemented
-based on CHK.  Since for this kind of search there cannot be any
-completely deterministic link between the keyword and the content,
-ECRS must trust the user who is uploading the content to provide a
-valid link.  That user must specify appropriate keywords (and
-metadata) that properly describes the content.  Clearly this trust may
-be misplaced.  The uploader may specify keywords that have no semantic
-relation with the content.  One solution to this problem is the use of
-namespaces, which attack the issue by enabling users to learn which
-uploaders are trustworthy.
+% \subsection{Keyword search} \label{kblocks}
 
-
-\subsection{Namespaces} \label{sblock}
-
-One way to avoid searching in an untrustworthy global keyword space
-that may contain mostly inappropriately-labeled content is to restrict
-the search to name\-spaces.  A name\-space is a keyword space that
-contains content that is cryptographically signed with the same
-private key.  The concept of name\-spaces is also present in
-Freenet~\cite{clark99distributed}, but with Freenet it is not possible
-to obtain multiple results by searching a name\-space.  Fortunately, it
-is easy to add {\em searchable} name\-spaces to ECRS.
-
-In ECRS, a name\-space is identified by a public-private key pair (also
-referred to as the pseu\-do\-nym).  The private key is used to sign
-the content that is placed into the name\-space, and the public key (or
-more precisely, the hash of the public key) is used as a public handle
-that is used to refer to the name\-space.  Any user can create any
-number of pseudonyms.  Once the user accesses files from a particular
-name\-space it is possible to form an opinion about a particular
-pseudonym, which can then be used to target the search.
-
-Adding name\-spaces to the design requires a new type of block, called
-an {\em SBlock}.  An {\em SBlock} contains the key and query hash
-(CHK) of the top {\em IBlock} together with the metadata belonging to
-the content, thereby allowing users that receive an {\em SBlock} to
-download the file.  However, this data is encrypted such that
-intermediaries do not learn anything about the referenced file.  The
-encryption key is the hash of an identifier that the inserter chose
-for the content.  The identifier does not have to be unique and can,
-for example, be a keyword (to allow searching the name\-space) or a
-password (for private content).  The encrypted portion of the {\em
-SBlock} is followed by a hash code which is the {\em query} identifier
-for the {\em SBlock}.  The query identifier is the hash of the key
-(which makes it the hash of the hash of the identifier).  When a user
-searches a name\-space, the request contains the hash of the public
-key of the pseudonym together with the query identifier.  By using the
-hash of the key as the query identifier, the correct {\em SBlock} can
-be identified by intermediaries but not decrypted.  At the same time,
-only the identifier and the hash of the public key of the pseudonym
-are required to construct both the query identifier needed to search
-the name\-space and the key needed to decrypt the {\em SBlock}.
-Finally, {\em SBlock}s contain digital signature of the other
-contents.  This allows intermediaries to verify that a given {\em
-SBlock} was created by the owner of the name\-space.
- 
-Since {\em SBlock}s are signed, it is possible to allow updates.
-Without a digital signature, a secure update mechanism is impossible,
-since anyone could publish a potentially illegitimate update.  If the
-update requires a matching digital signature, forged updates are
-impossible. In order to allow content updates, the metadata of an {\em
-SBlock} can contain information about when and under which identifiers
-updates may be published.  If such forward pointers are present, the
-owner of the namespace can decide to publish updates to a particular
-file at a later time.  Since the private key used for signing is owned
-by a single entity, consistency issues from parallel updates do not
-arise.  ECRS does not prevent the owner of the name\-space from publishing
-conflicting updates.
-
-It should be recognized that the same file can be part of multiple
-name\-spaces under multiple identifiers without the need for storing the
-file multiple times in the network.  The {\em IBlocks} and {\em
-DBlocks} of the file do not need to be changed when the name\-space
-or name\-space identifier changes.
-
-Name\-spaces cannot completely solve the search problem.  Most
-importantly, users would still have to find the name\-spaces themselves,
-and while it can be assumed that users can guess keywords, they are
-unlikely to be able to guess public keys for a name\-space search.  ECRS
-alleviates this problem by also offering a pure keyword-based search in a
-{\em global} keyword space where any user can advertise content.
-Here, the disadvantage is clearly that it is possible for malicious
-users to pollute the global keyword space with advertisements and
-other inappropriate data.  However, it is assumed that in that case
-users will use keywords that are more difficult to guess or only use
-the global keyword space to discover trustworthy name\-spaces, thus
-avoiding spam most of the time.
-
-
-\subsection{Keyword search} \label{kblocks}
-
-This section describes how information about name\-spaces or the CHK
+We will now describe how information about CHK
 keys that are necessary to retrieve a file can be obtained by
 searching using natural language {\em keywords} -- without revealing
 the keywords to intermediaries.  Searching requires the content
@@ -965,128 +810,6 @@
 \end{figure*}
 
 
-
-\section{Extensions} \label{extensions}
-
-The vanilla ECRS encoding scheme still leaves some practical problems
-that should be addressed to facilitate real-life usability.  For
-example, the manual effort of assigning or guessing keywords should be
-minimized. Also, the overall system should be efficient in practice.
-In particular, the system requires peers to frequently handle small,
-per-block queries, many of which may not have a answer that is locally
-available.  The following subsections present some ideas on how these
-issues can be addressed.
-
-
-\subsection{Keyword inference} \label{keywords}
-
-One problem with ECRS is that the content must often be associated
-with keywords.  Although this is vastly better than forcing the user
-to rely on ``meaningless" bitstrings as the only identifier, the keys
-must still be chosen so that the target audience can guess them.  The
-simplest non-technical solution for this problem is for a group of
-users to agree on an informal standard for keywords.  If content
-providers want to make it easy for others to guess a keyword, it is
-typically useful to follow informal conventions for keyword selection.
-For example, a reasonable convention may be to only use lower-case
-letters.
-
-A larger problem for a keyword-based search is that users may be
-reluctant to put in the effort to provide good keywords for the
-content that they provide.  A solution to this problem is the {\tt
-libextractor} library~\cite{le2005}.  {\tt libextractor} is a library
-for metadata extraction that is used to automatically extract keywords
-and other metadata, such as descriptions, comments and mime-types from
-files of various formats.
-
-
-\subsection{Directories}
-
-Another approach to avoiding searches is to group files into
-directories.  Directories can help with the search problem since they
-reduce the need for searching.  Also, they can be used to bundle
-similar content and thus help users avoid inappropriately labeled
-data.  If several files of such a directory have appropriate
-descriptions, it is likely that the other files will also have been
-provided by a non-malicious party.
-
-Integrating directories into the ECRS scheme is fairly
-straightforward.  A directory is simply a file that contains any
-number of {\em SBlock}s or {\em KBlock}s in plaintext (!).  Like
-files, directories are immutable and are subjected to the same
-encoding for sharing.
-
-Note that it is possible for users to assemble a directory that refers
-to any combination of files: files the user inserted personally, files
-that the user downloaded, files that the user encountered as search
-results but never downloaded, or even invalid data (which would be
-interpreted as references that correspond to non-existent files).
-Directories can also refer to other directories, allowing users to
-build navigable structures similar to file systems or the World Wide
-Web.  In particular it is possible to refer to contents of other users
-and even to files or directories that are supposed to be published in
-the future.  Figure~\ref{fig:network} illustrates some of the possible
-reference relationships between the various constructs.
-
-
-\begin{figure*}[t]
-\begin{center}
-\small
address@hidden
-  *+[F]{SBlock(\underline{Alice})}  {\ar@/_/[rr]} & & Directory_1 
{\ar@/_/[ll]}  address@hidden>}[dll]} address@hidden>}[dl]} 
address@hidden>}[d]}  & *+[F]{KBlock(``food")} address@hidden>}[l]} \\ 
-  *+[F]{SBlock(\underline{Bob})}  address@hidden>}[dr]} & 
*+[F]{KBlock(``soda")} address@hidden>}[d]} & *+[F]{KBlock(``soda")} 
address@hidden>}[d]}  & *+[F]{KBlock(``cola")} address@hidden>}[dl]} \\
-  *+[F]{KBlock(``bob")} address@hidden>}[u]} & Document_1  & Document_2 & 
Document_3 \\
-} 
-\caption{
-ECRS allows the formation of complicated network structures.  In this
-example, the {\em SBlock} of pseudonym \underline{\it {Alice}}
-eventually allows to retrieve two of the documents encoded in the
-system, as does {\em Kblock} for keyword ``food".  Boxes
-denote simple blocks that serve as entry-points.  The directory and
-the documents consist of trees of possibly many CHK-encoded blocks.
-Searching for keyword ``soda" would return two results pointing
-to different resources.  Note that all the encoded resources,
-including the one document with no pointers to it, can be retrieved by
-knowing the CHK keys of their root {\em IBlock}s. }
-\label{fig:network} 
-\end{center}
-\end{figure*}
-
-
-\subsection{Efficient lookups with bloom filters}
-
-Given that a query only requires the transmission of a hash code, the
-number of queries that any given peer may receive is quite high.  The
-bandwidth required for the response can often be discounted, since
-a peer may only be able to respond to a fraction of the
-received queries.  Assuming that queries dominate the traffic, over 50
-queries per second could be transmitted over a slow modem line.  Many
-peers might not be able to perform disk-based database lookups at such 
-rates. Worse, if peers are sharing gigabytes of content, simply 
-keeping the index information in memory is also often no longer feasible.
-
-In order to dramatically reduce the necessary number of database
-accesses, ECRS can be supplemented with a bloom filter~\cite{bloom},
-which is a probabilistic data structure that uses little memory and
-can be used to filter out queries that definitely cannot be answered
-by the local peer.  The bloom filter is guaranteed to allow all
-queries that can be locally answered through the filter, and will
-reject all but a statistically insignificant number of queries that
-cannot be answered locally.
-
-The size of the bloom filter in memory that is required to reduce the
-number of false-positives to approximately 3\% is about one byte (8
-bit with 5 bloom tests, $2^{-5} \approx 3\%$) per entry.  This reduces
-the memory requirements for the index by a factor of 16-64, depending
-on the size of the hash.  Since a node occasionally needs to remove
-content from the local database, additional bit counters for the bloom
-filter should be stored on the disk.  The assumption is that
-changes to the filter are rare compared to the frequency of queries.
-Queries that pass through the bloom filter are forwarded to the
-database layer which then attempts to locate the content.
-
-
-
 \section{Discussion} \label{discussion}
 
 The fact that each {\em DBlock} can be encoded independently from any
@@ -1124,7 +847,7 @@
 distribution of load for downloading purposes.
 
 
-\subsection{Attacks}
+% \subsection{Attacks}
 
 ECRS is open to two types of attacks from censors.  The most obvious
 attack is to guess keywords and use those to compute queries for
@@ -1171,13 +894,13 @@
 
 Another serious type of attack is spamming the global keyword space
 with useless content.  Popular keywords are an easy target since they
-are by nature easily guessed.  Name\-spaces can theoretically eliminate
-this problem, however they create a new difficulty in assessing which
-pseudonyms represent users that provide valuable content.  A secure
-reputation system, like Advogato~\cite{levien03advogato}, may be a
-step towards a technical solution for this problem.  A possibly more
-important challenge for future work is making such complex solutions
-easily accessible for the average user.
+are by nature easily guessed.  Directories and
+name\-spaces~\cite{ecrstechreport} are additional constructs which can
+help with this problem, especially in combination with secure
+reputation systems, such as Advogato~\cite{levien03advogato}. However,
+these technical solutions leave an important challenge for future
+work, which is making such complex solutions easily accessible for the
+average user.
 
 
 %
@@ -1220,71 +943,6 @@
 % \nocite{cohen02replication} % for now
 
 
-\subsection{{\em KBlocks} or triple-hash}
-
-The triple-hash that was used instead of {\em KBlock}s in our earlier
-work ~\cite{esed} allows for an attack by an active, participating
-adversary.  The following paragraphs first briefly present the original
-scheme and discuss the attack, and then compare it with the {\em KBlock}
-approach taken in this paper.
-
-Let an {\em RBlock} be a new kind of block that also contains the
-metadata of a file (including the top CHK data).  The only difference
-between {\em RBlock}s and {\em KBlock}s is that {\em RBlock}s are
-encrypted and requested using the following triple-hash scheme.  For
-each keyword $k$, the {\em RBlock} $R$ is encrypted with $H(k)$ and
-stored as the pair $\{H(H(k)), E_{H(k)}(R)\}$.  Using the keyword as
-the source for the key allows the receiver of the file to obtain the
-key by guessing.
-
-Querying for an {\em RBlock} is {\bf not} straightforward.  The
-problem is that the intuitive choice for a query hash, $H(H(k))$ does not
-give intermediaries a way to verify that the (encrypted) response is
-correct.  Instead of using $H(H(k))$, the initiator sends the
-so-called {\em triple-hash} query $H(H(H(k)))$.  A peer that has stored
-$E_{H(k)}(R)$ under $H(H(k))$ can match the query hash with the response
-and send back the pair $\{H(H(k)), E_{H(k)}(R)\}$.  Intermediaries can
-verify that the proof of authenticity, $H(H(k))$, hashes to the query
-$H(H(H(k)))$.  Malicious peers cannot construct the proof $H(H(k))$
-without guessing $k$ or inverting the hash function.
-
-The problem with the triple-hash is that an adversary that is routing
-a response to a triple-hash request can substitute the encrypted
-content in the $\{H(H(k)), E_{H(k)}(CHK, size)\}$ response while
-maintaining the $H(H(k))$ token.  The resulting reply $\{H(H(k)), X\}$
-still looks like a valid response to the triple-hash query
-$H(H(H(k)))$.  The triple-hash thus does not protect against such a
-substitution attack by an intermediary.  The impact of the attack is
-such that the network would propagate and possibly cache the invalid
-replies.  The attack will not prevent the spread of valid replies
-through other routes in the system since multiple results to the same
-query are possible.  Furthermore, any user searching for $K$ will not
-see the invalid results.  The reason is that the attempt to decrypt
-$X$ with $H(K)$ will (with high probability) result in a malformed
-{\em RBlock}.  Thus, the end-user is still protected from this type of
-spam.  Nevertheless, the adversary can abuse network resources in the
-form of transmission and caching of invalid data.
-
-Replacing the triple-hash with {\em KBlock}s for ECRS comes at a
-relatively high price.  Where the triple-hash only requires a simple
-hash operation to verify replies, {\em KBlock}s need to perform a
-public key operation.  Worse, when publishing content or searching,
-the triple-hash scheme again only requires a few quick hash operations
-to compute the query or the content.  With {\em KBlock}s, the cost
-increases to additionally generating a public-private key pair in
-addition to a public key operation and hash operations.  
-
-Both {\em KBlocks} and the triple-hash are vulnerable to the guessing
-attack.  Guessing is slightly easier for the triple-hash since the
-computation for each guess is much cheaper.  Overall, {\em KBlocks}
-work better than the triple-hash against adversaries that
-indiscriminately attempt to abuse network resources, but at the
-expense of higher CPU utilization even in the absence of an attack.
-Thus, using the triple-hash scheme may still be reasonable in networks
-with limited CPU power or less stringent security requirements.
-
-
-
 \section{Conclusion} \label{conclusion}
 
 This paper has described an encoding scheme which hides shared data

Modified: GNUnet-docs/papers/ecrs/ref.bib
===================================================================
--- GNUnet-docs/papers/ecrs/ref.bib     2006-10-23 00:32:41 UTC (rev 3546)
+++ GNUnet-docs/papers/ecrs/ref.bib     2006-10-23 22:24:56 UTC (rev 3547)
@@ -559,3 +559,11 @@
   year = "2002",
   url = "citeseer.nj.nec.com/cohen02replication.html" 
 }
+
address@hidden ecrstechreport,
+    author = "Krista Bennett and Christian Grothoff and Tzvetan Horozov and J. 
T. Lindgren",
+    title = "{An Encoding for Censorship-Resistant Sharing}",
+    url = "http://gnunet.org/download/ecrs.ps";,
+    note = "available at http://gnunet.org/download/ecrs.ps";,
+    year = "2003"
+}

Added: GNUnet-docs/papers/ecrs/techreport.tex
===================================================================
--- GNUnet-docs/papers/ecrs/techreport.tex      2006-10-23 00:32:41 UTC (rev 
3546)
+++ GNUnet-docs/papers/ecrs/techreport.tex      2006-10-23 22:24:56 UTC (rev 
3547)
@@ -0,0 +1,1322 @@
+\documentclass[runningheads]{llncs}
+%\documentclass[global]{svjour}
+%\pagestyle{empty}.
+
+\usepackage[ansinew]{inputenc}
+\usepackage{amsmath,amssymb,exscale,multicol,epsfig,graphics,verbatim,float}
+\usepackage[all,knot,poly]{xy}
+\usepackage{hyperref}
+
+\hypersetup{backref,
+  pdfpagemode=FullScreen,
+  pdftitle=An Encoding for Censorship-Resistant Sharing,
+  pdfauthor=Christian Grothoff and Krista Grothoff and Tzvetan Horozov and 
Jussi T. Lindgren,
+  pdfkeywords=encoding privacy censorship resistant sharing file peer 
distributed system network private information retrieval,
+  pdfsubject=Privacy Enhancing Technologies,
+  colorlinks=true}
+
+
+\begin{document}
+
+% Annoying grammar/style notes:
+% - try to avoid the use of ``encoding" as a noun on its own. ``encoding
+%   scheme" or ``encoding mechanism" is better.
+%
+% Notes by JTL (06.jun.05): 
+% - word 'convergent' is used in the end of the doc 'out of the blue'
+%   (we should use it earlier when the idea is introduced)
+%   [CG: yes, that's why I have the MIT FARSITE system in Todo above ]
+%   [DONE]
+% - while I tried to simulate a 'first time reader' the big picture
+%   of ECRS appeared a little muddled. A diagram of the relation of
+%   the encoding and the extensions might be helpful. Now we have 
+%   just one figure and it lacks SBlocks. Also the directories, 
+%   bloomfilters and whatnots are left dangling unconnected in some limbo.
+%   [ CG: A good figure would be more than welcome. ]
+% - (!) now more of the paper rests on the 'unprincipled' k-blocks
+%   approach (that is, we present it as novel and offer no analysis, proof,
+%   or other formal handling). i.e. this could be good basis for adversarial 
+%   paper rejection. for a naive example, could collisions be a problem?
+%   Since this can't be the case with usual pubkey crypto (I assume), 
+%   its not a problem here, but maybe should add a mention of this anyway. 
+%   [ CG: Collisions are obviously as much as a problem as they are for 
+%     RSA key generation; I'm not sure what the problem is. ]
+% - Are there other ways the k-blocks can leak? Could we make the
+%   concept appear more solid by adding citations to some pubkey papers 
+%   that analyze them w.r.t. the currently trendy security concerns? 
+%   [ CG: actually, yes.  There is a paper to refer to.  
+%     Dan Boneh and others, Searchable public key encryption; need to
+%     find and read ]
+% - Whats the style of the intended journal? Is it ok to be on this 
high-handed 
+%   level as we are? For example, is it ok to take the noninvertibility 
+%   of a hash-function for granted and not provide a cite?
+%   [ CG: Yes, it is for an audience that is intimately familiar with 
cryptographic
+%     primitives.  Besides, lacking such references for the intended audience
+%     would be something reviewers should point out without seeing it as a 
+%     reason for rejection (assuming we wrong wrt target audience/terminology)]
+%
+
+\title{An Encoding for Censorship-Resistant Sharing}
+\author{Christian Grothoff\inst{1}, Krista Grothoff\inst{2}, Tzvetan 
Horozov\inst{3}, Jussi T. Lindgren\inst{4}}
+\authorrunning{C. Grothoff, K. Grothoff, T. Horozov, J.T. Lindgren}
+
+% \offprints{}
+\institute{
+  Department of Computer Science, University of Denver, USA \\
+ address@hidden 
+\and
+  CERIAS / Interdepartmental Program in Linguistics, Purdue University, USA \\
+ address@hidden 
+\and
+  Motorola Labs, USA \\
+ address@hidden 
+\and
+  Department of Computer Science, University of Helsinki, Finland \\
+  address@hidden
+% \\
+%\vspace{0.4cm}
+% \texttt{http://www.gnu.org/software/GNUnet/} \\
+% address@hidden
+}
+
+\maketitle
+
+\begin{abstract} 
+This paper describes ECRS, a content encoding scheme for
+censor\-ship-resistant peer-to-peer networking.  The proposed encoding
+mechanism supports both efficient dissemination of encrypted data as
+well as encrypted queries over this data.  Intermediaries can verify
+that an encrypted response matches an encrypted query without being
+able to decrypt either.  Furthermore, ECRS allows users to share files
+encrypted under descriptive keys which are the basis for querying the
+network for content.  With the proposed scheme, effective load
+balancing and swarm distribution are possible.  The encoding mechanism
+handles data in small chunks, which can also be efficiently encoded on
+demand from the plaintext.  The proposed encoding is conceptually
+simple and easy to implement.
+\end{abstract}
+
+% \keywords{privacy, sharing, verification, peer-to-peer}
+
+\section{Introduction}
+
+% censorship 
+Internet censorship is a powerful weapon for oppressive governments,
+corporations and pressure groups in stifling dissent and suppressing
+dissemination of information.  A variety of techniques can be used to
+censor online information; hard drives can be confiscated and
+searched, traffic can be filtered, and denial-of-service attacks can
+be performed against servers.  In addition to these technical
+measures, individuals can be singled out and subjected to harassment.
+A common requirement for censorship in any form is the ability to
+{\em recognize} the objectionable information.
+
+% the big goal and how it relates
+The goal of the encoding scheme presented in this paper is to make it
+difficult to identify information stored or transmitted in a open {\em
+decentralized} wide-area network where many {\em untrusted}
+peers want to share data.  The proposed encoding scheme, called ECRS,
+allows both content and queries to be encrypted while being
+transmitted or stored on the network.  This ensures that 
+intermediaries remain oblivious to the data they are
+handling, reducing the chance that they can be singled out
+for an attack or held liable.  It is important to note that the
+primary goal is {\em deniability} for the peers storing and
+transmitting the information.  These peers must be able to claim that
+decrypting the information is infeasible {\em for them}.  
+
+We find it acceptable if a censor who knows precisely which content to
+censor is able to match a request or response against that particular
+content.  ECRS is supposed to protect intermediaries that merely
+transmit information and that need to be able to show that they are
+unable to recognize objectionable information for their own
+protection.  The ultimate senders and receivers of the data should be
+protected by other means, such as anonymous
+routing~\cite{dingledine02mixminion,syverson97anonymous}.  As a
+content encoding mechanism, ECRS could be integrated into almost any
+generic peer-to-peer infrastructure to enhance its resistance to
+censorship.  Specific details on how peers communicate or route data
+are therefore outside of the scope of this paper.
+
+The definition of censorship resistance used in this work is similar
+to the formal definition given by~\cite{perng2005csr}, in which
+censorship resistance is defined as the inability of a censor to
+restrict a targeted document while allowing at least one other
+document to be retrieved.  In the context of~\cite{perng2005csr}, the
+adversary is granted extensive capabilities.  In particular, the
+adversary is allowed to inspect every request or response, transcript
+the processing steps of all the peers and then decide whether to
+filter (drop) a given response.  Availability of the service and
+anonymity of the participants are specifically decoupled from
+censorship resistance.  For ECRS, an almost identical adversary model
+is selected -- while anonymity and availability can certainly be
+additional (and often important) goals, ECRS is an orthogonal
+mechanism.  The primary difference in the adversary model for ECRS is
+that the attacker is not allowed to be able to guess the exact content
+that is to be censored.  This is an important restriction in practice.
+In the absence of such a restriction,~\cite{perng2005csr} shows that
+censorship resistance requires a form of private information retrieval
+for which each operation has complexity $O(n)$, where $n$ is the size
+of the datastore.  In return for restricting the guessing capabilities
+of the adversary, ECRS can achieve $O(1)$ complexity for its
+operations.  Considering that scalability is also an important goal,
+we believe that this is a reasonable trade-off.
+
+As an encoding scheme, ECRS has to address two important issues.
+First of all, users must be able to find content, preferably by
+searching with simple, natural language keywords.  Metadata related to
+the contents of the file should be made available as part of the
+search result and prior to the download of the actual file.  Metadata
+can include anything from user-provided content descriptions to
+thumbnails (for images) and automatically detected mime-types.
+Secondly, the encoding scheme should support swarming -- that is, the
+download of a file from multiple peers.  Since it is possible that
+identical data could be inserted by many independent parties, the
+encoding scheme should always result in identical encodings for
+identical source files.  This special form of encryption was probably
+first described in~\cite{clark99distributed} and later termed {\em
+convergent encryption}~\cite{farsite}.  With convergent encryption,
+the existence of multiple copies of the same content can be detected;
+this knowledge can then be used to increase fault-tolerance,
+performance and availability.
+
+% why is this hard? open network == adversaries playground
+Unfortunately, it is not enough to just meet requirements related to
+efficient storage and retrieval of the content.  A public filesharing
+network should be open to new participants without any restrictive
+form of access control.  This opens the network to malicious
+participants.  Thus, the encoding scheme should guarantee the {\em
+integrity} of the content, even in the presence of malicious
+participants.  The encoding mechanism must ensure that invalid replies
+are detected and that peers can distinguish valuable content from
+maliciously generated noise.  This is particularly important in three
+cases.  First, if large files are assembled using blocks from multiple
+peers, some of these peers may be malicious and try to corrupt the
+file.  These corruptions should be detected on a small granularity
+level and repaired with correct data from other peers.  Second, for
+searches it should be difficult for peers to spam the result set;
+otherwise, the users may drown in useless information.  Finally,
+intermediaries that are merely routing the content should be able to
+detect invalid replies.  This enables the existence of local economies
+(such as those in~\cite{ebe2003}) and prevents the retransmission and
+replication of corrupted data by non-malicious peers.
+
+This paper introduces the primitives that ECRS uses to achieve these
+goals: a specific altered variant of the Content Hash Key (CHK), a
+primitive used in~\cite{clark99distributed}, and {\em KBlocks}, a
+novel construction which adds functionality to the ECRS scheme while
+avoiding a proposed attack on the triple-hash primitive used
+in~\cite{esed}.  These primitives allow data to be inserted under
+multiple natural-language keywords at minimal cost in space, and
+queried using natural language boolean searches.  Furthermore, the
+primitives give ECRS the means to identify, encrypt, decrypt and
+verify data, all while avoiding attacks by a non-guessing intermediate
+adversary.  Verification of content by intermediate hosts is made
+possible without revealing the keys necessary to decrypt content, and
+the amount of data corruption an adversary can inject before being
+detected is limited to a small size.  Additionally, the construction
+of these primitives makes ECRS quite scalable, and assists the
+encoding scheme in encouraging load-balancing, distribution and
+replication of content, and swarming. These primitives (and their
+functionality) are described in greater detail later in the paper.
+
+
+%% now some meat
+%ECRS uses two fundamental primitives in the overall encoding scheme.
+%The majority of the data is encrypted with a variant of Freenet's CHK
+%encoding~\cite{clark99distributed}.  CHK stands for Content Hash Key;
+%in other words, the content is encrypted with a key that is derived
+%from a cryptographic hash of the plaintext.  The encrypted content is
+%hashed again to obtain the query hash, which is then used to request the
+%content.  This key-query pair is what the receiver needs to download
+%and decrypt the content.
+%
+%The primary difference between the use of CHK in ECRS and that used in
+%by~\cite{clark99distributed} is that ECRS does not subject entire
+%files to the CHK encoding.
+%Instead, files are split into fixed-size blocks which could then be
+%individually distributed (and replicated) across peers in the network;
+%this is a natural way to balance the load and to enable swarming.  These
+%fixed-size blocks can be individually identified, encrypted, decrypted and
+%verified.  Each block is identified by one or two hash codes, and the
+%blocks are encrypted using a key that is seperate from the hashes
+%used for identification.  Verification only requires the
+%encrypted block and the query hash; it does not reveal the key required to
+%decrypt the block.  ECRS guarantees that it is hard to forge a
+%response that passes verification for a given query, and splitting files
+%into blocks allows ECRS to detect data corruption on the block level.
+%Malicious peers cannot transmit more than the selected block size of
+%invalid data before being detected.
+%
+%The second primitive used by ECRS, the {\em KBlock}, is completely
+%novel.  {\em KBlock}s allow users to securely obtain the key-query
+%pair by entering a natural language keyword selected by the content
+%provider. The primitive used to achieve this in~\cite{esed}, the
+%triple hash, is improved on in this work in that KBlocks {\em cannot}
+%be attacked successfully by a non-guessing intermediary.  This kind of
+%attack is avoided through the use of signatures from deterministically
+%generated public keys to sign content advertisements.  Additionally,
+%using {\em KBlock}s, documents can be inserted under multiple keys at
+%a minimal cost in terms of space.  Users can perform boolean searches
+%of the form {\tt a AND b} which then return the documents which were
+%inserted under a matching set of keywords.  Before the download, the
+%user can refine the search results using the metadata associated with
+%the file.
+
+% organization
+The rest of the paper is organized as follows.  Section~\ref{related}
+contrasts the current work with mechanisms used in other
+censorship-resistant systems.  Section~\ref{content} describes the
+ECRS encoding scheme in detail.  Section~\ref{extensions} lists some
+extensions to the basic scheme.  Finally, Section~\ref{discussion}
+discusses attacks on ECRS and contrasts it with previous work.
+
+% previous version
+This work builds on our earlier paper~\cite{esed} which was first
+published at ACISP 2001.  Since then, the encoding scheme has been
+revised to address additional requirements an to improve the security
+in various aspects.  This paper reflects these changes.
+
+
+
+\section{Related Work} \label{related}
+
+A large number of censorship-resistant (or at least
+fault-tolerant) publishing systems have been proposed in recent years
+\cite{anderson96eternity,chen99prototype,clark99distributed,freehaven-berk,feamster-infranet,herlihy87how,waldman2001tangler,pub00}.
+The proposed protocols differ in various aspects unrelated to the
+specifics of the encoding mechanism, such as content replication and the use of
+anonymous or steganographic communication.  Characteristic of all of
+these systems is the use of replication and the need to ensure data
+integrity.  For an overview of content replication strategies see
+\cite{cohen02replication}.  The censorship-resistant systems all use
+some form of content encoding to hide the specifics of the content
+from the servers.
+
+
+\subsection{Freenet}
+
+The main content encoding scheme used in
+Freenet~\cite{clark99distributed} uses CHKs: the hash of the content
+is used as the key.  Freenet has several other types of keys which are
+used to refer the user to content-hash keys.  These different key
+types are used to allow additional features such as content signing,
+personal name\-spaces and splitting of content.  Freenet's CHK yields
+the same encrypted data for independent encryptions.  However, it has
+several disadvantages.
+
+One drawback of Freenet's CHK is that it does not allow direct sharing
+of files from the local drive without encrypting and inserting them
+first.  Thus, if a node operator wishes to keep content directly
+accessible on the host, a local copy of the plaintext must be kept in
+addition to the encrypted content in the Freenet database.  Also,
+Freenet does not support swarming.  One reason for this is that
+Freenet's CHK encoding can only verify a file in its entirety and not
+pin-point corruptions on a smaller scale.
+
+One way to obtain the CHK key of a file in Freenet is to search a
+private subspace.  A subspace contains a set of CHK keys that have
+been cryptographically signed by the owner of the subspace and placed
+into the subspace under a certain keyword.  These signed references
+are called subspace-signed keys (SSK).  Given the subspace-prefix and
+the keyword, users can obtain the CHK key.  The form of the keywords
+can be freely chosen, allowing for conventions such as dates in the
+keyword to be used for updates (in Freenet's terminology, these are
+called {\em date based redirects}).
+
+In addition to CHK and SSK keys, Freenet supports KSK keys.  A KSK key
+is essentially a CHK key stored in plaintext (!) under a keyword.  The
+protocol attempts to ensure that there cannot be two different CHK
+keys available in the network under the same keyword.  While
+collisions for KSK keys are supposedly not allowed, the protocol
+cannot prevent them from occurring.  If an attacker inserts meaningless
+data under a common keyword, Freenet will try to preserve that content
+because it is frequently requested.  Subsequently, that keyword can no
+longer be used for any useful data since the peers attempt to enforce
+the no-collisions rule.  Note that the no-collision rule cannot be
+enforced for malicious peers.  For these reasons, the Freenet
+developers consider the use of KSK keys insecure and recommend against
+using them.
+
+As a result, Freenet effectively does not support any type of
+keyword-based search.  The CHK keys must be found by using keyservers
+or ad-hoc applications built upon the basic solution by using
+incremental numbers as parts of keywords in signed namespaces.  The
+disadvantage of keyservers is that they must be maintained if the
+indexed keys are to be kept up-to-date.  Freenet does not seem to use
+any encryption for the data stored in KSK or SKS keys and therefore
+fails to prevent intermediaries from learning the CHK keys, making
+censorship by intermediaries easier.
+
+
+\subsection{Free Haven}
+
+In Free Haven~\cite{freehaven-berk}, documents are split into $n$
+shares which are distributed over a number of servers.  Any $k$ out of
+$n$ shares are sufficient to reconstruct the entire
+document~\cite{rabin89efficient}. To retrieve a document, the user
+must obtain the key that was used to sign the document from some
+source outside the Free Haven network.  The design of Free Haven
+itself does not discuss any search functionality.  The user then
+forwards the key to the server which encrypts and sends its share of
+the document.
+
+Shares are encoded with an information dispersal algorithm (IDA).
+Hosts are still able to exercise editorial control over the content
+since the IDA does not prevent hosts from decoding parts of the
+plaintext.  Also, the $k$ out of $n$ share reconstruction scheme does
+not allow reconstruction of a file by mixing shares from independent
+insertions with different values for $k$ or $n$.
+
+
+\subsection{Mnet and Mojo Nation}
+
+Mnet is the successor of Mojo Nation~\cite{mojotech}, a peer-to-peer
+network that was the first to focus on using economic incentives when
+trading content.  As the descendant of a commercial product, Mnet
+focuses mostly on efficiency and reliability.  Nevertheless, Mnet
+encrypts files with AES using a user-supplied key to allow for
+privacy.  The file is then broken into shares using an erasure code.
+Multiple shares are identified with an SHA-1 hash and stored in an
+inode.  The file can be retrieved using the hash of the inode and the
+symmetric encryption key.
+
+The use of whole-file AES encryption and the use of an erasure code
+forces Mnet, as with Freenet, to store a second copy of the entire
+file in the Mnet data store even if the user retains a copy of the
+file in plaintext.  The encoding makes it infeasible to encode parts
+of the file on request.  The free selection of the AES key allows
+independent users to create completely different shares for identical
+files.  Since the encryption of the content is a perfectly independent
+pass over the file, other encodings such as ECRS and Freenet's
+encoding could be easily extended to include this behavior if desired
+-- without the need to mandate a certain style of AES encryption.
+
+
+\subsection{Publius}
+
+Publius~\cite{pub00} is a static network that uses Shamir's
+algorithm~\cite{shamir} to split the key required to restore stored
+files between the available servers.  The encrypted file is then
+stored on all servers.  The servers cannot decrypt the file as the key
+is never revealed to them.
+
+Publius keys are random strings.  The system does not provide any
+search mechanism and expects the users to obtain the keys from an
+alternate source.  Publius never discards any content and thus assumes
+that disk space is never a limitation.
+
+
+\subsection{Tangler}
+
+The Tangler network~\cite{waldman2001tangler} is a system where new
+content is entangled with old content.  This entanglement introduces a
+dependency which makes it impossible to retrieve a piece of content if
+the other content that it was entangled with is lost.  While this
+makes it impossible to censor specific content without losing
+unrelated content (since the entanglement pairs are chosen randomly),
+this process {\em doubles} the amount of data that must be transported
+by the network.  This scheme fails to address the fact that an
+adversary may not care about losing other data when attempting to
+censor content.  Also, nothing prevents the adversary from first
+making a copy of important documents and re-inserting them into the
+system after the censorship operation.
+
+Tangler has some similarities with ECRS.  In particular, it uses hash
+trees for integrity checks on fixed-size blocks of data.  However, 
+unlike ECRS, the Tangler encoding uses Shamir's secret
+sharing~\cite{shamir} to entangle the block with other, pre-existing
+blocks, preferably from other documents.  Both Tangler and ECRS
+(as well as Freenet) use cryptographically signed data,
+which Tangler calls collections.  
+ECRS has analogous constructions to Tangler's collections, referred to
+in this paper as {\em directories} and {\em namespaces}; however, unlike
+ECRS, a Tangler collection has a versioned root which explicitly lists
+all of the contents in the collection, resulting in one of Tangler's
+global synchronization problems. %  [FIXME: better w/ CITE].  
+Placing a document in a Freenet
+subspace or ECRS namespace only requires that it be adequately signed.
+
+
+\subsection{Gnutella and FastTrack} % what does DirectConnect do?
+
+% ? are these censorship-resistant? ;) if anything goes, there's lot
+% of choices. -- jtl
+% ! well, they're obviously at least not doing a good job, but that
+%does not mean that they should not be discussed *briefly*.  The
+%problem/attack applies to a whole range of systems and is a good
+% motivation for the merkle tree.  Also, the decentralization of
+% gnutella was one of the reasons why it was heralded as the 
+% ``censorship resistant" successor of napster... -- cg
+% I agree... they're ``related work" in that sense, brief mention
+% is fine as long as we keep it brief -- klb
+
+The FastTrack network\footnote{Protocol description from the giFT-FastTrack
+  project is available at
+\vspace{3mm}
+
+\url{http://gnunet.org/papers/FAST-TRACK-PROTOCOL}.
+
+\vspace{2mm}
+} and modern variants of the Gnutella protocol use the SHA-1 hash code
+of the shared files to uniquely identify files.  The SHA-1 hash codes
+are used to identify identical files stored on different peers.  The
+peers can then use this information to download the file from multiple
+sources (swarming).  The problem with this approach is that the SHA-1
+hash codes can only be verified once the entire file has been
+retrieved.  To ruin a download, it suffices for a malicious peer
+to contribute just one single invalid block.  The presence of an invalid
+block could only be detected after the entire file was retrieved.
+Worse, the simplistic SHA-1 approach does not give peers any way to
+identify the location of the invalid block or the malicious peer.
+
+Neither FastTrack nor Gnutella use file encryption.  Consequently, they
+do not provide any protection from censorship beyond decentralized
+routing of requests.
+
+
+\subsection{Distributed File Systems}
+
+Various distributed file systems based on a peer-to-peer
+infrastructure have been built in recent
+years~\cite{cfs:sosp01,mazires00sfs,mazieres02building,muthitacharoen02ivy,rowstron01storage}.
+These systems typically do not focus on censorship resistance and
+consequently do not encrypt the contents.  Modern systems
+like~\cite{cfs:sosp01,rowstron01storage} route content using
+distributed hash tables~\cite{maymounkov02kademlia,stoica01chord} to
+achieve $O(\log n)$ scalability.  Writable distributed file systems
+typically require users to authenticate themselves before being
+granted access to the system by one of the
+servers~\cite{mazires00sfs}.  ECRS focuses on encrypting shared data
+while allowing peers to verify the integrity of the encrypted data
+that they are routing.  In SUNDR~\cite{mazieres02building} a similar
+problem is addressed; here users can detect tampering by the
+(untrusted) server that is storing the data in a setting where
+multiple users are updating the same data.  SUNDR achieves what is
+called {\em fork consistency}, a guarantee that if the server passes a
+version that lacks the changes of one client to another client at one
+point in time, it can never again make the changes of either client
+visible to the others.  This is a weaker guarantee than the optimal
+situation where any misbehavior is detected; however, it is the
+strongest possible property that can be achieved given the security
+model used.  ECRS does not allow users with distinct pseudonyms to
+update the same content without essentially creating two files.  This
+allows ECRS to guarantee that peers can never return an {\em invalid}
+result since every copy can be uniquely identified at all times.
+
+
+\section{ECRS encoding} \label{content}
+
+% so we have another introduction here w/ clear redundancy -jtl
+% the first paragraph sucks too
+
+The primary requirements for the ECRS encoding are {\it plausible
+deniability} and {\it robustness}.  Plausible deniability describes
+the ability of the participants to claim ignorance of the nature of
+transferred content.  The idea here is that by making it hard for
+intermediaries to determine the contents that they are routing, they
+are less likely to casually infringe on the privacy of other users, to
+be forced to do so by an adversary, or to be held responsible
+for the actions of others that they were unwittingly
+facilitating.\footnote{If the data cannot be identified, editorial
+control is technically impossible.  In {\em Stratton Oakmont
+v. Prodigy}, an Internet provider was found liable for hosting a
+bulletin board on which offensive messages had been posted.  This
+finding resulted because the provider had hired individuals to
+exercise editorial control over content.  If the provider had merely
+published messages from users without interference, the provider would
+potentially not have been held accountable~\cite{stratton_oakmont}.}
+Robustness is the ability of the encoding to resist attacks such as data
+corruption and spam.  Spam is different from data corruption in that
+the goal of the spammer is to direct the user to undesirable content,
+possibly hiding useful information in a sea of useless results.
+Naturally the encoding should not significantly increase the amount of
+data that needs to be transferred.
+
+The ECRS encoding scheme addresses these requirements.  ECRS provides
+plausible deniability by hiding the nature of the queries and
+responses from intermediaries through encryption.  Despite the fact
+that queries and responses are encrypted, intermediaries can {\em
+verify} that the responses are valid with respect to a particular
+query.  Thus, the encoding mechanism provides robustness against
+tampering and false replies.  Additional robustness is gained in ECRS
+by splitting files into blocks that can be {\em independently}
+verified, stored and distributed across the network.  This makes it
+easy for protocols using ECRS to incorporate features such as swarm
+distribution~\cite{hartman99swarm}, load balancing and
+microeconomics~\cite{ebe2003}.  These features are also significant
+from the viewpoint of scalability.  When all handled blocks are small,
+nodes can participate in the network activity even if their own
+resources are limited.  Also, storing small, individually
+unintelligible pieces of potentially objectionable content is likely
+to further support plausible deniability.
+
+
+
+ECRS uses two fundamental primitives in the overall encoding scheme.
+The majority of the data is encrypted with a variant of Freenet's CHK
+encoding~\cite{clark99distributed}, where CHK stands for Content Hash
+Key.  In other words, the content is encrypted with a key that is
+derived from a cryptographic hash of the plaintext.  The encrypted
+content is hashed again to obtain the query hash which is used to
+request the content.  This key-query pair is what the receiver needs
+to download and decrypt the content.
+
+The primary difference between the use of CHK in ECRS and that used
+in~\cite{clark99distributed} is that ECRS does not subject entire
+files to the CHK encoding.  Instead, files are split into fixed-size
+blocks which could then be individually distributed (and replicated)
+across peers in the network; this is a natural way to balance the load
+and to enable swarming.  These fixed-sized blocks can be individually
+identified, encrypted, decrypted and verified.  Each block is
+identified by one or two hash codes, and the blocks are encrypted
+using a key that is independent of the hashes used for identification.
+Verification only requires the encrypted block and the query; it does
+not reveal the key required to decrypt the block.  ECRS guarantees
+that it is hard to forge a response that passes verification for a
+given query, and splitting files into blocks allows ECRS to detect
+data corruption on the block level.  Malicious peers cannot transmit
+more than the selected block size of invalid data before being
+detected.
+
+The second primitive used by ECRS, the {\em KBlock}, is completely
+novel.  {\em KBlock}s allow users to securely obtain the key-query
+pair by entering a natural language keyword selected by the content
+provider.  The primitive used to achieve this in~\cite{esed}, the
+triple hash, is improved on in this work in that {\em KBlock}s {\em
+cannot} be attacked successfully by a non-guessing intermediary.  The
+triple hash scheme was vulnerable to possibile substitution
+attacks by intermediaries.  {\em KBlock}s defeat this
+attack by signing content advertisements using
+deterministically generated public keys.  
+Additionally, by using {\em KBlock}s, documents can
+be inserted under multiple keys at a minimal cost in terms of space.
+Users can perform boolean searches of the form ``a AND b" which then
+return the documents which were inserted under a matching set of
+keywords.  Before the download, the user can refine the search results
+using the metadata associated with the file.
+
+
+
+The rest of this Section gives a bottom-up description of ECRS.  After
+a brief overview, Part~\ref{dblocks} shows how individual data blocks
+are encrypted in order to make it impossible for the intermediaries to
+determine what they are storing or transmitting.  Part~\ref{iblocks}
+then describes how files are split into those data blocks.
+Parts~\ref{sec:search} through~\ref{kblocks} motivate and explain how
+ECRS enables users to search for content without exposing the
+plaintext of the keyword or the corresponding content and how
+intermediaries can verify that a given encrypted reply matches the
+(encrypted) query.  Finally, the core of ECRS is summarized in the
+form of the encoding algorithm and a protocol example.
+
+\begin{figure*}[t]
+\begin{center}
+\small
address@hidden 
+  &&&& KBlock\ar[d] &&&&\\
+  &&&& address@hidden>}[d]\ar[drrr] &&&& \\
+  & address@hidden>}[d]\ar[dr] &&& 
address@hidden>address@hidden>address@hidden>}[dr] &&& 
+    address@hidden>}[d]\ar[dr] & \\
+  DBlock_1\ar[dd]+<0cm,0.25cm> & address@hidden>}[dd]+<0cm,0.25cm> & 
DBlock_{l}\ar[dd]+<0cm,0.25cm>&& address@hidden>}[dd]+<0cm,0.25cm> 
+  && DBlock_{m}\ar[dd]+<0cm,0.25cm> & address@hidden>}[dd]+<0cm,0.25cm> & 
DBlock_{n}\ar[dd]+<0cm,0.25cm> \\
+  &&&& \save[d]*+[F]{\texttt{\hspace*{4.3cm} Original data \hspace*{4.3cm}}} 
\restore &&&& \\ % FIXME: put this in a box and across all rows!
+  &&&& &&&& \\
+} % FIXME: replace solid arrows with dotted arrows for dotted targets!
+\caption{Simple encoding of a file using a tree of CHK blocks 
+         ($DBlock$s and $IBlock$s are CHK encoded) with 
+         one $KBlock$ to allow for a keyword-based search.}
+ \label{encodingfile}
+\end{center}
+\end{figure*}
+
+\subsection{Overview} 
+
+In ECRS, the encoded representation of a file is a collection of
+blocks.  There are four types of blocks: {\em DBlocks}, {\em IBlocks},
+{\em SBlocks} and {\em KBlocks}.  The maximum size of all blocks in
+ECRS is supposed to be fixed as some small number (e.g. 32Kb).
+The blocks are used to create a tree structure of the encoded file
+(see Figure~\ref{encodingfile}).  The actual file data is encoded in
+{\em DBlocks} which are organized by a tree of {\em IBlocks}.  The
+{\em IBlocks}, which are similar to UNIX inodes~\cite{mckusick84fast},
+are indirection blocks which encode how the leaf nodes of the tree can
+be reassembled into the original file.  Every {\em IBlock} provides
+the data required to request, decrypt and verify the contents of its
+direct children.  Verification is done using hash codes of the
+children, similar to the way a Merkle tree
+\cite{merkle89tree} works.  Given the size of the file, the top {\em
+  IBlock} uniquely identifies the contents of the entire file.  {\em
+  KBlocks} and {\em SBlocks} facilitate obtaining the key hash (to decrypt) 
+ and query hash (to request) for the top {\em IBlock}.
+
+\subsection{{\em DBlocks}} \label{dblocks} % CHK
+
+Every {\em DBlock} corresponds to 32Kb of the original file (the last
+block may be padded with zeros if the file end does not fall on a 32Kb
+boundary).  {\em DBlock}s are encrypted using a symmetric cipher.  For
+the {\em DBlock} that corresponds to a plaintext block $B_i$, the key
+for the cipher is $K_i := H(B_i)$.  This guarantees that the same
+block will always be encrypted with the same key.  Also, the integrity
+of the decrypted block can be verified by checking that $K_i =
+H(B_i)$.  The encrypted block $E_{K_i}(B_i)$ can be uniquely
+identified by its hash $Q_i := H(E_{K_i}(B_i))$.  A peer can query for
+$E_{K_i}(B_i)$ using the query hash $Q_i$ without revealing $K_i$.
+Consequently, the pair $(K_i, Q_i)$ can be used to retrieve and
+decrypt $B_i$.  Intermediaries can verify that a response
+$E_{K_i}(B_i)$ matches a query hash $Q_i$ without knowing $K_i$.
+Freenet~\cite{clark99distributed} uses the same scheme to encrypt
+entire files (not just blocks) and the authors call the pair $(K_i,
+Q_i)$ a content hash key (CHK).
+
+\subsection{{\em IBlocks}} \label{iblocks} % CHK+Tree
+
+For files larger than the blocksize, multiple CHK keys are required to
+retrieve the content.  For example, with a blocksize of 32Kb and
+512-bit hash codes, a 32Mb file would be split into 1024 {\em
+DBlocks}, $B_1, \ldots, B_{1024}$, of length 32Kb each.  Groups of up
+to 256 CHKs are assembled into one 32Kb {\em IBlock}, resulting in
+four {\em IBlock}s for the 32Mb file. The resulting {\em IBlock}s are
+CHK encrypted in the exact same manner as the {\em DBlocks} and their
+CHK-keys are again grouped into {\em IBlocks} until only one CHK key
+is left.  For the 32Mb file, the CHKs for the four {\em IBlock}s are
+thus collected in one final top {\em IBlock}.  The additional space
+requirements for encoding the file are typically less than 1\% of the
+original file size.
+
+\subsection{Finding files} \label{sec:search}
+
+
+The CHK encoding described so far is useful for transmitting content
+that is encoded and yet verifiable for intermediaries.  However, a
+practical file-sharing scheme needs to provide functionality such that
+the users can obtain the query hash and the key that are now necessary
+in order to retrieve and decrypt the encoded content.  While
+out-of-band communication of those CHK keys is certainly feasible, an
+integrated solution is clearly desirable.  Related work on secure
+indexing~\cite{secure2004goh} allows servers to retrieve documents by
+keyword without learning about the rest of the document.  The scheme
+that will be described in Section~\ref{kblocks} improves on this by
+keeping the keyword itself private.  Additionally, it still allows
+intermediaries to verify the correct operation of the server.  It also
+avoids the need for the publisher to encrypt the document with the
+public key of a {\em specific} receiver, thereby theoretically
+permitting arbitrary participants to access same encrypted content (as
+long as they are able to obtain or guess the necessary keyword).
+
+The key problem for the search is that simply publishing CHK keys in
+plaintext under certain keywords (as done in Freenet with KSK keys)
+has various drawbacks.  First, intermediaries would learn about the
+CHK keys that they are storing or transmitting, which could allow them
+to easily censor search results.  Second, the keywords are directly
+exposed to the intermediaries, which again would facilitate
+censorship.  Finally, peers would be able to send invalid replies that
+refer to inappropriate content.  This may be just a nuisance if
+malicious peers use this for advertising (a kind of behavior can be
+observed on gnutella from time to time).  Possibly worse, if a network
+wants to economically reward peers for returning search results, the
+possibility of returning arbitrary nonsense might make such incentive
+schemes impractical.
+
+But how can a system prevent peers from returning invalid responses to
+a keyword-based search?  Since it is inherent in the nature of such a
+search that the initiator does not know precisely what content is
+desired, it is impossible for the query to completely determine the
+reply.  For this reason, schemes like CHK cannot be applied to the
+keyword-search problem: in CHK, the query hash completely determines the
+reply.  As a result, a keyword-based search mechanism where a query
+should possibly have multiple valid results cannot be implemented
+based on CHK.  Since for this kind of search there cannot be any
+completely deterministic link between the keyword and the content,
+ECRS must trust the user who is uploading the content to provide a
+valid link.  That user must specify appropriate keywords (and
+metadata) that properly describes the content.  Clearly this trust may
+be misplaced.  The uploader may specify keywords that have no semantic
+relation with the content.  One solution to this problem is the use of
+namespaces, which attack the issue by enabling users to learn which
+uploaders are trustworthy.
+
+
+\subsection{Namespaces} \label{sblock}
+
+One way to avoid searching in an untrustworthy global keyword space
+that may contain mostly inappropriately-labeled content is to restrict
+the search to name\-spaces.  A name\-space is a keyword space that
+contains content that is cryptographically signed with the same
+private key.  The concept of name\-spaces is also present in
+Freenet~\cite{clark99distributed}, but with Freenet it is not possible
+to obtain multiple results by searching a name\-space.  Fortunately, it
+is easy to add {\em searchable} name\-spaces to ECRS.
+
+In ECRS, a name\-space is identified by a public-private key pair (also
+referred to as the pseu\-do\-nym).  The private key is used to sign
+the content that is placed into the name\-space, and the public key (or
+more precisely, the hash of the public key) is used as a public handle
+that is used to refer to the name\-space.  Any user can create any
+number of pseudonyms.  Once the user accesses files from a particular
+name\-space it is possible to form an opinion about a particular
+pseudonym, which can then be used to target the search.
+
+Adding name\-spaces to the design requires a new type of block, called
+an {\em SBlock}.  An {\em SBlock} contains the key and query hash
+(CHK) of the top {\em IBlock} together with the metadata belonging to
+the content, thereby allowing users that receive an {\em SBlock} to
+download the file.  However, this data is encrypted such that
+intermediaries do not learn anything about the referenced file.  The
+encryption key is the hash of an identifier that the inserter chose
+for the content.  The identifier does not have to be unique and can,
+for example, be a keyword (to allow searching the name\-space) or a
+password (for private content).  The encrypted portion of the {\em
+SBlock} is followed by a hash code which is the {\em query} identifier
+for the {\em SBlock}.  The query identifier is the hash of the key
+(which makes it the hash of the hash of the identifier).  When a user
+searches a name\-space, the request contains the hash of the public
+key of the pseudonym together with the query identifier.  By using the
+hash of the key as the query identifier, the correct {\em SBlock} can
+be identified by intermediaries but not decrypted.  At the same time,
+only the identifier and the hash of the public key of the pseudonym
+are required to construct both the query identifier needed to search
+the name\-space and the key needed to decrypt the {\em SBlock}.
+Finally, {\em SBlock}s contain digital signature of the other
+contents.  This allows intermediaries to verify that a given {\em
+SBlock} was created by the owner of the name\-space.
+ 
+Since {\em SBlock}s are signed, it is possible to allow updates.
+Without a digital signature, a secure update mechanism is impossible,
+since anyone could publish a potentially illegitimate update.  If the
+update requires a matching digital signature, forged updates are
+impossible. In order to allow content updates, the metadata of an {\em
+SBlock} can contain information about when and under which identifiers
+updates may be published.  If such forward pointers are present, the
+owner of the namespace can decide to publish updates to a particular
+file at a later time.  Since the private key used for signing is owned
+by a single entity, consistency issues from parallel updates do not
+arise.  ECRS does not prevent the owner of the name\-space from publishing
+conflicting updates.
+
+It should be recognized that the same file can be part of multiple
+name\-spaces under multiple identifiers without the need for storing the
+file multiple times in the network.  The {\em IBlocks} and {\em
+DBlocks} of the file do not need to be changed when the name\-space
+or name\-space identifier changes.
+
+Name\-spaces cannot completely solve the search problem.  Most
+importantly, users would still have to find the name\-spaces themselves,
+and while it can be assumed that users can guess keywords, they are
+unlikely to be able to guess public keys for a name\-space search.  ECRS
+alleviates this problem by also offering a pure keyword-based search in a
+{\em global} keyword space where any user can advertise content.
+Here, the disadvantage is clearly that it is possible for malicious
+users to pollute the global keyword space with advertisements and
+other inappropriate data.  However, it is assumed that in that case
+users will use keywords that are more difficult to guess or only use
+the global keyword space to discover trustworthy name\-spaces, thus
+avoiding spam most of the time.
+
+
+\subsection{Keyword search} \label{kblocks}
+
+This section describes how information about name\-spaces or the CHK
+keys that are necessary to retrieve a file can be obtained by
+searching using natural language {\em keywords} -- without revealing
+the keywords to intermediaries.  Searching requires the content
+provider to supply metadata about the file; in particular, the content
+provider must supply a list of keywords.  While the metadata is
+published as part of the {\em KBlock} and made available to the
+recipient the keywords are only used to compute the {\em KBlock}s and
+not made available to other users directly.  It is assumed that the
+user searching for data is able to {\em guess} at least one of these
+keywords.  The nature of the search implies that there is no direct,
+cryptographically verifiable relation between the keyword and the
+content.  Many files can match a given keyword.  Different users may
+sometimes have a different perception of what is a correct semantic
+match.  Thus, a keyword search always has the potential of resulting
+in search results that a user may find inappropriate.  It is also not
+possible to prevent a user from supplying keywords that have no
+semantic relation with the content and thereby increasing the chance
+of other users finding undesirable results for those keywords.
+
+Despite these fundamental drawbacks, ECRS should (and can) give some
+unusual {\em guarantees} for keyword-based searches.  First, the
+keyword used for a search is not exposed to intermediaries in a way
+that would allow them to easily exercise editorial control (i.e. to
+censor queries). Note again that a guessing attack in which the
+intermediary guesses a keyword, computes the respective query hash, and
+attempts to match the query hash to the incoming query, is considered
+acceptable; plausible deniability for the intermediaries is unaffected
+by this attack.  Secondly, only peers that have content available
+under the given keyword should be able to produce a valid response.
+In other words, the ultimate responder must have succeeded in guessing
+the keyword.  This is important since it prevents peers from making up
+replies for arbitrary requests on-the-fly.  If peers were able to
+respond to any keyword query without having to at least guess the
+keyword, they could use this to spam every possible search, rendering
+the keyword search mostly useless.  Forcing responders to guess
+keywords does not eliminate the problem completely; however, it does
+limit the attack to the common, easily-guessed keywords.  Finally, the
+verification that a response is valid should be possible not only for
+the final recipient, but also for intermediaries.
+
+ECRS achieves all of this with a {\em new cryptographic primitive}
+called {\it $K$-deterministic keys} which is a key pair $(Pub_{H(K)},
+Prv_{H(K)})$ generated from a keyword $K$.  The hash $H(K)$ of the
+keyword is used as the seed and the only input to the pseudo-random
+number generator that generates the public-private key pair. The
+authors are not aware of any previous use of $K$-deterministic keys.
+Given such a key pair, the inserting peer generates {\em KBlock}s by
+signing the metadata necessary to download the file with $Prv_{H(K)}$.
+{\em KBlock}s are essentially like {\em SBlock}s with the difference
+that the $K$-determinate key is used instead of the pseudonym.  The
+construction of a {\em KBlock} is shown in Figure~\ref{kblockdiagram}.
+
+\begin{figure*}[t]
+\begin{center}
+\small
+\xymatrix{
+  H(K) address@hidden>}[rrr]^{\texttt{(as random seed)}} } 
address@hidden>}[ddr]^{ \texttt{(as key)} }} &&& *+[F]{Keygen} 
address@hidden>}[dd]^{Prv_{H(K)}}} address@hidden>}[drr]^{Pub_{H(K)}}} & \\
+              &       &       &        &          & *+[F]{Join} 
address@hidden>}[r]} & KBlock \\
+  data  address@hidden>}[r]} & *+[F]{Encrypt} 
address@hidden>}[rr]_{E_{H(K)}(data)} } && *+[F]{Sign} address@hidden>}[urr]} 
\save[]+<3.1cm,0.4cm>*{ [E_{H(K)}(data)]_{Prv_{H(K)}} } \restore \\
+}
+\caption{The construction of a {\em KBlock}.  The hash $H(K)$ of the keyword 
$K$ is used to encrypt the
+        data and to seed the key generator.  The obtained private key 
$Prv_{H(K)}$ signs the encrypted data,
+        but is not otherwise used.  Finally, the public key $Pub_{H(K)}$ is 
appended to the signed data to
+        form the {\em KBlock}.}
+ \label{kblockdiagram}
+\end{center}
+\end{figure*}
+
+A peer searching for $K$ also computes $Pub_{H(K)}$ using the same
+deterministic key-generation algorithm ($Prv_{H(K)}$ is also computed
+but not used).  The peer then uses $H(Pub_{H(K)})$ as the query hash.
+Intermediaries can verify that the response is valid by checking the
+{\em KBlock}s signature against its public key, and checking that the
+public key hashes to the query hash.  Yet intermediaries are unable to
+decrypt the response or learn the keyword $K$ that was used to
+generate the public key without guessing.
+
+In conclusion, using {\em KBlock}s it is possible to allow
+intermediaries to verify the integrity of replies without learning the
+plaintext of the keyword or the response.  {\em KBlock}s require a
+keyword guess, making it it harder to reply to arbitrary queries with
+random data; they cannot prevent users from inserting such data under
+popular keywords.  The receiver of the {\em KBlock} can retrieve the
+rest of the file tree using CHK queries in the same way as it is done
+for {\em SBlock}s.
+
+
+\subsection{Summary}
+
+\begin{figure*}[t]
+\hrule
+\vspace{3mm}
+\small
+\begin{enumerate}
+ \item{Input: Content $C$, a list of keywords $\{K_1,...\}$ and metadata $D$.}
+ \item{Split content $C$ into blocks $B_i$, each of size 32Kb.  
+       Call these {\em DBlocks}. \label{split}}
+ \item{Compute hash values $H^{key}_i = H(B_i)$, $E_i = E_{H_{key}}(B_i)$ and 
+       $H^{query}_i = H(E_i)$.  Form {\em CHK}$_i$ from 
+           $(H^{query}_i, H^{key}_i)$.
+       Pad content (with zeros) if needed.\label{encryptStep}}
+ \item{Store $E_i$ under the name $H^{query}_i$.}
+ \item{If there is more than one block, group the blocks into disjoint sets 
$I_j$
+       of up to 256 members. For each $I_j$, create {\em Iblock}$_j$
+       containing the {\em CHK}s of the blocks in $I_j$. 
+       Add zero padding if needed.  Process each new 32Kb block obtained 
+       as in step~\ref{encryptStep}.}
+ \item{If the size of $C$ was smaller than 32Kb (and thus there is 
+       only one pair of hashcodes {\em CHK}$_0$),
+       create {\em SBlock}s and {\em KBlock}s containing 
+       {\em CHK}$_0$, the metadata $D$ about the content and
+       the original length of $C$. 
+       Encrypt and sign the resulting {\em SBlock}s and {\em KBlock}s.}
+\end{enumerate}
+\vspace{2mm}
+\hrule
+\caption{The ECRS encoding algorithm.}
+\label{ECRS}
+\end{figure*}
+
+The ECRS encoding algorithm is summarized in Figure~\ref{ECRS}.
+Figure~\ref{protocol} shows the sequence of messages exchanged
+by peers to download a 64Kb file starting with a keyword. 
+
+
+\begin{figure*}[t]
+\small
+\hrule
+\vspace{3mm}
+$B$ shares file which is encoded as $B_1, B_2$ and one {\em IBlock} under 
keyword ``test".
+\begin{description}
+ \item[$A \to B$:]{Query: $H(Pub_{H(``test")})$}
+ \item[$B \to A$:]{Response: 
$([E_{H(``test")}(Q_0,K_0,size)]_{Prv_{H(``test")}},Pub_{H(``test")})$
+%%%%\\
+                   (one {\em KBlock})}
+%: the encrypted and signed data, and the public key)}
+ \item[$A \to B$:]{Query: $Q_0$ (CHK-query)}
+ \item[$B \to A$:]{Response: $E_{K_0}(Q_1, K_1, Q_2, K_2)$ (encrypted {\em 
IBlock})}
+ \item[$A \to B$:]{Query: $Q_1$ and $Q_2$ (CHK-query)}
+ \item[$B \to A$:]{Response: $E_{K_1}(B_1)$ and $E_{K_2}(B_2)$ (encrypted {\em 
DBlock}s)}
+\end{description}
+\vspace{2mm}
+\hrule
+\caption{Example protocol for an ECRS download. $(Q_i,K_i)$ is a CHK pair to 
request and decrypt block $i$.}
+\label{protocol}
+\end{figure*}
+
+
+
+\section{Extensions} \label{extensions}
+
+The vanilla ECRS encoding scheme still leaves some practical problems
+that should be addressed to facilitate real-life usability.  For
+example, the manual effort of assigning or guessing keywords should be
+minimized. Also, the overall system should be efficient in practice.
+In particular, the system requires peers to frequently handle small,
+per-block queries, many of which may not have a answer that is locally
+available.  The following subsections present some ideas on how these
+issues can be addressed.
+
+
+\subsection{Keyword inference} \label{keywords}
+
+One problem with ECRS is that the content must often be associated
+with keywords.  Although this is vastly better than forcing the user
+to rely on ``meaningless" bitstrings as the only identifier, the keys
+must still be chosen so that the target audience can guess them.  The
+simplest non-technical solution for this problem is for a group of
+users to agree on an informal standard for keywords.  If content
+providers want to make it easy for others to guess a keyword, it is
+typically useful to follow informal conventions for keyword selection.
+For example, a reasonable convention may be to only use lower-case
+letters.
+
+A larger problem for a keyword-based search is that users may be
+reluctant to put in the effort to provide good keywords for the
+content that they provide.  A solution to this problem is the {\tt
+libextractor} library~\cite{le2005}.  {\tt libextractor} is a library
+for metadata extraction that is used to automatically extract keywords
+and other metadata, such as descriptions, comments and mime-types from
+files of various formats.
+
+
+\subsection{Directories}
+
+Another approach to avoiding searches is to group files into
+directories.  Directories can help with the search problem since they
+reduce the need for searching.  Also, they can be used to bundle
+similar content and thus help users avoid inappropriately labeled
+data.  If several files of such a directory have appropriate
+descriptions, it is likely that the other files will also have been
+provided by a non-malicious party.
+
+Integrating directories into the ECRS scheme is fairly
+straightforward.  A directory is simply a file that contains any
+number of {\em SBlock}s or {\em KBlock}s in plaintext (!).  Like
+files, directories are immutable and are subjected to the same
+encoding for sharing.
+
+Note that it is possible for users to assemble a directory that refers
+to any combination of files: files the user inserted personally, files
+that the user downloaded, files that the user encountered as search
+results but never downloaded, or even invalid data (which would be
+interpreted as references that correspond to non-existent files).
+Directories can also refer to other directories, allowing users to
+build navigable structures similar to file systems or the World Wide
+Web.  In particular it is possible to refer to contents of other users
+and even to files or directories that are supposed to be published in
+the future.  Figure~\ref{fig:network} illustrates some of the possible
+reference relationships between the various constructs.
+
+
+\begin{figure*}[t]
+\begin{center}
+\small
address@hidden
+  *+[F]{SBlock(\underline{Alice})}  {\ar@/_/[rr]} & & Directory_1 
{\ar@/_/[ll]}  address@hidden>}[dll]} address@hidden>}[dl]} 
address@hidden>}[d]}  & *+[F]{KBlock(``food")} address@hidden>}[l]} \\ 
+  *+[F]{SBlock(\underline{Bob})}  address@hidden>}[dr]} & 
*+[F]{KBlock(``soda")} address@hidden>}[d]} & *+[F]{KBlock(``soda")} 
address@hidden>}[d]}  & *+[F]{KBlock(``cola")} address@hidden>}[dl]} \\
+  *+[F]{KBlock(``bob")} address@hidden>}[u]} & Document_1  & Document_2 & 
Document_3 \\
+} 
+\caption{
+ECRS allows the formation of complicated network structures.  In this
+example, the {\em SBlock} of pseudonym \underline{\it {Alice}}
+eventually allows to retrieve two of the documents encoded in the
+system, as does {\em Kblock} for keyword ``food".  Boxes
+denote simple blocks that serve as entry-points.  The directory and
+the documents consist of trees of possibly many CHK-encoded blocks.
+Searching for keyword ``soda" would return two results pointing
+to different resources.  Note that all the encoded resources,
+including the one document with no pointers to it, can be retrieved by
+knowing the CHK keys of their root {\em IBlock}s. }
+\label{fig:network} 
+\end{center}
+\end{figure*}
+
+
+\subsection{Efficient lookups with bloom filters}
+
+Given that a query only requires the transmission of a hash code, the
+number of queries that any given peer may receive is quite high.  The
+bandwidth required for the response can often be discounted, since
+a peer may only be able to respond to a fraction of the
+received queries.  Assuming that queries dominate the traffic, over 50
+queries per second could be transmitted over a slow modem line.  Many
+peers might not be able to perform disk-based database lookups at such 
+rates. Worse, if peers are sharing gigabytes of content, simply 
+keeping the index information in memory is also often no longer feasible.
+
+In order to dramatically reduce the necessary number of database
+accesses, ECRS can be supplemented with a bloom filter~\cite{bloom},
+which is a probabilistic data structure that uses little memory and
+can be used to filter out queries that definitely cannot be answered
+by the local peer.  The bloom filter is guaranteed to allow all
+queries that can be locally answered through the filter, and will
+reject all but a statistically insignificant number of queries that
+cannot be answered locally.
+
+The size of the bloom filter in memory that is required to reduce the
+number of false-positives to approximately 3\% is about one byte (8
+bit with 5 bloom tests, $2^{-5} \approx 3\%$) per entry.  This reduces
+the memory requirements for the index by a factor of 16-64, depending
+on the size of the hash.  Since a node occasionally needs to remove
+content from the local database, additional bit counters for the bloom
+filter should be stored on the disk.  The assumption is that
+changes to the filter are rare compared to the frequency of queries.
+Queries that pass through the bloom filter are forwarded to the
+database layer which then attempts to locate the content.
+
+
+
+\section{Discussion} \label{discussion}
+
+The fact that each {\em DBlock} can be encoded independently from any
+other {\em DBlock} results in an important feature of ECRS called {\em
+on-demand encoding}.  Given a plaintext file and an index that maps a
+query hash to an offset in the file, the resulting {\em DBlock} can be
+encoded on-the-fly, without processing any other part of the file.
+This can be an important benefit if the user intends to keep the file
+in plaintext on the local drive.  In this case, the system can index
+the {\em DBlocks} without replicating the actual data completely,
+storing only the resulting {\em IBlocks} (and {\em SBlocks} and {\em
+KBlocks}) and then later producing the {\em DBlocks} only using the
+index and the original file.  This can result in rather dramatic
+savings in space (no replication of encoded content).
+
+Splitting files into blocks might be perceived as having a negative
+effect on the preservation of data.  If only one of the blocks is
+lost, the larger file can no longer be reconstructed.  Many other
+systems~\cite{freehaven-berk,mojotech} attempt to address this problem
+by either attempting to keep files intact, or by using erasure
+codes~\cite{rabin89efficient} to patch missing pieces.  While erasure
+codes could be used together with ECRS, they would conflict with the
+performance benefits of on-demand encoding.  Consequently, the primary
+mechanism to guard against the loss of files encoded with ECRS should
+be data replication.  Since ECRS splits files into blocks it should be
+possible for the network to duplicate blocks at a negligible cost per
+block.  Duplicating a complete file of several gigabytes would be much
+more costly and more likely to fail.  For large files, it may be
+difficult for a peer to find individual hosts that are willing (or
+able) to provide enough space to replicate the complete file in its
+entirety.  Also, the traffic burst that a large transfer would impose
+on the network might keep the participating nodes busy for too long.
+Blocks, on the other hand, can migrate quickly from host to host.
+Storing a large file on a single host also fails to facilitate
+distribution of load for downloading purposes.
+
+
+\subsection{Attacks}
+
+ECRS is open to two types of attacks from censors.  The most obvious
+attack is to guess keywords and use those to compute queries for
+specific {\em KBlock}s.  The adversary can then try to censor these
+queries.  Since the same content can be available under many keywords,
+this technique is not necessary successful.  However, this guessing
+attack does provide the opportunity for limited forms of censorship.
+An adversary could create a ``blacklist" of keywords and attempt to
+legally force operators to filter matching queries or replies.
+
+Instead of predicting keywords, the attacker can also try to obtain
+the exact contents of the file (or at least the exact contents of an
+incriminating part).  This maybe achieved by searching the network for
+certain keywords and then downloading the resulting content.  This way
+the attacker can again compute the query hash for the {\em DBlock}s and
+{\em IBlock}s and also obtain the encrypted {\em DBlock}s and {\em
+IBlock}s themselves.  Again, the adversary can then try to censor this
+data.  Note that this attack requires the adversary to obtain a copy
+of the content and then exercise a certain amount of control over the
+peers in the network. As users must have a way to decrypt the file
+solely by means of guessing the keyword, this attack cannot be
+avoided.  A fault-tolerant peer-to-peer routing protocol may be able
+to route the content around the censoring peers.
+
+If such an active censorship attack is known to occur on a large
+scale, a possible defense would be to publish the content with slight
+alterations for each keyword.  A single space inserted at the
+beginning of a text-document is sufficient to change {\em all} blocks
+of the ECRS encoding.\footnote{Note that only operations causing
+global shifts in the data have this property.  One single-character
+replacement changes only one root-to-leaf path in the encoding tree.}
+While this would defeat the use of convergent encryption and increase
+the storage and bandwidth requirements, this would make it infeasible
+for the censor to effectively censor all of the variants.  Since such
+a powerful active attacker is likely to be uncommon, the {\em default}
+in ECRS is to use convergent encryption.
+
+Both attacks fail to enable intermediaries to exercise editorial
+control over content in general.  While peers can theoretically be
+forced to censor well-known keywords and files, they are unable to
+censor new keywords or unknown content.  As small changes to the
+content or keyword are sufficient to make detection impossible, these
+types of censorship should be impractical.
+
+Another serious type of attack is spamming the global keyword space
+with useless content.  Popular keywords are an easy target since they
+are by nature easily guessed.  Name\-spaces can theoretically eliminate
+this problem, however they create a new difficulty in assessing which
+pseudonyms represent users that provide valuable content.  A secure
+reputation system, like Advogato~\cite{levien03advogato}, may be a
+step towards a technical solution for this problem.  A possibly more
+important challenge for future work is making such complex solutions
+easily accessible for the average user.
+
+
+%
+% Another or complementary direction might be some sort of pagerank 
+% style ranking of search results (if possible to pull off 
+% distributedly)... just a thought. I mean, suppose everyone trusts 
+% and likes "Jeff". After all, Jeff inserted a billion of britney spears
+% pictures. Now its still a bit difficult to find out which of 
+% those pictures are really good ones! -jtl
+%
+% ! + Content availability measuring! In a way its related to encoding,
+%   just as querying is. The question is: can there be any secure
+%   mechanism to measure if all blocks of a file exists in the network. 
+%   I think this pretty important. Pseudonyms are an informal
+%   move towards this direction too. -- jtl
+% : I don't quite see what this has to do specifically with the encoding.
+%   It has more to do with replication and routing, which are off-topic. -- cg
+% ! The point of future directions is precisely what it says. If there
+%   is no future work left in encoding, we should point people to the
+%   remaining problems w.r.t. the bigger concept. Besides, the paper
+%   somewhat tries to give the impression 'look, this here can be seen
+%   as an encoding problem'. What you are basically claiming 
+%   by 'off topic' is that there can be no trick that would connect 
+%   or require connecting content availability measuring to the 
+%   encoding that the data is represented in. For example, an
+%   encoding that would allow an incremental counter to be
+%   incremented *once* by anyone who has decrypted the block,
+%   would be a technique related to the encoding. I'm not
+%   saying that such technique would be feasible or would work, 
+%   what I'm saying that something similar, if possible impossible, 
+%   would belong to the encoding domain. -jtl
+% : Ok, so maybe we should tackle this together with the point of
+%   many other systems using erasure codes to ``heal" lost portions
+%   of files.  We say, replication is the solution, but obviously
+%   replication requires control over what gets replicated when;
+%   measuring availability is one thing that can help control
+%   replication.  Interestingly, there is another way:
+%   http://gnunet.org/papers/p2pmulti.pdf
+%   So we should also: \cite{cohen02replication}
+% \nocite{cohen02replication} % for now
+
+
+\subsection{{\em KBlocks} or triple-hash}
+
+The triple-hash that was used instead of {\em KBlock}s in our earlier
+work ~\cite{esed} allows for an attack by an active, participating
+adversary.  The following paragraphs first briefly present the original
+scheme and discuss the attack, and then compare it with the {\em KBlock}
+approach taken in this paper.
+
+Let an {\em RBlock} be a new kind of block that also contains the
+metadata of a file (including the top CHK data).  The only difference
+between {\em RBlock}s and {\em KBlock}s is that {\em RBlock}s are
+encrypted and requested using the following triple-hash scheme.  For
+each keyword $k$, the {\em RBlock} $R$ is encrypted with $H(k)$ and
+stored as the pair $\{H(H(k)), E_{H(k)}(R)\}$.  Using the keyword as
+the source for the key allows the receiver of the file to obtain the
+key by guessing.
+
+Querying for an {\em RBlock} is {\bf not} straightforward.  The
+problem is that the intuitive choice for a query hash, $H(H(k))$ does not
+give intermediaries a way to verify that the (encrypted) response is
+correct.  Instead of using $H(H(k))$, the initiator sends the
+so-called {\em triple-hash} query $H(H(H(k)))$.  A peer that has stored
+$E_{H(k)}(R)$ under $H(H(k))$ can match the query hash with the response
+and send back the pair $\{H(H(k)), E_{H(k)}(R)\}$.  Intermediaries can
+verify that the proof of authenticity, $H(H(k))$, hashes to the query
+$H(H(H(k)))$.  Malicious peers cannot construct the proof $H(H(k))$
+without guessing $k$ or inverting the hash function.
+
+The problem with the triple-hash is that an adversary that is routing
+a response to a triple-hash request can substitute the encrypted
+content in the $\{H(H(k)), E_{H(k)}(CHK, size)\}$ response while
+maintaining the $H(H(k))$ token.  The resulting reply $\{H(H(k)), X\}$
+still looks like a valid response to the triple-hash query
+$H(H(H(k)))$.  The triple-hash thus does not protect against such a
+substitution attack by an intermediary.  The impact of the attack is
+such that the network would propagate and possibly cache the invalid
+replies.  The attack will not prevent the spread of valid replies
+through other routes in the system since multiple results to the same
+query are possible.  Furthermore, any user searching for $K$ will not
+see the invalid results.  The reason is that the attempt to decrypt
+$X$ with $H(K)$ will (with high probability) result in a malformed
+{\em RBlock}.  Thus, the end-user is still protected from this type of
+spam.  Nevertheless, the adversary can abuse network resources in the
+form of transmission and caching of invalid data.
+
+Replacing the triple-hash with {\em KBlock}s for ECRS comes at a
+relatively high price.  Where the triple-hash only requires a simple
+hash operation to verify replies, {\em KBlock}s need to perform a
+public key operation.  Worse, when publishing content or searching,
+the triple-hash scheme again only requires a few quick hash operations
+to compute the query or the content.  With {\em KBlock}s, the cost
+increases to additionally generating a public-private key pair in
+addition to a public key operation and hash operations.  
+
+Both {\em KBlocks} and the triple-hash are vulnerable to the guessing
+attack.  Guessing is slightly easier for the triple-hash since the
+computation for each guess is much cheaper.  Overall, {\em KBlocks}
+work better than the triple-hash against adversaries that
+indiscriminately attempt to abuse network resources, but at the
+expense of higher CPU utilization even in the absence of an attack.
+Thus, using the triple-hash scheme may still be reasonable in networks
+with limited CPU power or less stringent security requirements.
+
+
+
+\section{Conclusion} \label{conclusion}
+
+This paper has described an encoding scheme which hides shared data
+from intermediaries.  The encoding uses convergent encryption, allows
+swarming and produces a ciphertext that is not significantly larger
+than the plaintext.  Individual blocks of the ciphertext can be
+generated from plaintext without reading unrelated parts of the
+original.  While dictionary attacks on the keywords or known plaintext
+attacks on the content are still possible, they are harmless with
+respect to the goal of deniability for intermediaries.  The basic
+encoding scheme can be extended with directories and name\-spaces.
+Name\-spaces allow for files and directories to be updated.  Using
+$K$-deterministic public-private keys for signing content it is
+possible to verify search results in a global keyword space.
+
+ECRS is implemented as a part of {\sc gnu}net, a secure platform for
+peer-to-peer networking.  In {\sc gnu}net, ECRS works towards
+implementing anonymous, censorship-resistant file-sharing.  {\sc
+gnu}net is free software and part of the GNU project.  The {\sc
+gnu}net code is approximately 100,000 lines of C code.  ECRS itself is
+implemented in about 8,000 LOC.  The code is freely available from the
+{\sc gnu}net webpage\footnote{\url{http://gnunet.org/}}.
+
+\subsection*{Acknowledgements}
+
+The authors thank Roger Dingledine for helpful comments on an earlier
+draft of this paper.
+
+
+{\small
+\bibliographystyle{plain}
+\bibliography{ref}
+}
+
+\end{document}

Modified: gnunet-gtk/src/common/helper.c
===================================================================
--- gnunet-gtk/src/common/helper.c      2006-10-23 00:32:41 UTC (rev 3546)
+++ gnunet-gtk/src/common/helper.c      2006-10-23 22:24:56 UTC (rev 3547)
@@ -375,6 +375,8 @@
                         struct GC_Configuration * c,
                         void * callback) {
   char * load;
+  char * path;
+  char * filename;
 
   ectx = e;
   cfg = c;
@@ -384,13 +386,19 @@
   saveCallsUp = YES;
 
   /* load the interface */
-#ifdef MINGW
+  path = os_get_installation_path(IPK_DATADIR);
+  filename = MALLOC(strlen(path) + strlen("/../gnunet-gtk/gnunet-gtk.glade") + 
2);
+  strcpy(filename, path);
+  FREE(path);
+  strcat(filename, "/../gnunet-gtk/gnunet-gtk.glade");
+#if MINGW
   gladeFile = MALLOC(_MAX_PATH + 1);
-  plibc_conv_to_win_path(PACKAGE_DATA_DIR"/gnunet-gtk.glade",
+  plibc_conv_to_win_path(filename,
                         gladeFile);
 #else
-  gladeFile = STRDUP(PACKAGE_DATA_DIR"/gnunet-gtk.glade");
+  gladeFile = STRDUP(filename);
 #endif
+  FREE(filename);
   
   mainXML = glade_xml_new(gladeFile,
                          "mainWindow",

Modified: gnunet-gtk/src/core/main.c
===================================================================
--- gnunet-gtk/src/core/main.c  2006-10-23 00:32:41 UTC (rev 3546)
+++ gnunet-gtk/src/core/main.c  2006-10-23 22:24:56 UTC (rev 3547)
@@ -98,7 +98,6 @@
     GNUNET_fini(ectx, cfg);
     return -1;  
   }
-
 #ifdef WINDOWS
   if (!debug_mode)
     FreeConsole();

Modified: gnunet-gtk/src/plugins/daemon/Makefile.am
===================================================================
--- gnunet-gtk/src/plugins/daemon/Makefile.am   2006-10-23 00:32:41 UTC (rev 
3546)
+++ gnunet-gtk/src/plugins/daemon/Makefile.am   2006-10-23 22:24:56 UTC (rev 
3547)
@@ -15,6 +15,7 @@
         @GTK_LIBS@ @GNUNETGTK_LIBS@ \
   $(top_builddir)/src/common/libgnunetgtk_common.la \
   -lgnunetutil \
+  -lgnunetutil_cron \
   -lgnunetgetoption_api
 libgnunetgtkmodule_daemon_la_LDFLAGS = \
   -export-dynamic -avoid-version -module

Modified: gnunet-gtk/src/plugins/fs/Makefile.am
===================================================================
--- gnunet-gtk/src/plugins/fs/Makefile.am       2006-10-23 00:32:41 UTC (rev 
3546)
+++ gnunet-gtk/src/plugins/fs/Makefile.am       2006-10-23 22:24:56 UTC (rev 
3547)
@@ -26,7 +26,10 @@
   -lgthread-2.0 \
   -lextractor \
   -lgnunetutil \
+  -lgnunetcollection \
   -lgnunetfsui \
+  -lgnunetnamespace \
+  -lgnuneturitrack \
   -lgnunetecrs
 libgnunetgtkmodule_fs_la_LDFLAGS = \
   -export-dynamic -avoid-version -module





reply via email to

[Prev in Thread] Current Thread [Next in Thread]