]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- make depend, autoconf, remove warnings about statement before var.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Mon, 20 Mar 2017 15:09:06 +0000 (15:09 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Mon, 20 Mar 2017 15:09:06 +0000 (15:09 +0000)
git-svn-id: file:///svn/unbound/trunk@4066 be551aaa-1e26-0410-a405-d3ace91eadb9

Makefile.in
configure
dnscrypt/dnscrypt.c
doc/Changelog
services/listen_dnsport.c
util/configlexer.c
util/configparser.c
util/configparser.h
util/netevent.c

index 036e5b7308505392dccdd00fc13d5a075aa0c76a..b64521d8d0a2a778f092d61534226da26e50820e 100644 (file)
@@ -622,10 +622,11 @@ dns.lo dns.o: $(srcdir)/services/cache/dns.c config.h $(srcdir)/iterator/iter_de
 infra.lo infra.o: $(srcdir)/services/cache/infra.c config.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/str2wire.h \
  $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \
  $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h \
- $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/slabhash.h \
- $(srcdir)/util/storage/lookup3.h $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h \
- $(srcdir)/util/config_file.h $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h \
- $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h
+ $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/util/data/msgreply.h \
+ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lookup3.h \
+ $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h $(srcdir)/iterator/iterator.h \
+ $(srcdir)/services/outbound_list.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h \
+ $(srcdir)/sldns/pkthdr.h
 rrset.lo rrset.o: $(srcdir)/services/cache/rrset.c config.h $(srcdir)/services/cache/rrset.h \
  $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/slabhash.h \
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/config_file.h \
@@ -647,11 +648,11 @@ msgparse.lo msgparse.o: $(srcdir)/util/data/msgparse.c config.h $(srcdir)/util/d
  $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/wire2str.h
 msgreply.lo msgreply.o: $(srcdir)/util/data/msgreply.c config.h $(srcdir)/util/data/msgreply.h \
  $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/packed_rrset.h \
- $(srcdir)/util/storage/lookup3.h $(srcdir)/util/alloc.h $(srcdir)/util/netevent.h $(srcdir)/util/net_help.h \
- $(srcdir)/util/data/dname.h $(srcdir)/util/regional.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \
- $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgencode.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h \
- $(srcdir)/util/module.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \
- $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h
+ $(srcdir)/util/storage/lookup3.h $(srcdir)/util/alloc.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \
+ $(srcdir)/dnscrypt/cert.h $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/util/regional.h \
+ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgencode.h \
+ $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/util/module.h $(srcdir)/util/fptr_wlist.h \
+ $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h
 packed_rrset.lo packed_rrset.o: $(srcdir)/util/data/packed_rrset.c config.h \
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \
  $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/alloc.h $(srcdir)/util/regional.h \
@@ -664,10 +665,11 @@ iterator.lo iterator.o: $(srcdir)/iterator/iterator.c config.h $(srcdir)/iterato
  $(srcdir)/util/rbtree.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_donotq.h \
  $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_scrub.h $(srcdir)/iterator/iter_priv.h \
  $(srcdir)/validator/val_neg.h $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/infra.h \
- $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h \
- $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \
- $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/util/config_file.h $(srcdir)/util/random.h \
- $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/sbuffer.h
+ $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \
+ $(srcdir)/util/net_help.h $(srcdir)/util/regional.h $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgencode.h \
+ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h \
+ $(srcdir)/util/config_file.h $(srcdir)/util/random.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h \
+ $(srcdir)/sldns/parseutil.h $(srcdir)/sldns/sbuffer.h
 iter_delegpt.lo iter_delegpt.o: $(srcdir)/iterator/iter_delegpt.c config.h $(srcdir)/iterator/iter_delegpt.h \
  $(srcdir)/util/log.h $(srcdir)/services/cache/dns.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \
  $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/regional.h \
@@ -708,42 +710,45 @@ iter_utils.lo iter_utils.o: $(srcdir)/iterator/iter_utils.c config.h $(srcdir)/i
  $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/iterator/iter_hints.h \
  $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/iterator/iter_fwd.h \
  $(srcdir)/iterator/iter_donotq.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_priv.h \
- $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h $(srcdir)/services/cache/dns.h \
- $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/net_help.h \
- $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/data/dname.h $(srcdir)/util/random.h \
- $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h \
- $(srcdir)/validator/val_anchor.h $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_kentry.h \
- $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_sigcrypt.h $(srcdir)/sldns/sbuffer.h \
- $(srcdir)/sldns/str2wire.h
+ $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \
+ $(srcdir)/dnscrypt/cert.h $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/rrset.h \
+ $(srcdir)/util/storage/slabhash.h $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h \
+ $(srcdir)/util/regional.h $(srcdir)/util/data/dname.h $(srcdir)/util/random.h $(srcdir)/util/fptr_wlist.h \
+ $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/validator/val_anchor.h \
+ $(srcdir)/validator/val_kcache.h $(srcdir)/validator/val_kentry.h $(srcdir)/validator/val_utils.h \
+ $(srcdir)/validator/val_sigcrypt.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/str2wire.h
 listen_dnsport.lo listen_dnsport.o: $(srcdir)/services/listen_dnsport.c config.h \
- $(srcdir)/services/listen_dnsport.h $(srcdir)/util/netevent.h $(srcdir)/services/outside_network.h \
- $(srcdir)/util/rbtree.h  $(srcdir)/util/log.h $(srcdir)/util/config_file.h \
- $(srcdir)/util/net_help.h $(srcdir)/sldns/sbuffer.h
+ $(srcdir)/services/listen_dnsport.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \
+ $(srcdir)/dnscrypt/cert.h $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h \
+  $(srcdir)/util/log.h $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h \
+ $(srcdir)/sldns/sbuffer.h
 localzone.lo localzone.o: $(srcdir)/services/localzone.c config.h $(srcdir)/services/localzone.h \
  $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/dnstree.h \
  $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h \
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \
  $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/sbuffer.h \
  $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/util/data/dname.h \
- $(srcdir)/util/data/msgencode.h $(srcdir)/util/net_help.h $(srcdir)/util/netevent.h $(srcdir)/util/as112.h
+ $(srcdir)/util/data/msgencode.h $(srcdir)/util/net_help.h $(srcdir)/util/netevent.h \
+ $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/util/as112.h
 mesh.lo mesh.o: $(srcdir)/services/mesh.c config.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \
- $(srcdir)/util/netevent.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \
- $(srcdir)/util/log.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h \
- $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/modstack.h \
- $(srcdir)/services/outbound_list.h $(srcdir)/services/cache/dns.h $(srcdir)/util/net_help.h \
- $(srcdir)/util/regional.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/timehist.h $(srcdir)/util/fptr_wlist.h \
- $(srcdir)/util/tube.h $(srcdir)/util/alloc.h $(srcdir)/util/config_file.h $(srcdir)/sldns/sbuffer.h \
- $(srcdir)/sldns/wire2str.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \
- $(srcdir)/services/view.h $(srcdir)/util/data/dname.h $(srcdir)/respip/respip.h
+ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/util/data/msgparse.h \
+ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/sldns/pkthdr.h \
+ $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \
+ $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/modstack.h $(srcdir)/services/outbound_list.h \
+ $(srcdir)/services/cache/dns.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h \
+ $(srcdir)/util/data/msgencode.h $(srcdir)/util/timehist.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h \
+ $(srcdir)/util/alloc.h $(srcdir)/util/config_file.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h \
+ $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \
+ $(srcdir)/util/data/dname.h $(srcdir)/respip/respip.h
 modstack.lo modstack.o: $(srcdir)/services/modstack.c config.h $(srcdir)/services/modstack.h \
  $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \
  $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \
  $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h \
- $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/dns64/dns64.h \
- $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/validator/validator.h \
- $(srcdir)/validator/val_utils.h $(srcdir)/respip/respip.h $(srcdir)/services/localzone.h \
- $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(PYTHONMOD_HEADER) \
- $(srcdir)/cachedb/cachedb.h
+ $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \
+ $(srcdir)/util/rbtree.h $(srcdir)/dns64/dns64.h $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h \
+ $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/respip/respip.h \
+ $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \
+ $(PYTHONMOD_HEADER) $(srcdir)/cachedb/cachedb.h
 view.lo view.o: $(srcdir)/services/view.c config.h $(srcdir)/services/view.h $(srcdir)/util/rbtree.h \
  $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \
  $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h \
@@ -751,77 +756,83 @@ view.lo view.o: $(srcdir)/services/view.c config.h $(srcdir)/services/view.h $(s
  $(srcdir)/sldns/rrdef.h $(srcdir)/util/config_file.h
 outbound_list.lo outbound_list.o: $(srcdir)/services/outbound_list.c config.h \
  $(srcdir)/services/outbound_list.h $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h \
- $(srcdir)/util/netevent.h 
+ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \
 outside_network.lo outside_network.o: $(srcdir)/services/outside_network.c config.h \
  $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h $(srcdir)/util/netevent.h \
-  $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/infra.h \
- $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/dnstree.h \
- $(srcdir)/util/rtt.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \
- $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgencode.h \
- $(srcdir)/util/data/dname.h $(srcdir)/util/net_help.h $(srcdir)/util/random.h $(srcdir)/util/fptr_wlist.h \
- $(srcdir)/util/module.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h \
- $(srcdir)/sldns/sbuffer.h $(srcdir)/dnstap/dnstap.h \
+ $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h  \
+ $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/lruhash.h \
+ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h \
+ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \
+ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h \
+ $(srcdir)/util/net_help.h $(srcdir)/util/random.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h \
+ $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/sldns/sbuffer.h \
+ $(srcdir)/dnstap/dnstap.h \
  
 alloc.lo alloc.o: $(srcdir)/util/alloc.c config.h $(srcdir)/util/alloc.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \
  $(srcdir)/util/regional.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \
- $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \
- $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \
- $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h
+ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \
+ $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \
+ $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \
+ $(srcdir)/services/modstack.h
 config_file.lo config_file.o: $(srcdir)/util/config_file.c config.h $(srcdir)/util/log.h \
  $(srcdir)/util/configyyrename.h $(srcdir)/util/config_file.h util/configparser.h \
  $(srcdir)/util/net_help.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \
  $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/regional.h $(srcdir)/util/fptr_wlist.h \
- $(srcdir)/util/netevent.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \
- $(srcdir)/services/modstack.h $(srcdir)/util/data/dname.h $(srcdir)/util/rtt.h $(srcdir)/services/cache/infra.h \
- $(srcdir)/util/storage/dnstree.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h \
- $(srcdir)/util/iana_ports.inc
+ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/util/tube.h \
+ $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/util/data/dname.h \
+ $(srcdir)/util/rtt.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \
+ $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/parseutil.h $(srcdir)/util/iana_ports.inc
 configlexer.lo configlexer.o: util/configlexer.c config.h $(srcdir)/util/configyyrename.h \
  $(srcdir)/util/config_file.h util/configparser.h
 configparser.lo configparser.o: util/configparser.c config.h $(srcdir)/util/configyyrename.h \
  $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h
 shm_main.lo shm_main.o: $(srcdir)/util/shm_side/shm_main.c config.h $(srcdir)/util/shm_side/shm_main.h \
  $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \
-  $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \
- $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \
- $(srcdir)/util/netevent.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \
+   $(srcdir)/daemon/worker.h \
+ $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h \
+ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \
+ $(srcdir)/dnscrypt/cert.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \
  $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h \
  $(srcdir)/dnstap/dnstap.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/cache/rrset.h \
  $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \
  $(srcdir)/util/rtt.h $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h \
  $(srcdir)/util/config_file.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h
 fptr_wlist.lo fptr_wlist.o: $(srcdir)/util/fptr_wlist.c config.h $(srcdir)/util/fptr_wlist.h \
- $(srcdir)/util/netevent.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \
- $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \
- $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \
- $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/util/mini_event.h \
- $(srcdir)/util/rbtree.h $(srcdir)/services/outside_network.h  \
- $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \
- $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/services/cache/rrset.h \
- $(srcdir)/util/storage/slabhash.h $(srcdir)/dns64/dns64.h $(srcdir)/iterator/iterator.h \
- $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/validator/validator.h \
- $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_anchor.h $(srcdir)/validator/val_nsec3.h \
- $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_kentry.h $(srcdir)/validator/val_neg.h \
- $(srcdir)/validator/autotrust.h $(srcdir)/libunbound/libworker.h $(srcdir)/libunbound/context.h \
- $(srcdir)/util/alloc.h $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \
- $(srcdir)/util/config_file.h $(srcdir)/respip/respip.h $(PYTHONMOD_HEADER) \
- $(srcdir)/cachedb/cachedb.h
+ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \
+ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/module.h \
+ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \
+ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \
+ $(srcdir)/services/modstack.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \
+ $(srcdir)/services/outside_network.h  $(srcdir)/services/localzone.h \
+ $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \
+ $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/dns64/dns64.h \
+ $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_fwd.h \
+ $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/validator/val_anchor.h \
+ $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_sigcrypt.h $(srcdir)/validator/val_kentry.h \
+ $(srcdir)/validator/val_neg.h $(srcdir)/validator/autotrust.h $(srcdir)/libunbound/libworker.h \
+ $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/libunbound/unbound.h \
+ $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/config_file.h $(srcdir)/respip/respip.h \
+ $(PYTHONMOD_HEADER) $(srcdir)/cachedb/cachedb.h
 locks.lo locks.o: $(srcdir)/util/locks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h
 log.lo log.o: $(srcdir)/util/log.c config.h $(srcdir)/util/log.h $(srcdir)/util/locks.h $(srcdir)/sldns/sbuffer.h
 mini_event.lo mini_event.o: $(srcdir)/util/mini_event.c config.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h \
- $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \
- $(srcdir)/util/log.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \
- $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \
- $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h
+ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \
+ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/module.h \
+ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \
+ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \
+ $(srcdir)/services/modstack.h
 module.lo module.o: $(srcdir)/util/module.c config.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h \
  $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \
  $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/wire2str.h
-netevent.lo netevent.o: $(srcdir)/util/netevent.c config.h $(srcdir)/util/netevent.h $(srcdir)/util/ub_event.h \
- $(srcdir)/util/log.h $(srcdir)/util/net_help.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/storage/lruhash.h \
- $(srcdir)/util/locks.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \
- $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \
- $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/sldns/sbuffer.h \
- $(srcdir)/dnstap/dnstap.h  \
+netevent.lo netevent.o: $(srcdir)/util/netevent.c config.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \
+ $(srcdir)/dnscrypt/cert.h $(srcdir)/util/ub_event.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \
+ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/module.h \
+ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \
+ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \
+ $(srcdir)/services/modstack.h $(srcdir)/sldns/sbuffer.h $(srcdir)/dnstap/dnstap.h \
+  \
  
 net_help.lo net_help.o: $(srcdir)/util/net_help.c config.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h \
  $(srcdir)/util/data/dname.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/module.h \
@@ -831,10 +842,11 @@ net_help.lo net_help.o: $(srcdir)/util/net_help.c config.h $(srcdir)/util/net_he
  
 random.lo random.o: $(srcdir)/util/random.c config.h $(srcdir)/util/random.h $(srcdir)/util/log.h
 rbtree.lo rbtree.o: $(srcdir)/util/rbtree.c config.h $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h \
- $(srcdir)/util/netevent.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \
- $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \
- $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \
- $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h
+ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \
+ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/module.h \
+ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \
+ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \
+ $(srcdir)/services/modstack.h
 regional.lo regional.o: $(srcdir)/util/regional.c config.h $(srcdir)/util/log.h $(srcdir)/util/regional.h
 rtt.lo rtt.o: $(srcdir)/util/rtt.c config.h $(srcdir)/util/rtt.h
 dnstree.lo dnstree.o: $(srcdir)/util/storage/dnstree.c config.h $(srcdir)/util/storage/dnstree.h \
@@ -842,26 +854,30 @@ dnstree.lo dnstree.o: $(srcdir)/util/storage/dnstree.c config.h $(srcdir)/util/s
  $(srcdir)/util/log.h $(srcdir)/util/net_help.h
 lookup3.lo lookup3.o: $(srcdir)/util/storage/lookup3.c config.h $(srcdir)/util/storage/lookup3.h
 lruhash.lo lruhash.o: $(srcdir)/util/storage/lruhash.c config.h $(srcdir)/util/storage/lruhash.h \
- $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/util/module.h \
- $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \
- $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \
+ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h \
+ $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \
+ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \
+ $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \
  $(srcdir)/services/modstack.h
 slabhash.lo slabhash.o: $(srcdir)/util/storage/slabhash.c config.h $(srcdir)/util/storage/slabhash.h \
  $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h
 timehist.lo timehist.o: $(srcdir)/util/timehist.c config.h $(srcdir)/util/timehist.h $(srcdir)/util/log.h
 tube.lo tube.o: $(srcdir)/util/tube.c config.h $(srcdir)/util/tube.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \
- $(srcdir)/util/netevent.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \
- $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \
- $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/services/mesh.h \
- $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/util/ub_event.h
-ub_event.lo ub_event.o: $(srcdir)/util/ub_event.c config.h $(srcdir)/util/ub_event.h $(srcdir)/util/log.h \
- $(srcdir)/util/netevent.h $(srcdir)/util/tube.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h
-ub_event_pluggable.lo ub_event_pluggable.o: $(srcdir)/util/ub_event_pluggable.c config.h $(srcdir)/util/ub_event.h \
- $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/netevent.h $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h \
+ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/util/fptr_wlist.h \
  $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \
- $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \
- $(srcdir)/services/modstack.h $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h
+ $(srcdir)/sldns/rrdef.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \
+ $(srcdir)/util/ub_event.h
+ub_event.lo ub_event.o: $(srcdir)/util/ub_event.c config.h $(srcdir)/util/ub_event.h $(srcdir)/util/log.h \
+ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/util/tube.h \
+ $(srcdir)/util/mini_event.h $(srcdir)/util/rbtree.h
+ub_event_pluggable.lo ub_event_pluggable.o: $(srcdir)/util/ub_event_pluggable.c config.h $(srcdir)/util/ub_event.h \
+ $(srcdir)/libunbound/unbound-event.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \
+ $(srcdir)/dnscrypt/cert.h $(srcdir)/util/log.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/storage/lruhash.h \
+ $(srcdir)/util/locks.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \
+ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \
+ $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/util/mini_event.h \
+ $(srcdir)/util/rbtree.h
 winsock_event.lo winsock_event.o: $(srcdir)/util/winsock_event.c config.h
 autotrust.lo autotrust.o: $(srcdir)/validator/autotrust.c config.h $(srcdir)/validator/autotrust.h \
  $(srcdir)/util/rbtree.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \
@@ -869,9 +885,10 @@ autotrust.lo autotrust.o: $(srcdir)/validator/autotrust.c config.h $(srcdir)/val
  $(srcdir)/validator/val_sigcrypt.h $(srcdir)/util/data/dname.h $(srcdir)/util/module.h \
  $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \
  $(srcdir)/util/net_help.h $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/random.h \
- $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h $(srcdir)/services/modstack.h \
- $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/validator/val_kcache.h \
- $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/keyraw.h \
+ $(srcdir)/services/mesh.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \
+ $(srcdir)/services/modstack.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \
+ $(srcdir)/validator/val_kcache.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h \
+ $(srcdir)/sldns/keyraw.h \
  
 val_anchor.lo val_anchor.o: $(srcdir)/validator/val_anchor.c config.h $(srcdir)/validator/val_anchor.h \
  $(srcdir)/util/rbtree.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/validator/val_sigcrypt.h \
@@ -887,8 +904,8 @@ validator.lo validator.o: $(srcdir)/validator/validator.c config.h $(srcdir)/val
  $(srcdir)/validator/val_nsec3.h $(srcdir)/validator/val_neg.h $(srcdir)/validator/val_sigcrypt.h \
  $(srcdir)/validator/autotrust.h $(srcdir)/services/cache/dns.h $(srcdir)/util/data/dname.h \
  $(srcdir)/util/net_help.h $(srcdir)/util/regional.h $(srcdir)/util/config_file.h $(srcdir)/util/fptr_wlist.h \
- $(srcdir)/util/netevent.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h \
- $(srcdir)/sldns/wire2str.h
+ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/util/tube.h \
+ $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/sldns/wire2str.h
 val_kcache.lo val_kcache.o: $(srcdir)/validator/val_kcache.c config.h $(srcdir)/validator/val_kcache.h \
  $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \
  $(srcdir)/validator/val_kentry.h $(srcdir)/util/config_file.h $(srcdir)/util/data/dname.h \
@@ -944,8 +961,9 @@ dns64.lo dns64.o: $(srcdir)/dns64/dns64.c config.h $(srcdir)/dns64/dns64.h $(src
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \
  $(srcdir)/sldns/rrdef.h $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/rrset.h \
  $(srcdir)/util/storage/slabhash.h $(srcdir)/util/config_file.h $(srcdir)/util/fptr_wlist.h \
- $(srcdir)/util/netevent.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h \
- $(srcdir)/services/modstack.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h
+ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/util/tube.h \
+ $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h $(srcdir)/util/net_help.h \
+ $(srcdir)/util/regional.h
 cachedb.lo cachedb.o: $(srcdir)/cachedb/cachedb.c config.h $(srcdir)/cachedb/cachedb.h $(srcdir)/util/module.h \
  $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h \
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \
@@ -959,10 +977,14 @@ respip.lo respip.o: $(srcdir)/respip/respip.c config.h $(srcdir)/services/localz
  $(srcdir)/util/storage/lruhash.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \
  $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/services/view.h \
  $(srcdir)/services/cache/dns.h $(srcdir)/sldns/str2wire.h $(srcdir)/util/config_file.h \
- $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \
- $(srcdir)/services/modstack.h $(srcdir)/util/net_help.h $(srcdir)/util/regional.h $(srcdir)/respip/respip.h
+ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \
+ $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/util/net_help.h \
+ $(srcdir)/util/regional.h $(srcdir)/respip/respip.h
 checklocks.lo checklocks.o: $(srcdir)/testcode/checklocks.c config.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \
  $(srcdir)/testcode/checklocks.h
+dnscrypt.lo dnscrypt.o: $(srcdir)/dnscrypt/dnscrypt.c config.h $(srcdir)/sldns/sbuffer.h \
+ $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h \
+ $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h
 unitanchor.lo unitanchor.o: $(srcdir)/testcode/unitanchor.c config.h $(srcdir)/util/log.h $(srcdir)/util/data/dname.h \
  $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/testcode/unitmain.h \
  $(srcdir)/validator/val_anchor.h $(srcdir)/util/rbtree.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/rrdef.h
@@ -977,9 +999,9 @@ unitmain.lo unitmain.o: $(srcdir)/testcode/unitmain.c config.h \
  $(srcdir)/testcode/unitmain.h $(srcdir)/util/alloc.h $(srcdir)/util/locks.h $(srcdir)/util/net_help.h \
  $(srcdir)/util/config_file.h $(srcdir)/util/rtt.h $(srcdir)/services/cache/infra.h \
  $(srcdir)/util/storage/lruhash.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h \
- $(srcdir)/util/netevent.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \
- $(srcdir)/util/random.h $(srcdir)/respip/respip.h $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h \
- $(srcdir)/sldns/pkthdr.h $(srcdir)/services/localzone.h $(srcdir)/services/view.h
+ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/util/data/msgreply.h \
+ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/random.h $(srcdir)/respip/respip.h $(srcdir)/util/module.h \
+ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/services/localzone.h $(srcdir)/services/view.h
 unitmsgparse.lo unitmsgparse.o: $(srcdir)/testcode/unitmsgparse.c config.h $(srcdir)/util/log.h \
  $(srcdir)/testcode/unitmain.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h \
  $(srcdir)/util/locks.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h \
@@ -1019,21 +1041,22 @@ acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/ac
 cachedump.lo cachedump.o: $(srcdir)/daemon/cachedump.c config.h \
  $(srcdir)/daemon/cachedump.h $(srcdir)/daemon/remote.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \
  $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \
- $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h $(srcdir)/util/alloc.h \
- $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \
- $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \
 $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \
- $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \
- $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/regional.h $(srcdir)/util/net_help.h \
- $(srcdir)/util/data/dname.h $(srcdir)/iterator/iterator.h $(srcdir)/services/outbound_list.h \
- $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_utils.h $(srcdir)/iterator/iter_resptype.h \
- $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h $(srcdir)/sldns/wire2str.h \
- $(srcdir)/sldns/str2wire.h
+ $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \
+ $(srcdir)/dnscrypt/cert.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \
+ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \
$(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h  \
+ $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/dns.h \
+ $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h \
+ $(srcdir)/util/regional.h $(srcdir)/util/net_help.h $(srcdir)/util/data/dname.h $(srcdir)/iterator/iterator.h \
+ $(srcdir)/services/outbound_list.h $(srcdir)/iterator/iter_delegpt.h $(srcdir)/iterator/iter_utils.h \
+ $(srcdir)/iterator/iter_resptype.h $(srcdir)/iterator/iter_fwd.h $(srcdir)/iterator/iter_hints.h \
+ $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h
 daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h \
  $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \
-  $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \
- $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \
- $(srcdir)/util/netevent.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \
+   $(srcdir)/daemon/worker.h \
+ $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h \
+ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \
+ $(srcdir)/dnscrypt/cert.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \
  $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h \
  $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \
  $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \
@@ -1045,10 +1068,11 @@ remote.lo remote.o: $(srcdir)/daemon/remote.c config.h \
  $(srcdir)/daemon/remote.h \
  $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \
- $(srcdir)/util/netevent.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \
- $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \
- $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h  $(srcdir)/daemon/daemon.h \
- $(srcdir)/services/modstack.h $(srcdir)/daemon/cachedump.h $(srcdir)/util/config_file.h \
+ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/util/alloc.h \
+ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \
+ $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \
+  $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h \
+  $(srcdir)/daemon/cachedump.h $(srcdir)/util/config_file.h \
  $(srcdir)/util/net_help.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \
  $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \
  $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/services/mesh.h $(srcdir)/services/localzone.h \
@@ -1061,30 +1085,33 @@ remote.lo remote.o: $(srcdir)/daemon/remote.c config.h \
 stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \
  $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \
- $(srcdir)/util/netevent.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \
- $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \
-  $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h \
- $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/outside_network.h \
- $(srcdir)/services/listen_dnsport.h $(srcdir)/util/config_file.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h \
- $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/services/cache/rrset.h \
- $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \
- $(srcdir)/util/rtt.h $(srcdir)/validator/val_kcache.h
+ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/util/alloc.h \
+ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \
+ $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h  $(srcdir)/daemon/daemon.h \
+ $(srcdir)/services/modstack.h  $(srcdir)/services/mesh.h \
+ $(srcdir)/util/rbtree.h $(srcdir)/services/outside_network.h $(srcdir)/services/listen_dnsport.h \
+ $(srcdir)/util/config_file.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h $(srcdir)/validator/validator.h \
+ $(srcdir)/validator/val_utils.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \
+ $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h \
+ $(srcdir)/validator/val_kcache.h
 unbound.lo unbound.o: $(srcdir)/daemon/unbound.c config.h $(srcdir)/util/log.h $(srcdir)/daemon/daemon.h \
  $(srcdir)/util/locks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h  \
- $(srcdir)/daemon/remote.h \
 $(srcdir)/daemon/remote.h \
  $(srcdir)/util/config_file.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h \
- $(srcdir)/services/listen_dnsport.h $(srcdir)/util/netevent.h $(srcdir)/services/cache/rrset.h \
- $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \
- $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h \
- $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \
- $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/net_help.h $(srcdir)/util/ub_event.h
+ $(srcdir)/services/listen_dnsport.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \
+ $(srcdir)/dnscrypt/cert.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/data/packed_rrset.h \
+ $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/util/rtt.h \
+ $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h \
+ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \
+ $(srcdir)/services/mesh.h $(srcdir)/util/net_help.h $(srcdir)/util/ub_event.h
 worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \
  $(srcdir)/util/random.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \
- $(srcdir)/util/netevent.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \
- $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \
- $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h  $(srcdir)/daemon/daemon.h \
- $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h \
+ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/util/alloc.h \
+ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \
+ $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \
+  $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h \
+  $(srcdir)/daemon/remote.h \
  $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \
  $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h \
  $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \
@@ -1096,26 +1123,27 @@ worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(sr
  $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/libworker.h $(srcdir)/sldns/wire2str.h \
  $(srcdir)/util/shm_side/shm_main.h
 testbound.lo testbound.o: $(srcdir)/testcode/testbound.c config.h $(srcdir)/testcode/testpkts.h \
- $(srcdir)/testcode/replay.h $(srcdir)/util/netevent.h $(srcdir)/util/rbtree.h $(srcdir)/testcode/fake_event.h \
- $(srcdir)/daemon/remote.h \
+ $(srcdir)/testcode/replay.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \
+ $(srcdir)/util/rbtree.h $(srcdir)/testcode/fake_event.h $(srcdir)/daemon/remote.h \
  $(srcdir)/util/config_file.h $(srcdir)/sldns/keyraw.h $(srcdir)/daemon/unbound.c $(srcdir)/util/log.h \
  $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \
-  $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h \
- $(srcdir)/services/listen_dnsport.h $(srcdir)/services/cache/rrset.h \
- $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \
- $(srcdir)/util/rtt.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h \
- $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \
- $(srcdir)/services/mesh.h $(srcdir)/util/net_help.h $(srcdir)/util/ub_event.h
+   \
+ $(srcdir)/util/storage/slabhash.h $(srcdir)/util/storage/lruhash.h $(srcdir)/services/listen_dnsport.h \
+ $(srcdir)/services/cache/rrset.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/services/cache/infra.h \
+ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/fptr_wlist.h \
+ $(srcdir)/util/module.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \
+ $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/util/net_help.h $(srcdir)/util/ub_event.h
 testpkts.lo testpkts.o: $(srcdir)/testcode/testpkts.c config.h $(srcdir)/testcode/testpkts.h \
  $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/pkthdr.h \
  $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/wire2str.h
 worker.lo worker.o: $(srcdir)/daemon/worker.c config.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \
  $(srcdir)/util/random.h $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \
- $(srcdir)/util/netevent.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \
- $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \
- $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h  $(srcdir)/daemon/daemon.h \
- $(srcdir)/services/modstack.h $(srcdir)/daemon/remote.h \
+ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/util/alloc.h \
+ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \
+ $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \
+  $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h \
+  $(srcdir)/daemon/remote.h \
  $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \
  $(srcdir)/util/config_file.h $(srcdir)/util/regional.h $(srcdir)/util/storage/slabhash.h \
  $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \
@@ -1134,9 +1162,10 @@ acl_list.lo acl_list.o: $(srcdir)/daemon/acl_list.c config.h $(srcdir)/daemon/ac
  $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/sldns/str2wire.h
 daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h \
  $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \
-  $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \
- $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \
- $(srcdir)/util/netevent.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \
+   $(srcdir)/daemon/worker.h \
+ $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h \
+ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \
+ $(srcdir)/dnscrypt/cert.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \
  $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h \
  $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \
  $(srcdir)/daemon/acl_list.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rbtree.h $(srcdir)/services/view.h \
@@ -1147,32 +1176,35 @@ daemon.lo daemon.o: $(srcdir)/daemon/daemon.c config.h \
 stats.lo stats.o: $(srcdir)/daemon/stats.c config.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h \
  $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h \
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h \
- $(srcdir)/util/netevent.h $(srcdir)/util/alloc.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h \
- $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h \
-  $(srcdir)/daemon/daemon.h $(srcdir)/services/modstack.h \
- $(srcdir)/services/mesh.h $(srcdir)/util/rbtree.h $(srcdir)/services/outside_network.h \
- $(srcdir)/services/listen_dnsport.h $(srcdir)/util/config_file.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h \
- $(srcdir)/validator/validator.h $(srcdir)/validator/val_utils.h $(srcdir)/services/cache/rrset.h \
- $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h \
- $(srcdir)/util/rtt.h $(srcdir)/validator/val_kcache.h
+ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/util/alloc.h \
+ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \
+ $(srcdir)/util/module.h $(srcdir)/dnstap/dnstap.h  $(srcdir)/daemon/daemon.h \
+ $(srcdir)/services/modstack.h  $(srcdir)/services/mesh.h \
+ $(srcdir)/util/rbtree.h $(srcdir)/services/outside_network.h $(srcdir)/services/listen_dnsport.h \
+ $(srcdir)/util/config_file.h $(srcdir)/util/tube.h $(srcdir)/util/net_help.h $(srcdir)/validator/validator.h \
+ $(srcdir)/validator/val_utils.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \
+ $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h \
+ $(srcdir)/validator/val_kcache.h
 replay.lo replay.o: $(srcdir)/testcode/replay.c config.h $(srcdir)/util/log.h $(srcdir)/util/net_help.h \
- $(srcdir)/util/config_file.h $(srcdir)/testcode/replay.h $(srcdir)/util/netevent.h $(srcdir)/testcode/testpkts.h \
- $(srcdir)/util/rbtree.h $(srcdir)/testcode/fake_event.h $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h
+ $(srcdir)/util/config_file.h $(srcdir)/testcode/replay.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \
+ $(srcdir)/dnscrypt/cert.h $(srcdir)/testcode/testpkts.h $(srcdir)/util/rbtree.h $(srcdir)/testcode/fake_event.h \
+ $(srcdir)/sldns/str2wire.h $(srcdir)/sldns/rrdef.h
 fake_event.lo fake_event.o: $(srcdir)/testcode/fake_event.c config.h $(srcdir)/testcode/fake_event.h \
- $(srcdir)/util/netevent.h $(srcdir)/util/net_help.h $(srcdir)/util/log.h $(srcdir)/util/data/msgparse.h \
- $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h \
- $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgencode.h \
- $(srcdir)/util/data/dname.h $(srcdir)/util/config_file.h $(srcdir)/services/listen_dnsport.h \
- $(srcdir)/services/outside_network.h $(srcdir)/util/rbtree.h  \
- $(srcdir)/services/cache/infra.h $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h \
- $(srcdir)/testcode/replay.h $(srcdir)/testcode/testpkts.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h \
- $(srcdir)/util/tube.h $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h $(srcdir)/sldns/sbuffer.h \
- $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h
+ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/util/net_help.h \
+ $(srcdir)/util/log.h $(srcdir)/util/data/msgparse.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \
+ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/data/msgreply.h \
+ $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgencode.h $(srcdir)/util/data/dname.h \
+ $(srcdir)/util/config_file.h $(srcdir)/services/listen_dnsport.h $(srcdir)/services/outside_network.h \
+ $(srcdir)/util/rbtree.h  $(srcdir)/services/cache/infra.h \
+ $(srcdir)/util/storage/dnstree.h $(srcdir)/util/rtt.h $(srcdir)/testcode/replay.h $(srcdir)/testcode/testpkts.h \
+ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/module.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \
+ $(srcdir)/services/modstack.h $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/wire2str.h $(srcdir)/sldns/str2wire.h
 lock_verify.lo lock_verify.o: $(srcdir)/testcode/lock_verify.c config.h $(srcdir)/util/log.h $(srcdir)/util/rbtree.h \
- $(srcdir)/util/locks.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/util/storage/lruhash.h \
- $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \
- $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \
- $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h
+ $(srcdir)/util/locks.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \
+ $(srcdir)/dnscrypt/cert.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/module.h \
+ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \
+ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \
+ $(srcdir)/services/modstack.h
 pktview.lo pktview.o: $(srcdir)/testcode/pktview.c config.h $(srcdir)/util/log.h $(srcdir)/util/data/dname.h \
  $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \
  $(srcdir)/sldns/rrdef.h $(srcdir)/testcode/unitmain.h $(srcdir)/testcode/readhex.h $(srcdir)/sldns/sbuffer.h \
@@ -1180,10 +1212,11 @@ pktview.lo pktview.o: $(srcdir)/testcode/pktview.c config.h $(srcdir)/util/log.h
 readhex.lo readhex.o: $(srcdir)/testcode/readhex.c config.h $(srcdir)/testcode/readhex.h $(srcdir)/util/log.h \
  $(srcdir)/sldns/sbuffer.h $(srcdir)/sldns/parseutil.h
 memstats.lo memstats.o: $(srcdir)/testcode/memstats.c config.h $(srcdir)/util/log.h $(srcdir)/util/rbtree.h \
- $(srcdir)/util/locks.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/util/storage/lruhash.h \
- $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h \
- $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \
- $(srcdir)/services/mesh.h $(srcdir)/services/modstack.h
+ $(srcdir)/util/locks.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \
+ $(srcdir)/dnscrypt/cert.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/module.h \
+ $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \
+ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h \
+ $(srcdir)/services/modstack.h
 unbound-checkconf.lo unbound-checkconf.o: $(srcdir)/smallapp/unbound-checkconf.c config.h $(srcdir)/util/log.h \
  $(srcdir)/util/config_file.h $(srcdir)/util/module.h $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h \
  $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h \
@@ -1196,8 +1229,9 @@ worker_cb.lo worker_cb.o: $(srcdir)/smallapp/worker_cb.c config.h $(srcdir)/libu
  $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \
  $(srcdir)/libunbound/unbound.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \
  $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/netevent.h \
- $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \
- $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h $(srcdir)/services/mesh.h
+ $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \
+ $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/tube.h \
+ $(srcdir)/services/mesh.h
 context.lo context.o: $(srcdir)/libunbound/context.c config.h $(srcdir)/libunbound/context.h \
  $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \
  $(srcdir)/libunbound/unbound.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \
@@ -1205,7 +1239,7 @@ context.lo context.o: $(srcdir)/libunbound/context.c config.h $(srcdir)/libunbou
  $(srcdir)/sldns/rrdef.h $(srcdir)/util/config_file.h $(srcdir)/util/net_help.h $(srcdir)/services/localzone.h \
  $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h $(srcdir)/services/cache/rrset.h \
  $(srcdir)/util/storage/slabhash.h $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h \
- $(srcdir)/util/netevent.h $(srcdir)/sldns/sbuffer.h
+ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h $(srcdir)/sldns/sbuffer.h
 libunbound.lo libunbound.o: $(srcdir)/libunbound/libunbound.c $(srcdir)/libunbound/unbound.h \
  $(srcdir)/libunbound/unbound-event.h config.h $(srcdir)/libunbound/context.h $(srcdir)/util/locks.h \
  $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h $(srcdir)/services/modstack.h \
@@ -1214,19 +1248,21 @@ libunbound.lo libunbound.o: $(srcdir)/libunbound/libunbound.c $(srcdir)/libunbou
  $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/regional.h \
  $(srcdir)/util/random.h $(srcdir)/util/net_help.h $(srcdir)/util/tube.h $(srcdir)/util/ub_event.h \
  $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \
- $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h $(srcdir)/services/cache/rrset.h \
- $(srcdir)/util/storage/slabhash.h $(srcdir)/sldns/sbuffer.h
+ $(srcdir)/services/cache/infra.h $(srcdir)/util/rtt.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \
+ $(srcdir)/dnscrypt/cert.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \
+ $(srcdir)/sldns/sbuffer.h
 libworker.lo libworker.o: $(srcdir)/libunbound/libworker.c config.h \
  $(srcdir)/libunbound/libworker.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \
  $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/libunbound/context.h $(srcdir)/util/alloc.h $(srcdir)/util/rbtree.h \
  $(srcdir)/services/modstack.h $(srcdir)/libunbound/unbound.h $(srcdir)/libunbound/worker.h \
  $(srcdir)/sldns/sbuffer.h $(srcdir)/libunbound/unbound-event.h $(srcdir)/services/outside_network.h \
- $(srcdir)/util/netevent.h  $(srcdir)/services/mesh.h \
- $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h \
- $(srcdir)/util/data/msgreply.h $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h \
- $(srcdir)/services/view.h $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h \
- $(srcdir)/services/outbound_list.h $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/regional.h \
- $(srcdir)/util/random.h $(srcdir)/util/config_file.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/net_help.h \
+ $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \
+  $(srcdir)/services/mesh.h $(srcdir)/util/data/msgparse.h \
+ $(srcdir)/sldns/pkthdr.h $(srcdir)/sldns/rrdef.h $(srcdir)/util/module.h $(srcdir)/util/data/msgreply.h \
+ $(srcdir)/services/localzone.h $(srcdir)/util/storage/dnstree.h $(srcdir)/services/view.h \
+ $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/services/outbound_list.h \
+ $(srcdir)/util/fptr_wlist.h $(srcdir)/util/tube.h $(srcdir)/util/regional.h $(srcdir)/util/random.h \
+ $(srcdir)/util/config_file.h $(srcdir)/util/storage/lookup3.h $(srcdir)/util/net_help.h \
  $(srcdir)/util/data/dname.h $(srcdir)/util/data/msgencode.h $(srcdir)/iterator/iter_fwd.h \
  $(srcdir)/iterator/iter_hints.h $(srcdir)/sldns/str2wire.h
 unbound-host.lo unbound-host.o: $(srcdir)/smallapp/unbound-host.c config.h $(srcdir)/libunbound/unbound.h \
@@ -1259,15 +1295,17 @@ petal.lo petal.o: $(srcdir)/testcode/petal.c config.h \
 pythonmod_utils.lo pythonmod_utils.o: $(srcdir)/pythonmod/pythonmod_utils.c config.h $(srcdir)/util/module.h \
  $(srcdir)/util/storage/lruhash.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/data/msgreply.h \
  $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \
- $(srcdir)/sldns/rrdef.h $(srcdir)/util/netevent.h $(srcdir)/util/net_help.h $(srcdir)/services/cache/dns.h \
- $(srcdir)/services/cache/rrset.h $(srcdir)/util/storage/slabhash.h $(srcdir)/util/regional.h \
- $(srcdir)/iterator/iter_delegpt.h $(srcdir)/sldns/sbuffer.h \
+ $(srcdir)/sldns/rrdef.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h $(srcdir)/dnscrypt/cert.h \
+ $(srcdir)/util/net_help.h $(srcdir)/services/cache/dns.h $(srcdir)/services/cache/rrset.h \
+ $(srcdir)/util/storage/slabhash.h $(srcdir)/util/regional.h $(srcdir)/iterator/iter_delegpt.h \
+ $(srcdir)/sldns/sbuffer.h \
  
 win_svc.lo win_svc.o: $(srcdir)/winrc/win_svc.c config.h $(srcdir)/winrc/win_svc.h $(srcdir)/winrc/w_inst.h \
  $(srcdir)/daemon/daemon.h $(srcdir)/util/locks.h $(srcdir)/util/log.h $(srcdir)/util/alloc.h $(srcdir)/services/modstack.h \
-  $(srcdir)/daemon/worker.h $(srcdir)/libunbound/worker.h \
- $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h $(srcdir)/util/storage/lruhash.h \
- $(srcdir)/util/netevent.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \
+   $(srcdir)/daemon/worker.h \
+ $(srcdir)/libunbound/worker.h $(srcdir)/sldns/sbuffer.h $(srcdir)/util/data/packed_rrset.h \
+ $(srcdir)/util/storage/lruhash.h $(srcdir)/util/netevent.h $(srcdir)/dnscrypt/dnscrypt.h \
+ $(srcdir)/dnscrypt/cert.h $(srcdir)/util/data/msgreply.h $(srcdir)/util/data/msgparse.h $(srcdir)/sldns/pkthdr.h \
  $(srcdir)/sldns/rrdef.h $(srcdir)/daemon/stats.h $(srcdir)/util/timehist.h $(srcdir)/util/module.h \
  $(srcdir)/dnstap/dnstap.h $(srcdir)/daemon/remote.h \
  $(srcdir)/util/config_file.h $(srcdir)/util/ub_event.h
index aaafecc64f8d8798379a1c3d5004722b02baece9..8481a5f3864832d4b842f8c673a4618bff22e35c 100755 (executable)
--- a/configure
+++ b/configure
@@ -638,6 +638,9 @@ INSTALLTARGET
 ALLTARGET
 SOURCEFILE
 SOURCEDETERMINE
+DNSCRYPT_OBJ
+DNSCRYPT_SRC
+ENABLE_DNSCRYPT
 DNSTAP_OBJ
 DNSTAP_SRC
 opt_dnstap_socket_path
@@ -858,6 +861,8 @@ enable_dnstap
 with_dnstap_socket_path
 with_protobuf_c
 with_libfstrm
+enable_dnscrypt
+with_libsodium
 enable_cachedb
 with_libunbound_only
 '
@@ -1535,6 +1540,7 @@ Optional Features:
                           to it, smaller install size but libunbound export
                           table is polluted by internal symbols
   --enable-dnstap         Enable dnstap support (requires fstrm, protobuf-c)
+  --enable-dnscrypt       Enable dnscrypt support (requires libsodium)
   --enable-cachedb        enable cachedb module that can use external cache
                           storage
 
@@ -1589,6 +1595,7 @@ Optional Packages:
                           set default dnstap socket path
   --with-protobuf-c=path  Path where protobuf-c is installed, for dnstap
   --with-libfstrm=path    Path where libfstrm is installed, for dnstap
+  --with-libsodium=path   Path where libsodium is installed, for dnscrypt
   --with-libunbound-only  do not build daemon and tool programs
 
 Some influential environment variables:
@@ -20201,6 +20208,105 @@ _ACEOF
   fi
 
 
+# check for dnscrypt if requested
+
+  # Check whether --enable-dnscrypt was given.
+if test "${enable_dnscrypt+set}" = set; then :
+  enableval=$enable_dnscrypt; opt_dnscrypt=$enableval
+else
+  opt_dnscrypt=no
+fi
+
+
+  if test "x$opt_dnscrypt" != "xno"; then
+
+# Check whether --with-libsodium was given.
+if test "${with_libsodium+set}" = set; then :
+  withval=$with_libsodium;
+       CFLAGS="$CFLAGS -I$withval/include"
+       LDFLAGS="$LDFLAGS -L$withval/lib"
+
+fi
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sodium_init" >&5
+$as_echo_n "checking for library containing sodium_init... " >&6; }
+if ${ac_cv_search_sodium_init+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_func_search_save_LIBS=$LIBS
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char sodium_init ();
+int
+main ()
+{
+return sodium_init ();
+  ;
+  return 0;
+}
+_ACEOF
+for ac_lib in '' sodium; do
+  if test -z "$ac_lib"; then
+    ac_res="none required"
+  else
+    ac_res=-l$ac_lib
+    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
+  fi
+  if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_search_sodium_init=$ac_res
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext
+  if ${ac_cv_search_sodium_init+:} false; then :
+  break
+fi
+done
+if ${ac_cv_search_sodium_init+:} false; then :
+
+else
+  ac_cv_search_sodium_init=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sodium_init" >&5
+$as_echo "$ac_cv_search_sodium_init" >&6; }
+ac_res=$ac_cv_search_sodium_init
+if test "$ac_res" != no; then :
+  test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+
+else
+  as_fn_error $? "The sodium library was not found. Please install sodium!" "$LINENO" 5
+fi
+
+
+
+$as_echo "#define USE_DNSCRYPT 1" >>confdefs.h
+
+        ENABLE_DNSCRYPT=1
+
+
+        DNSCRYPT_SRC="dnscrypt/dnscrypt.c"
+
+        DNSCRYPT_OBJ="dnscrypt.lo"
+
+
+  else
+
+        ENABLE_DNSCRYPT=0
+
+
+
+  fi
+
+
 # check for cachedb if requested
 # Check whether --enable-cachedb was given.
 if test "${enable_cachedb+set}" = set; then :
@@ -20364,7 +20470,7 @@ version=1.6.2
 date=`date +'%b %e, %Y'`
 
 
-ac_config_files="$ac_config_files Makefile doc/example.conf doc/libunbound.3 doc/unbound.8 doc/unbound-anchor.8 doc/unbound-checkconf.8 doc/unbound.conf.5 doc/unbound-control.8 doc/unbound-host.1 smallapp/unbound-control-setup.sh dnstap/dnstap_config.h contrib/libunbound.pc contrib/unbound.socket contrib/unbound.service"
+ac_config_files="$ac_config_files Makefile doc/example.conf doc/libunbound.3 doc/unbound.8 doc/unbound-anchor.8 doc/unbound-checkconf.8 doc/unbound.conf.5 doc/unbound-control.8 doc/unbound-host.1 smallapp/unbound-control-setup.sh dnstap/dnstap_config.h dnscrypt/dnscrypt_config.h contrib/libunbound.pc contrib/unbound.socket contrib/unbound.service"
 
 ac_config_headers="$ac_config_headers config.h"
 
@@ -21366,6 +21472,7 @@ do
     "doc/unbound-host.1") CONFIG_FILES="$CONFIG_FILES doc/unbound-host.1" ;;
     "smallapp/unbound-control-setup.sh") CONFIG_FILES="$CONFIG_FILES smallapp/unbound-control-setup.sh" ;;
     "dnstap/dnstap_config.h") CONFIG_FILES="$CONFIG_FILES dnstap/dnstap_config.h" ;;
+    "dnscrypt/dnscrypt_config.h") CONFIG_FILES="$CONFIG_FILES dnscrypt/dnscrypt_config.h" ;;
     "contrib/libunbound.pc") CONFIG_FILES="$CONFIG_FILES contrib/libunbound.pc" ;;
     "contrib/unbound.socket") CONFIG_FILES="$CONFIG_FILES contrib/unbound.socket" ;;
     "contrib/unbound.service") CONFIG_FILES="$CONFIG_FILES contrib/unbound.service" ;;
index 3478f8244e7850bf7b4f94336d6a10c6779c8d67..d998ae98bdb2e5c36bf036d38ed43e2ebd2a83e4 100644 (file)
@@ -326,12 +326,12 @@ dnsc_find_keypair(struct dnsc_env* dnscenv, struct sldns_buffer* buffer)
 {
        const KeyPair *keypairs = dnscenv->keypairs;
        struct dnscrypt_query_header *dnscrypt_header;
+       size_t i;
 
        if (sldns_buffer_limit(buffer) < DNSCRYPT_QUERY_HEADER_SIZE) {
                return NULL;
        }
        dnscrypt_header = (struct dnscrypt_query_header *)sldns_buffer_begin(buffer);
-       size_t i;
        for (i = 0U; i < dnscenv->keypairs_count; i++) {
                if (memcmp(keypairs[i].crypt_publickey, dnscrypt_header->magic_query,
                    DNSCRYPT_MAGIC_HEADER_LEN) == 0) {
@@ -352,7 +352,7 @@ dnsc_find_keypair(struct dnsc_env* dnscenv, struct sldns_buffer* buffer)
 static int
 dnsc_load_local_data(struct dnsc_env* dnscenv, struct config_file *cfg)
 {
-    int i, j;
+    size_t i, j;
        // Insert 'local-zone: "2.dnscrypt-cert.example.com" deny'
     if(!cfg_str2list_insert(&cfg->local_zones,
                             strdup(dnscenv->provider_name),
@@ -377,10 +377,9 @@ dnsc_load_local_data(struct dnsc_env* dnscenv, struct config_file *cfg)
             log_err("Could not allocate memory");
             return -2;
         }
-        int c;
         snprintf(rr, rrlen - 1, "%s 86400 IN TXT \"", dnscenv->provider_name);
         for(j=0; j<sizeof(struct SignedCert); j++) {
-            c = (int)*((const uint8_t *) cert + j);
+                   int c = (int)*((const uint8_t *) cert + j);
             if (isprint(c) && c != '"' && c != '\\') {
                 snprintf(rr + strlen(rr), rrlen - 1 - strlen(rr), "%c", c);
             } else {
index 4b6975d14d338032b1e57e5e600fe3dc3aec3ac7..bb06725a817f0b839f132c213cea596c298fb2a8 100644 (file)
@@ -1,6 +1,7 @@
 20 March 2017: Wouter
        - #1217. DNSCrypt support, with --enable-dnscrypt, libsodium and then
          enabled in the config file from Manu Bretelle.
+       - make depend, autoconf, remove warnings about statement before var.
 
 17 March 2017: Wouter
        - Patch for view functionality for local-data-ptr from Björn Ketelaars.
index a9afaa20da5c453f5fcfc175eef94f4793278a3d..0fe96b1e486713d1eb8212475c183bb7dc9ddb3c 100644 (file)
@@ -1389,16 +1389,16 @@ void listening_ports_free(struct listen_port* list)
 
 size_t listen_get_mem(struct listen_dnsport* listen)
 {
+       struct listen_list* p;
        size_t s = sizeof(*listen) + sizeof(*listen->base) + 
                sizeof(*listen->udp_buff) + 
                sldns_buffer_capacity(listen->udp_buff);
 #ifdef USE_DNSCRYPT
-    s += sizeof(*listen->dnscrypt_udp_buff);
-    if(listen->udp_buff != listen->dnscrypt_udp_buff){
-        s += sldns_buffer_capacity(listen->dnscrypt_udp_buff);
-    }
+       s += sizeof(*listen->dnscrypt_udp_buff);
+       if(listen->udp_buff != listen->dnscrypt_udp_buff){
+               s += sldns_buffer_capacity(listen->dnscrypt_udp_buff);
+       }
 #endif
-       struct listen_list* p;
        for(p = listen->cps; p; p = p->next) {
                s += sizeof(*p);
                s += comm_point_get_mem(p->com);
index abda039e54c735e06d6d617e60255372a7ff6d58..fae16b8837288ac95c14be72b86090a84ce27382 100644 (file)
@@ -378,8 +378,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 210
-#define YY_END_OF_BUFFER 211
+#define YY_NUM_RULES 216
+#define YY_END_OF_BUFFER 217
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -387,233 +387,239 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[2048] =
+static yyconst flex_int16_t yy_accept[2092] =
     {   0,
-        1,    1,  192,  192,  196,  196,  200,  200,  204,  204,
-        1,    1,  211,  208,    1,  190,  190,  209,    2,  209,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      192,  193,  193,  194,  209,  196,  197,  197,  198,  209,
-      203,  200,  201,  201,  202,  209,  204,  205,  205,  206,
-      209,  207,  191,    2,  195,  209,  207,  208,    0,    1,
-        2,    2,    2,    2,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  192,
-        0,  196,    0,  203,    0,  200,  204,    0,  207,    0,
-        2,    2,  207,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  207,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  207,  208,  208,  208,  208,  208,
-
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,   77,  208,  208,
-      208,  208,  208,  208,    8,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,   88,  207,  208,  208,  208,  208,
-
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-
-      208,  208,  208,  208,  208,  207,  208,  208,  208,  208,
-      208,   37,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  163,  208,   14,   15,  208,   18,   17,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  149,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,    3,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  207,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  199,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,   40,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,   41,  208,  208,  208,  208,
-
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  138,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,   20,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,   97,  208,  199,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  113,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,   96,  208,  208,  208,  208,
-
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,   75,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,   25,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,   38,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-       39,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-
-      208,  208,  208,  208,  208,  208,  114,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,   28,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  178,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,   32,  208,   33,  208,  208,  208,
-       78,  208,   79,  208,  208,   76,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-
-      208,  208,    7,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  156,  208,  208,
-      208,  208,   99,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,   29,  208,
-      208,  208,  208,  208,  208,  208,  130,  208,  129,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,   16,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,   42,  208,
-
-      208,  208,  208,  208,  137,  208,  208,  208,  208,   81,
-       80,  208,  208,  208,  208,  208,  208,  208,  208,  124,
-      208,  208,  208,  208,  208,  208,  208,  208,   89,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,   60,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,   64,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,   36,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  127,  128,  208,  208,  208,  208,
-
-      208,  208,  208,  208,  208,    6,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  188,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,   26,  208,  208,  208,  208,  208,  208,
-      208,  208,  120,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  142,  208,  121,  208,  208,  154,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,   27,  208,
-      208,  208,  208,   84,  208,   85,  208,   83,  208,  208,
-      208,  208,  208,  208,  208,  208,   94,  208,  208,  208,
-
-      208,  208,  208,  208,  208,  208,  208,  208,  177,  208,
-      208,  122,  208,  208,  208,  208,  208,  125,  208,  153,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,   74,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,   34,  208,  208,   22,  208,  208,  208,  208,   19,
-      208,  104,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,   49,   51,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  164,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-
-      208,   86,  208,  208,  208,  208,  208,  208,  208,   93,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,   98,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  148,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  112,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  108,  208,  115,  208,  208,  208,  208,
-      208,   92,  208,  208,   70,  208,  140,  208,  208,  208,
-      208,  208,  155,  208,  208,  208,  208,  208,  208,  208,
-
-      169,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  111,  208,  208,  208,  208,  208,
-       52,   53,  208,  208,  208,  208,  208,   35,   59,  116,
-      208,  131,  208,  157,  126,  208,  208,   45,  208,  118,
-      208,  208,  208,  208,  208,    9,  208,  208,  208,   73,
-      208,  208,  208,  208,  182,  208,  139,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      100,  168,  208,  208,  208,  208,  208,  208,  208,  208,
-
-      150,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  117,  208,  208,   44,   46,  208,  208,  208,  208,
-      208,  208,  208,   72,  208,  208,  208,  208,  180,  208,
-      187,  208,  208,  208,  208,  144,   23,   24,  208,  208,
-      208,  208,  208,  208,  208,  208,   69,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  146,
-      143,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-       43,  208,  208,  208,  208,  208,  208,  208,  208,   95,
-       13,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-
-      208,  208,  208,  208,   12,  208,  208,   21,  208,  208,
-      208,  186,  208,  189,   47,  208,  152,  145,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      107,  106,  208,  208,  208,  208,  147,  141,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,   54,  208,
-      208,  208,  181,  208,  208,  151,  208,  208,  208,  208,
-      208,  208,  208,  208,   48,  208,  208,   82,  208,  101,
-      103,  132,  208,  208,  208,  105,  208,  208,  158,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  165,
-
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  133,  208,  208,  179,  208,  208,   30,
-      208,  208,  208,  208,    4,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  161,  208,  208,  208,
-      208,  208,  208,  208,  208,  167,  208,  208,  136,  208,
-      208,  208,  208,  208,  208,  208,  208,   57,  208,   31,
-      185,  162,  208,   11,  208,  208,  208,  208,  208,  208,
-      134,   61,  208,  208,  208,  110,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  166,   90,  208,   87,
-      208,  208,  208,   63,   67,   62,  208,   55,  208,   10,
-
-      208,  208,  208,  183,  208,  208,  109,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-       68,   66,  208,   56,  208,  123,  208,  208,  135,  208,
-      208,  208,  208,  102,   50,  208,  208,  208,  208,  208,
-      208,  208,   91,   65,   58,  208,  184,  208,  208,  208,
-      160,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-       71,  208,  159,  176,  208,  208,  208,  208,  208,  208,
-        5,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-
-      208,  208,  119,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  172,  208,  208,  208,  208,  208,  208,  208,  208,
-      208,  208,  208,  208,  208,  170,  208,  173,  174,  208,
-      208,  208,  208,  208,  171,  175,    0
+        1,    1,  198,  198,  202,  202,  206,  206,  210,  210,
+        1,    1,  217,  214,    1,  196,  196,  215,    2,  215,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      198,  199,  199,  200,  215,  202,  203,  203,  204,  215,
+      209,  206,  207,  207,  208,  215,  210,  211,  211,  212,
+      215,  213,  197,    2,  201,  215,  213,  214,    0,    1,
+        2,    2,    2,    2,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  198,
+        0,  202,    0,  209,    0,  206,  210,    0,  213,    0,
+        2,    2,  213,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  213,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  213,  214,  214,  214,  214,
+
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,   77,
+      214,  214,  214,  214,  214,  214,    8,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,   88,  213,  214,  214,
+
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+
+      214,  214,  214,  214,  214,  214,  214,  214,  213,  214,
+      214,  214,  214,  214,   37,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  163,  214,   14,   15,
+      214,   18,   17,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  149,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,    3,  214,  214,  214,  214,  214,  214,  214,  214,
+
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  213,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  205,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,   40,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+
+       41,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  138,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,   20,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,   97,
+      214,  205,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  190,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  113,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+
+      214,  214,   96,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,   75,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,   25,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,   38,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,   39,  214,  214,
+
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  114,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,   28,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  178,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,   32,  214,   33,  214,  214,  214,
+       78,  214,   79,  214,  214,   76,  214,  214,  214,  214,
+
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,    7,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  156,  214,  214,
+      214,  214,   99,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,   29,  214,  214,  214,  214,  214,  214,  214,
+      130,  214,  129,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+
+      214,   16,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,   42,  214,  214,  214,  214,  214,  137,  214,
+      214,  214,  214,   81,   80,  214,  214,  214,  214,  214,
+      214,  214,  214,  124,  214,  214,  214,  214,  214,  214,
+      214,  214,   89,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,   60,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,   64,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+
+      214,   36,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  127,  128,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,    6,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  188,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,   26,  214,  214,  214,  214,  214,  214,  214,  214,
+      120,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      142,  214,  121,  214,  214,  154,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+
+       27,  214,  214,  214,  214,   84,  214,   85,  214,   83,
+      214,  214,  214,  214,  214,  214,  214,  214,   94,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      177,  214,  214,  122,  214,  214,  214,  214,  214,  125,
+      214,  153,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,   74,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,   34,  214,  214,   22,  214,  214,  214,
+      214,   19,  214,  104,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,   49,   51,
+
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      192,  214,  214,  164,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,   86,  214,  214,
+      214,  214,  214,  214,  214,   93,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,   98,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  148,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  112,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  108,
+
+      214,  115,  214,  214,  214,  214,  214,   92,  214,  214,
+       70,  214,  140,  214,  214,  214,  214,  214,  155,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  169,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  111,  214,  214,  214,  214,  214,   52,
+       53,  214,  214,  214,  214,  214,   35,   59,  116,  214,
+      131,  214,  157,  126,  214,  214,   45,  214,  118,  214,
+      214,  214,  214,  214,    9,  214,  214,  214,   73,  214,
+      214,  214,  214,  182,  214,  139,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  100,
+      191,  214,  214,  168,  214,  214,  214,  214,  214,  214,
+      214,  214,  150,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  117,  214,  214,   44,   46,  214,  214,
+      214,  214,  214,  214,  214,   72,  214,  214,  214,  214,
+      180,  214,  187,  214,  214,  214,  214,  144,   23,   24,
+      214,  214,  214,  214,  214,  214,  214,  214,   69,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+
+      214,  146,  143,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,   43,  214,  214,  214,  214,  214,
+      214,  214,  214,   95,   13,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,   12,  214,
+      214,   21,  214,  214,  214,  186,  214,  189,   47,  214,
+      152,  145,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  107,  106,  214,  214,  214,  214,
+      147,  141,  214,  214,  193,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,   54,  214,  214,  214,  181,
+
+      214,  214,  151,  214,  214,  214,  214,  214,  214,  214,
+      214,   48,  214,  214,   82,  214,  101,  103,  132,  214,
+      214,  214,  105,  214,  214,  158,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  165,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  133,  214,  214,  179,  214,  214,   30,  214,
+      214,  214,  214,    4,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  161,  214,  214,  214,  214,
+      194,  214,  214,  214,  214,  214,  167,  214,  214,  136,
+      214,  214,  214,  214,  214,  214,  214,  214,   57,  214,
+
+       31,  185,  162,  214,   11,  214,  214,  214,  214,  214,
+      214,  134,   61,  214,  214,  214,  110,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  166,   90,
+      214,   87,  214,  214,  214,   63,   67,   62,  214,   55,
+      214,   10,  214,  214,  214,  183,  214,  214,  109,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,   68,   66,  214,   56,  214,  123,  214,
+      214,  135,  214,  214,  214,  214,  102,   50,  214,  195,
+      214,  214,  214,  214,  214,  214,   91,   65,   58,  214,
+      184,  214,  214,  214,  160,  214,  214,  214,  214,  214,
+
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,   71,  214,  159,  176,  214,  214,
+      214,  214,  214,  214,    5,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  119,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  172,  214,  214,  214,  214,
+      214,  214,  214,  214,  214,  214,  214,  214,  214,  170,
+      214,  173,  174,  214,  214,  214,  214,  214,  171,  175,
+        0
+
     } ;
 
 static yyconst YY_CHAR yy_ec[256] =
@@ -656,469 +662,479 @@ static yyconst YY_CHAR yy_meta[41] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_uint16_t yy_base[2062] =
+static yyconst flex_uint16_t yy_base[2106] =
     {   0,
         0,    0,   38,   41,   44,   46,   59,   65,   71,   77,
-       90,  112, 3658, 3473,   81, 4028, 4028, 4028,   96,   52,
+       90,  112, 3356, 3053,   81, 4111, 4111, 4111,   96,   52,
        72,  107,  111,   70,   91,  109,  124,   98,  114,  117,
       133,  136,   64,  144,  129,  145,  156,  165,  158,  173,
-     3445, 4028, 4028, 4028,  164, 3387, 4028, 4028, 4028,  137,
-     3338, 3156, 4028, 4028, 4028,  196, 1883, 4028, 4028, 4028,
-      189, 1606, 4028,  200, 4028,  204,  167, 1379,  208,  147,
+     3023, 4111, 4111, 4111,  164, 2711, 4111, 4111, 4111,  137,
+     2662, 2391, 4111, 4111, 4111,  196, 2295, 4111, 4111, 4111,
+      189, 2145, 4111,  200, 4111,  204,  167, 2019,  208,  147,
         0,  215,    0,    0,  209,  147,  202,  210,  211,  204,
       219,  216,  217,  221,  230,  223,  227,  233,  220,  228,
       232,  245,  241,  248,   63,  242,  252,  253,  249,  258,
 
       259,  262,  265,  264,  266,  270,  274,  276,  275,  282,
       281,  283,  285,  289,  170,  288,  286,  296,  300,  298,
-      311,  295,  299,  297,  314,  317,  319,  303,  320, 1229,
-      333, 1177,  336,  969,  345,  937,  716,  337,  628,  351,
+      311,  295,  299,  297,  314,  317,  319,  303,  320, 1944,
+      333, 1887,  336, 1418,  345, 1167, 1012,  337,  980,  351,
       355,    0,  347,  349,  340,  351,  352,  353,  356,  357,
-       88,  364,  362,  368,  376,  361,  374,  379,  363,  384,
-      385,  373,  387,  392,  386,  393,  398,  399,  401,  402,
-      403,  405,  411,  418,  414,  422,  426,  424,  419,  435,
-      431,  438,  443,  434,  439,  442,  430,  445,  444,  446,
-      447,  453,  449,  455,  456,  457,  459,  467,  465,  469,
-
-      468,  470,  473,  485,  474,  475,  477,  492,  495,  494,
-      482,  490,  497,  491,  504,  501,  509,  500,  507,  508,
-      511,  512,  514,  518,  523,  529,  527,  530,  532,  521,
-      535,  539,  533,  540,  541,  550,  545,  547,  557,  549,
-      553,  554,  559,  560,  562,  556,  563,  558,  577,  564,
-      568,  579,  581,  583,  585,  587,  570,  586,  588,  590,
-      598,  601,  589,  607,  608,  610,  612,  613,  614,  616,
-      620,  621,  623,  624,  632,  627,  629,  630,  637,  636,
-      638,  644,  651,  655,  648,  646,  649,  656,  662,  658,
-      682,  652,  668,  679,  671,  674,  675,  663,  686,  676,
-
-      687,  688,  695,  689,  708,  691,  705,  706,  715,  710,
-      713,  724,  712,  714,  719,  723,  725,  729,  734,  728,
-      731,  739,  740,  736,  743,  742,  750,  752,  754,  758,
-      763,  755,  756,  764,  765,  766,  776,  777,  771,  774,
-      780,  772,  782,  787,  785,  783,  793, 4028,  795,  791,
-      797,  798,  799,  801, 4028,  800,  802,  803,  814,  806,
-      811,  809,  821,  830,  831,  826,  827,  828,  833,  834,
-      836,  837,  839,  841,  861,  843,  845,  852,  853,  856,
-      846,  870,  810,  872,  874,  876,  875,  865,  857,  878,
-      882,  881,  886,  892, 4028,  844,  899,  885,  894,  895,
-
-      896,  903,  905,  913,  906,  911,  909,  910,  916,  920,
-      927,  922,  929,  931,  938,  934,  941,  943,  923,  942,
-      945,  946,  948,  955,  953,  950,  951,  958,  965,  961,
-      960,  967,  962,  971,  963,  977,  983,  973,  990,  976,
-      986,  991,  992,  993,  994,  996,  999, 1000, 1001, 1008,
-     1005, 1003, 1012, 1014, 1007, 1018, 1026, 1022, 1029, 1021,
-     1028, 1036, 1031, 1034, 1043, 1038, 1039, 1042, 1041, 1055,
-     1050, 1040, 1056, 1052, 1059, 1062, 1063, 1053, 1064, 1066,
-     1067, 1068, 1069, 1073, 1074, 1085, 1075, 1077, 1090, 1078,
-     1086, 1088, 1095, 1098, 1099, 1100, 1101, 1102, 1103, 1105,
-
-     1104, 1113, 1114, 1115, 1116, 1119, 1118, 1126, 1127, 1131,
-     1128, 4028, 1139, 1134, 1138, 1135, 1141, 1149, 1136, 1145,
-     1146, 1153, 4028, 1151, 4028, 4028, 1150, 4028, 4028, 1152,
-     1164, 1156, 1168, 1173, 1182, 1183, 1181, 1157, 1179, 1155,
-     1188, 1193, 1189, 1198, 1194, 1203, 1200, 1207, 1206, 1212,
-     1208, 1213, 1215, 1217, 1216, 1218, 1222, 1225, 1223, 1221,
-     1226, 1228, 1240, 1244, 1242, 1243, 1246, 1247, 1230, 1251,
-     1250, 1252, 1259, 1253, 1260, 1267, 1263, 4028, 1264, 1265,
-     1266, 1270, 1272, 1276, 1278,  306, 1280, 4028, 1279, 1285,
-     1287, 1289, 1288, 1290, 1292, 1295, 1296, 1297, 1298, 1299,
-
-     1302, 1300, 1303, 1307, 1320, 1304, 1321, 1328, 1329, 1326,
-     1306, 1327, 1331, 1332, 1333, 1343, 1338, 1340, 1342, 1350,
-     1345, 1349, 1346, 1352, 1354, 1356, 1357, 1359, 1361, 1362,
-     1384, 1366, 1368, 1363, 1371, 1370, 1373, 1380, 1377, 1390,
-     1394, 1386, 1392, 1403, 1399, 1381, 1406, 1409, 1416, 1412,
-     1419, 1417, 1421, 1422, 1424, 1428, 1429, 1426, 1434, 1432,
-     1435, 1437, 1445, 1447, 4028, 1455, 1450, 1439, 1448, 1463,
-     1459, 1441, 1462, 1465, 1452, 1466, 1467, 1472, 1469, 1470,
-     1473, 1476, 1478, 1488, 4028, 1479, 1481, 1480, 1491, 1492,
-     1500, 1494, 1501, 1510, 1506, 4028, 1507, 1514, 1511, 1517,
-
-     1516, 1509, 1518, 1527, 1522, 1525, 1524, 1531, 1532, 1534,
-     1526, 4028, 1535, 1536, 1540, 1544, 1548, 1549, 1550, 1551,
-     1554, 1555, 1558, 1562, 1559, 1560, 4028, 1561, 1563, 1570,
-     1568, 1578, 1582, 1574, 1583, 1585, 1577, 1586, 1587, 1594,
-     1591, 1592, 1593, 1595, 4028, 1597,  566, 1603, 1598, 1602,
-     1610, 1611, 1614, 1618, 1607, 1615, 1625, 1624, 1608, 1483,
-     1626, 1628, 1632, 1634, 1633, 1636, 1635, 1637, 1640, 1643,
-     1644, 1646, 1652, 1653, 1654, 1656, 1660, 1657, 4028, 1664,
-     1667, 1668, 1666, 1661, 1669, 1672, 1673, 1674, 1678, 1682,
-     1683, 1686, 1687, 1688, 1694, 4028, 1696, 1691, 1698, 1692,
-
-     1697, 1704, 1715, 1710, 1711, 1713, 1717, 1719, 1721, 1728,
-     1723, 1731, 1733, 1734, 1735, 1737, 1741, 1743, 1744, 1727,
-     1752, 1753, 1749, 1751, 1756, 1759, 1763, 1757, 4028, 1762,
-     1764, 1767, 1769, 1781, 1773, 1777, 1771, 1783, 1782, 1784,
-     1788, 1695, 1789, 1798, 1792, 1800, 4028, 1801, 1803, 1795,
-     1810, 1802, 1812, 1813, 1805, 1816, 1817, 1819, 1820, 1825,
-     1831, 1821, 1823, 1827, 1833, 4028, 1841, 1842, 1838, 1850,
-     1840, 1845, 1847, 1852, 1848, 1853, 1854, 1861, 1856, 1859,
-     1857, 1860, 1862, 1865, 1866, 1871, 1867, 1875, 1880, 1881,
-     4028, 1882, 1893, 1888, 1890, 1894, 1895, 1905, 1900, 1902,
-
-     1906, 1884, 1908, 1907, 1911, 1914, 4028, 1915, 1917, 1918,
-     1916, 1922, 1923, 1924, 1921, 1927, 1941, 1942, 1931, 1943,
-     1944, 1946, 1950, 1930, 1953, 1960, 1963, 1964, 1966, 4028,
-     1969, 1955, 1962, 1970, 1972, 1973, 1974, 1981, 1984, 1976,
-     1979, 1982, 1985, 1986, 1989, 1991, 2000, 1990, 1992, 1995,
-     1999, 2002, 2003, 2005, 2006, 2010, 2015, 2022, 2023, 2025,
-     1920, 2017, 2019, 2031, 4028, 2034, 2030, 2036, 2038, 2040,
-     2039, 2041, 2048, 2052, 4028, 2045, 4028, 2053, 2055, 2065,
-     4028, 2067, 4028, 2069, 2060, 4028, 2070, 2071, 2047, 2049,
-     2064, 2075, 2077, 2082, 2079, 2084, 2085, 2087, 2088, 2089,
-
-     2091, 2090, 4028, 2097, 2094, 2100, 2101, 2098, 2105, 2106,
-     2107, 2108, 2111, 2115, 2123, 2118, 2127, 4028, 2119, 2130,
-     2122, 2131, 4028, 2124, 2134, 2132, 2136, 2139, 2146, 2147,
-     2149, 2150, 2143, 2151, 2159, 2160, 2162, 2163, 2164, 2171,
-     2167, 2175, 2166, 2173, 2177, 2174, 2170, 2181, 2183, 2185,
-     2186, 2190, 2191, 2193, 2192, 2194, 2195, 2196, 4028, 2198,
-     2205, 2206, 2207, 2208, 2218, 2210, 4028, 2213, 4028, 2216,
-     2220, 2224, 2229, 2231, 2221, 2234, 2235, 2238, 2239, 2246,
-     2245, 2242, 2251, 2249, 2252, 2253, 2256, 4028, 2255, 2257,
-     2258, 2260, 2261, 2272, 2273, 2278, 2263, 2285, 4028, 2271,
-
-     2282, 2286, 2289, 2292, 4028, 2293, 2301, 2294, 2296, 4028,
-     4028, 2297, 2302, 2304, 2303, 2306, 2314, 2311, 2312, 4028,
-     2319, 2309, 2320, 2323, 2326, 2332, 2333, 2315, 4028, 2334,
-     2336, 2339, 2340, 2343, 2344, 2322, 2351, 2346, 2348, 2354,
-     2362, 2364, 2369, 4028, 2352, 2350, 2371, 2363, 2372, 2365,
-     2373, 2376, 2378, 2379, 2380, 2381, 2387, 2390, 2382, 2389,
-     2392, 2394, 2395, 2398, 2399, 2405, 2402, 2413, 2411, 4028,
-     2416, 2409, 2423, 2418, 2419, 2425, 2428, 2432, 2421, 2430,
-     2431, 2442, 2437, 4028, 2445, 2438, 2441, 2447, 2448, 2453,
-     2449, 2455, 2458, 2461, 4028, 4028, 2456, 2464, 2466, 2468,
-
-     2467, 2470, 2471, 2473, 2478, 4028, 2479, 2486, 2482, 2483,
-     2491, 2493, 2489, 2492, 2495, 2498, 2500, 2501, 2503, 2505,
-     2507, 2508, 2510, 2511, 4028, 2516, 2512, 2517, 2514, 2528,
-     2530, 2532, 2539, 2524, 2522, 2526, 2540, 2542, 2550, 2553,
-     2551, 2552, 2560, 4028, 2555, 2557, 2556, 2558, 2565, 2562,
-     2569, 2566, 4028, 2570, 2571, 2575, 2580, 2576, 2581, 2585,
-     2582, 2586, 4028, 2589, 4028, 2597, 2591, 4028, 2592, 2599,
-     2593, 2601, 2602, 2605, 2607, 2609, 2612, 2608, 4028, 2615,
-     2617, 2619, 2621, 4028, 2626, 4028, 2618, 4028, 2623, 2629,
-     2637, 2632, 2639, 2642, 2646, 2633, 4028, 2647, 2636, 2650,
-
-     2648, 2652, 2653, 2655, 2658, 2659, 2660, 2662, 4028, 2663,
-     2664, 4028, 2661, 2669, 2672, 2674, 2680, 4028, 2677, 4028,
-     2678, 2689, 2676, 2691, 2693, 2694, 2698, 2682, 2697, 2707,
-     2704, 2705, 2706, 4028, 2708, 2710, 2712, 2715, 2713, 2719,
-     2726, 2725, 2721, 2722, 2731, 2735, 2729, 2740, 2744, 2737,
-     2733, 4028, 2747, 2748, 4028, 2749, 2750, 2751, 2755, 4028,
-     2754, 4028, 2757, 2758, 2756, 2759, 2765, 2766, 2777, 2761,
-     2774, 2767, 2779, 2788, 2783, 2784, 4028, 4028, 2786, 2789,
-     2794, 2795, 2790, 2797, 2805, 2801, 2808, 4028, 2800, 2809,
-     2803, 2812, 2811, 2810, 2813, 2818, 2819, 2820, 2831, 2821,
-
-     2822, 4028, 2824, 2830, 2832, 2833, 2834, 2837, 2838, 4028,
-     2839, 2845, 2848, 2850, 2846, 2857, 2861, 2865, 2867, 2858,
-     2868, 2871, 2874, 2876, 2878, 2880, 2869, 2885, 2882, 2890,
-     2892, 2887, 4028, 2893, 2895, 2896, 2902, 2899, 2897, 2904,
-     2908, 2911, 2912, 2905, 2913, 2919, 4028, 2914, 2916, 2921,
-     2922, 2928, 2923, 2930, 2925, 2933, 2935, 2937, 2941, 4028,
-     2943, 2944, 2946, 2947, 2948, 2951, 2952, 2953, 2954, 2958,
-     2959, 2970, 2962, 4028, 2965, 4028, 2972, 2974, 2982, 2977,
-     2979, 4028, 2980, 2983, 4028, 2984, 4028, 2987, 2988, 2989,
-     2991, 2998, 4028, 3005, 2994, 3006, 3000, 3002, 3010, 3013,
-
-     4028, 3011, 3017, 3019, 3021, 3022, 3023, 3024, 3027, 3025,
-     3028, 3036, 3034, 3032, 4028, 3035, 3039, 3047, 3046, 2840,
-     4028, 4028, 3048, 3052, 3055, 3037, 3056, 4028, 4028, 4028,
-     3060, 4028, 3049, 4028, 4028, 3061, 3065, 4028, 3069, 4028,
-     3076, 3071, 3073, 3074, 3075, 4028, 3078, 3079, 3082, 4028,
-     3077, 3090, 3083, 3085, 4028, 3088, 4028, 3092, 3095, 3098,
-     3102, 3099, 3105, 3107, 3109, 3112, 3114, 3115, 3116, 3118,
-     3119, 3120, 3122, 3121, 3124, 3125, 3128, 3129, 3135, 3136,
-     3137, 3138, 3143, 3140, 3142, 3145, 3156, 3147, 3163, 3165,
-     4028, 4028, 3153, 3157, 3155, 3159, 3167, 3168, 3169, 3170,
-
-     4028, 3181, 3174, 3172, 3178, 3182, 3184, 3186, 3189, 3191,
-     3193, 3195, 3206, 3196, 3198, 3199, 3203, 3201, 3207, 3211,
-     3215, 4028, 3219, 3212, 4028, 4028, 3209, 3220, 3225, 3222,
-     3226, 3233, 3230, 4028, 3235, 3236, 3239, 3241, 4028, 3243,
-     4028, 3246, 3247, 3249, 3252, 4028, 4028, 4028, 3255, 3253,
-     3257, 3258, 3259, 3260, 3261, 3263, 4028, 3262, 3268, 3269,
-     3272, 3279, 3282, 3276, 3284, 3291, 3288, 3295, 3297, 4028,
-     4028, 3286, 3298, 3300, 3301, 3302, 3290, 3307, 3303, 3309,
-     4028, 3310, 3312, 3314, 3316, 3318, 3319, 3322, 3324, 4028,
-     4028, 3320, 3325, 3330, 3335, 3331, 3337, 3326, 3343, 3336,
-
-     3340, 3348, 3351, 3352, 4028, 3353, 3354, 4028, 3356, 3358,
-     3361, 4028, 3363, 4028, 4028, 3366, 4028, 4028, 3368, 3369,
-     3374, 3375, 3380, 3382, 3384, 3371, 3377, 3392, 3394, 3395,
-     4028, 4028, 3402, 3385, 3397, 3404, 4028, 4028, 3400, 3406,
-     3407, 3409, 3390, 3411, 3414, 3415, 3418, 3416, 3419, 3421,
-     3428, 3417, 3431, 3430, 3432, 3437, 3439, 3440, 4028, 3442,
-     3444, 3438, 4028, 3449, 3452, 4028, 3443, 3454, 3451, 3462,
-     3463, 3470, 3466, 3465, 4028, 3467, 3468, 4028, 3472, 4028,
-     4028, 4028, 3477, 3483, 3481, 4028, 3486, 3488, 4028, 3494,
-     3487, 3475, 3504, 3485, 3500, 3499, 3507, 3502, 3509, 4028,
-
-     3503, 3510, 3512, 3513, 3514, 3515, 3516, 3519, 3520, 3529,
-     3521, 3531, 3523, 4028, 3536, 3540, 4028, 3544, 3541, 4028,
-     3549, 3533, 3537, 3545, 4028, 3550, 3552, 3554, 3556, 3558,
-     3559, 3561, 3562, 3568, 3569, 3570, 4028, 3563, 3565, 3574,
-     3579, 3580, 3587, 3583, 3589, 4028, 3591, 3586, 4028, 3593,
-     3597, 3594, 3598, 3596, 3607, 3610, 3611, 4028, 3613, 4028,
-     4028, 4028, 3614, 4028, 3618, 3619, 3604, 3620, 3622, 3623,
-     4028, 4028, 3626, 3631, 3627, 4028, 3625, 3635, 3636, 3637,
-     3638, 3639, 3640, 3642, 3643, 3647, 4028, 4028, 3648, 4028,
-     3651, 3654, 3658, 4028, 4028, 4028, 3666, 4028, 3663, 4028,
-
-     3670, 3661, 3671, 4028, 3673, 3674, 4028, 3675, 3677, 3680,
-     3683, 3688, 3690, 3676, 3684, 3691, 3692, 3698, 3694, 3705,
-     4028, 4028, 3707, 4028, 3709, 4028, 3702, 3715, 4028, 3710,
-     3716, 3718, 3720, 4028, 4028, 3721, 3729, 3725, 3726, 3727,
-     3678, 3728, 4028, 4028, 4028, 3732, 4028, 3730, 3736, 3737,
-     4028, 3738, 3740, 3741, 3743, 3742, 3745, 3747, 3748, 3755,
-     3750, 3764, 3766, 3752, 3767, 3769, 3771, 3779, 3774, 3776,
-     4028, 3777, 4028, 4028, 3778, 3787, 3789, 3782, 3780, 3784,
-     4028, 3785, 3790, 3791, 3795, 3798, 3800, 3801, 3802, 3810,
-     3807, 3813, 3814, 3815, 3822, 3824, 3820, 3825, 3826, 3835,
-
-     3828, 3830, 4028, 3831, 3832, 3833, 3837, 3838, 3841, 3840,
-     3848, 3853, 3855, 3856, 3842, 3858, 3862, 3864, 3865, 3867,
-     3866, 4028, 3868, 3870, 3874, 3876, 3877, 3879, 3880, 3881,
-     3887, 3883, 3889, 3892, 3894, 4028, 3897, 4028, 4028, 3900,
-     3896, 3903, 3907, 3909, 4028, 4028, 4028, 3936, 3943, 3950,
-     3957, 3964,  388, 3971, 3978, 3985, 3992, 3999, 4006, 4013,
-     4020
+       88,  364,  362,  368,  376,  375,  379,  380,  363,  384,
+      385,  374,  387,  396,  392,  394,  398,  386,  402,  403,
+      411,  405,  414,  421,  418,  422,  426,  423,  424,  433,
+      434,  441,  442,  437,  438,  440,  443,  447,  448,  449,
+      452,  450,  454,  456,  458,  459,  460,  467,  462,  474,
+
+      466,  359,  476,  477,  473,  475,  484,  494,  495,  491,
+      479,  496,  490,  497,  504,  501,  513,  499,  500,  503,
+      511,  515,  520,  522,  525,  530,  516,  528,  531,  521,
+      533,  535,  539,  536,  547,  542,  550,  551,  549,  559,
+      546,  555,  557,  558,  560,  562,  563,  564,  567,  569,
+      572,  574,  582,  577,  575,  579,  583,  584,  589,  591,
+      598,  594,  604,  595,  606,  608,  609,  611,  614,  622,
+      613,  620,  624,  626,  616,  633,  629,  630,  632,  639,
+      634,  638,  641,  651,  647,  640,  655,  656,  658,  660,
+      662,  680,  666,  664,  690,  665,  668,  670,  677,  704,
+
+      678,  688,  691,  669,  700,  709,  693,  702,  705,  716,
+      707,  711,  712,  723,  718,  724,  725,  722,  726,  729,
+      730,  735,  731,  737,  739,  742,  750,  743,  761,  744,
+      756,  760,  758,  751,  766,  768,  769,  774,  776,  777,
+      772,  778,  779,  780,  785,  786,  790,  784,  796, 4111,
+      798,  791,  794,  800,  801,  803, 4111,  804,  806,  811,
+      813,  808,  814,  816,  810,  829,  833,  820,  831,  828,
+      832,  835,  837,  838,  840,  841,  861,  844,  846,  842,
+      854,  863,  855,  870,  847,  873,  868,  845,  876,  878,
+      879,  881,  884,  885,  888,  889, 4111,  890,  898,  896,
+
+      882,  899,  902,  906,  907,  915,  911,  913,  914,  917,
+      918,  920,  924,  931,  928,  927,  933,  943,  935,  945,
+      948,  938,  946,  947,  949,  950,  958,  956,  953,  962,
+      955,  969,  965,  964,  973,  961,  982,  968,  972,  984,
+      974,  993,  990,  991,  992,  995,  997,  998, 1003, 1001,
+     1004, 1005, 1013, 1009, 1008, 1019, 1021, 1010, 1023, 1030,
+     1027, 1031, 1033, 1029, 1041, 1038, 1039, 1048, 1043, 1044,
+     1046, 1045, 1060, 1055, 1047, 1061, 1057, 1065, 1066, 1068,
+     1058, 1069, 1070, 1071, 1073, 1075, 1078, 1079, 1087, 1082,
+     1083, 1090, 1092, 1095, 1098, 1099, 1085, 1100, 1105, 1109,
+
+     1110, 1111, 1118, 1107, 1119, 1120, 1108, 1121, 1127, 1128,
+     1133, 1124, 1134, 1138, 4111, 1142, 1139, 1140, 1141, 1146,
+     1154, 1149, 1150, 1151, 1152, 1158, 4111, 1156, 4111, 4111,
+     1161, 4111, 4111, 1160, 1173, 1162, 1174, 1181, 1189, 1190,
+     1188, 1165, 1185, 1187, 1195, 1200, 1204, 1205, 1201, 1213,
+     1210, 1217, 1218, 1219, 1184, 1207, 1222, 1224, 1225, 1227,
+     1229, 1231, 1230, 1234, 1232, 1236, 1247, 1255, 1250, 1251,
+     1252, 1254, 1238, 1258, 1259, 1261, 1240, 1264, 1267, 1271,
+     1268, 4111, 1269, 1270, 1274, 1276, 1272, 1282, 1284,  306,
+     1285, 4111, 1289, 1293, 1290, 1295, 1294, 1297, 1298, 1301,
+
+     1303, 1302, 1304, 1305, 1307, 1313, 1309, 1308, 1319, 1310,
+     1326, 1333, 1334, 1331, 1329, 1332, 1336, 1337, 1338, 1349,
+     1342, 1346, 1347, 1356, 1351, 1354, 1355, 1362, 1357, 1359,
+     1365, 1366, 1367, 1368, 1391, 1369, 1374, 1377, 1376, 1375,
+     1380, 1382, 1383, 1399, 1389, 1404, 1405, 1406, 1409, 1410,
+     1413, 1415, 1416, 1423, 1386, 1430, 1427, 1419, 1432, 1426,
+     1436, 1438, 1442, 1441, 1443, 1444, 1445, 1451, 1452, 4111,
+     1460, 1455, 1459, 1461, 1468, 1465, 1466, 1467, 1471, 1472,
+     1473, 1475, 1479, 1469, 1477, 1481, 1483, 1486, 1493, 4111,
+     1490, 1496, 1497, 1498, 1499, 1500, 1502, 1506, 1516, 1508,
+
+     4111, 1513, 1523, 1524, 1515, 1519, 1520, 1526, 1536, 1527,
+     1531, 1532, 1535, 1537, 1538, 1544, 4111, 1539, 1546, 1548,
+     1550, 1552, 1555, 1557, 1558, 1559, 1563, 1564, 1571, 1567,
+     1569, 4111, 1566, 1579, 1570, 1568, 1591, 1592, 1575, 1588,
+     1595, 1587, 1589, 1596, 1601, 1598, 1600, 1599, 1602, 4111,
+     1604,  849, 1605, 1607, 1610, 1617, 1620, 1621, 1624, 1625,
+     1628, 1631, 1632, 1615, 1633, 1635, 1637, 1613, 1638, 1641,
+     1643, 1644, 1646, 4111, 1653, 1655, 1661, 1657, 1645, 1658,
+     1663, 1669, 1666, 1670, 1667, 4111, 1678, 1679, 1673, 1680,
+     1681, 1684, 1687, 1689, 1688, 1690, 1691, 1692, 1693, 1696,
+
+     1697, 1703, 4111, 1710, 1705, 1706, 1702, 1713, 1715, 1726,
+     1721, 1723, 1728, 1729, 1731, 1724, 1738, 1734, 1742, 1736,
+     1743, 1746, 1749, 1752, 1753, 1754, 1739, 1762, 1765, 1755,
+     1763, 1764, 1769, 1774, 1766, 4111, 1771, 1776, 1779, 1781,
+     1789, 1785, 1786, 1787, 1792, 1793, 1794, 1796, 1798, 1804,
+     1802, 1805, 1811, 4111, 1812, 1808, 1816, 1818, 1819, 1822,
+     1824, 1825, 1827, 1828, 1831, 1830, 1832, 1833, 1840, 1841,
+     1842, 1843, 4111, 1850, 1851, 1852, 1859, 1854, 1855, 1860,
+     1862, 1864, 1865, 1866, 1873, 1868, 1870, 1869, 1875, 1876,
+     1872, 1878, 1879, 1886, 1895, 1883, 1896, 4111, 1880, 1908,
+
+     1900, 1904, 1905, 1898, 1910, 1918, 1911, 1923, 1922, 1921,
+     1914, 1924, 1927, 1929, 1928, 1931, 4111, 1935, 1930, 1936,
+     1937, 1938, 1941, 1942, 1940, 1953, 1947, 1960, 1943, 1962,
+     1963, 1966, 1967, 1968, 1969, 1976, 1978, 1979, 1982, 4111,
+     1985, 1986, 1987, 1975, 1992, 1977, 1988, 2000, 2004, 1995,
+     2001, 2002, 2005, 2006, 2008, 2010, 2017, 2009, 2012, 2014,
+     2018, 2022, 2013, 2023, 2025, 2039, 2029, 2044, 2030, 2045,
+     2040, 2046, 2047, 2048, 4111, 2051, 2052, 2057, 2058, 2061,
+     2059, 2062, 2070, 2073, 4111, 2066, 4111, 2069, 2075, 2085,
+     4111, 2081, 4111, 2087, 2078, 4111, 2088, 2089, 2083, 2092,
+
+     2093, 2095, 2096, 2102, 2099, 2104, 2105, 2097, 2109, 2108,
+     2110, 2113, 4111, 2115, 2116, 2121, 2122, 2125, 2126, 2127,
+     2128, 2131, 2136, 2139, 2148, 2132, 2149, 4111, 2140, 2156,
+     2141, 2153, 4111, 2133, 2161, 2163, 2150, 2158, 2166, 2165,
+     2167, 2172, 2176, 2174, 2171, 2181, 2182, 2185, 2189, 2191,
+     2184, 2193, 2194, 2201, 2198, 2205, 2196, 2204, 2211, 2208,
+     2197, 2200, 2206, 2216, 2217, 2221, 2222, 2224, 2223, 2225,
+     2227, 2228, 4111, 2237, 2232, 2229, 2238, 2239, 2242, 2240,
+     4111, 2244, 4111, 2247, 2258, 2261, 2262, 2250, 2263, 2266,
+     2248, 2268, 2269, 2276, 2274, 2271, 2281, 2282, 2283, 2285,
+
+     2284, 4111, 2286, 2287, 2288, 2290, 2293, 2298, 2307, 2304,
+     2292, 2315, 4111, 2318, 2299, 2319, 2326, 2321, 4111, 2323,
+     2331, 2328, 2329, 4111, 4111, 2330, 2334, 2333, 2335, 2336,
+     2345, 2340, 2344, 4111, 2348, 2337, 2350, 2358, 2359, 2360,
+     2352, 2351, 4111, 2366, 2368, 2369, 2370, 2372, 2373, 2371,
+     2382, 2375, 2378, 2380, 2389, 2391, 2393, 4111, 2395, 2397,
+     2399, 2401, 2402, 2403, 2405, 2407, 2409, 2408, 2410, 2411,
+     2415, 2412, 2416, 2418, 2429, 2430, 2419, 2431, 2432, 2438,
+     2435, 2442, 2439, 2444, 2445, 2453, 2448, 4111, 2462, 2446,
+     2463, 2454, 2458, 2466, 2467, 2475, 2459, 2470, 2474, 2482,
+
+     2477, 4111, 2486, 2481, 2483, 2488, 2484, 2491, 2489, 2493,
+     2498, 2501, 4111, 4111, 2496, 2503, 2506, 2507, 2508, 2511,
+     2512, 2516, 2518, 4111, 2519, 2526, 2523, 2522, 2531, 2533,
+     2536, 2539, 2532, 2528, 2530, 2538, 2551, 2540, 2545, 2546,
+     2552, 2553, 4111, 2555, 2560, 2559, 2556, 2561, 2565, 2566,
+     2569, 2572, 2576, 2578, 2585, 2581, 2589, 2592, 2584, 2587,
+     2597, 4111, 2594, 2596, 2595, 2601, 2608, 2603, 2611, 2604,
+     4111, 2609, 2613, 2618, 2620, 2615, 2621, 2623, 2624, 2622,
+     4111, 2629, 4111, 2633, 2632, 4111, 2637, 2638, 2640, 2642,
+     2641, 2648, 2643, 2645, 2652, 2653, 2655, 2656, 2664, 2657,
+
+     4111, 2665, 2660, 2667, 2673, 4111, 2669, 4111, 2674, 4111,
+     2679, 2675, 2686, 2681, 2683, 2685, 2692, 2688, 4111, 2693,
+     2695, 2701, 2697, 2699, 2704, 2705, 2707, 2703, 2708, 2712,
+     4111, 2710, 2713, 4111, 2709, 2722, 2721, 2727, 2728, 4111,
+     2725, 4111, 2726, 2737, 2738, 2741, 2742, 2743, 2745, 2747,
+     2749, 2757, 2753, 2754, 2752, 4111, 2755, 2756, 2762, 2771,
+     2763, 2759, 2781, 2768, 2780, 2776, 2783, 2785, 2787, 2789,
+     2793, 2794, 2790, 4111, 2795, 2801, 4111, 2797, 2798, 2804,
+     2805, 4111, 2807, 4111, 2808, 2809, 2811, 2816, 2820, 2817,
+     2828, 2812, 2829, 2830, 2832, 2840, 2815, 2837, 4111, 4111,
+
+     2842, 2838, 2844, 2848, 2846, 2850, 2859, 2851, 2855, 2860,
+     4111, 2862, 2852, 4111, 2861, 2864, 2867, 2863, 2870, 2871,
+     2876, 2874, 2877, 2879, 2880, 2882, 2883, 4111, 2884, 2887,
+     2888, 2895, 2896, 2893, 2897, 4111, 2891, 2899, 2901, 2900,
+     2907, 2909, 2915, 2920, 2924, 2911, 2925, 2927, 2930, 2932,
+     2934, 2936, 2929, 2941, 2937, 2944, 2946, 2947, 4111, 2949,
+     2951, 2952, 2957, 2958, 2953, 2960, 2961, 2965, 2967, 2968,
+     2969, 2973, 4111, 2970, 2974, 2978, 2975, 2981, 2982, 2985,
+     2987, 2989, 2991, 2994, 2999, 4111, 2992, 2998, 3000, 3002,
+     3005, 3006, 3009, 3012, 3010, 3013, 3016, 3024, 3028, 4111,
+
+     3020, 4111, 3029, 3033, 3037, 3035, 3021, 4111, 3039, 3042,
+     4111, 3045, 4111, 3046, 3047, 3048, 3050, 3056, 4111, 3059,
+     3060, 3067, 3064, 3066, 3069, 3071, 3072, 3073, 3074, 4111,
+     3077, 3076, 3085, 3082, 3078, 3088, 3089, 3090, 3091, 3095,
+     3099, 3096, 3097, 4111, 3101, 3104, 3112, 3105, 3114, 4111,
+     4111, 3107, 3118, 3120, 3110, 3124, 4111, 4111, 4111, 3127,
+     4111, 3122, 4111, 4111, 3128, 3130, 4111, 3132, 4111, 3141,
+     3137, 3134, 3139, 3142, 4111, 3143, 3144, 3146, 4111, 3148,
+     3155, 3151, 3152, 4111, 3154, 4111, 3158, 3164, 3160, 3166,
+     3170, 3171, 3173, 3175, 3178, 3179, 3180, 3181, 3183, 3185,
+
+     3187, 3188, 3186, 3190, 3192, 3194, 3196, 3200, 3202, 3203,
+     3204, 3209, 3207, 3208, 3210, 3214, 3212, 3222, 3223, 4111,
+     4111, 3227, 2766, 4111, 3228, 3229, 3231, 3232, 3233, 3234,
+     3237, 3235, 4111, 3239, 3240, 3241, 3243, 3246, 3244, 3251,
+     3256, 3257, 3264, 3266, 3273, 3260, 3268, 3258, 3270, 3271,
+     3274, 3279, 3280, 4111, 3281, 3285, 4111, 4111, 3286, 3289,
+     3288, 3293, 3295, 3297, 3298, 4111, 3299, 3301, 3310, 3303,
+     4111, 3312, 4111, 3318, 3300, 3321, 3323, 4111, 4111, 4111,
+     3324, 3307, 3315, 3326, 3327, 3331, 3330, 3333, 4111, 3337,
+     3334, 3338, 3340, 3345, 3347, 3350, 3348, 3360, 3351, 3359,
+
+     3362, 4111, 4111, 3363, 3370, 3366, 3373, 3368, 3374, 3375,
+     3365, 3377, 3378, 3381, 4111, 3386, 3382, 3388, 3390, 3391,
+     3392, 3394, 3396, 4111, 4111, 3397, 3398, 3402, 3408, 3404,
+     3410, 3399, 3412, 3409, 3413, 3425, 3422, 3415, 4111, 3426,
+     3427, 4111, 3429, 3431, 3432, 4111, 3436, 4111, 4111, 3439,
+     4111, 4111, 3434, 3441, 3444, 3446, 3451, 3453, 3456, 3448,
+     3457, 3464, 3460, 3461, 4111, 4111, 3468, 3463, 3469, 3476,
+     4111, 4111, 3472, 3478, 4111, 3473, 3474, 3479, 3482, 3483,
+     3480, 3488, 3485, 3489, 3490, 3495, 3501, 3505, 3499, 3507,
+     3493, 3508, 3510, 3511, 3516, 4111, 3518, 3520, 3514, 4111,
+
+     3522, 3524, 4111, 3525, 3527, 3533, 3530, 3535, 3546, 3528,
+     3538, 4111, 3542, 3544, 4111, 3548, 4111, 4111, 4111, 3549,
+     3552, 3555, 4111, 3557, 3559, 4111, 3566, 3558, 3561, 3574,
+     3570, 3572, 3569, 3577, 3576, 3584, 3579, 3586, 4111, 3580,
+     3583, 3588, 3589, 3591, 3592, 3593, 3596, 3597, 3603, 3600,
+     3607, 3610, 4111, 3612, 3614, 4111, 3617, 3618, 4111, 3620,
+     3621, 3622, 3624, 4111, 3627, 3625, 3630, 3632, 3634, 3635,
+     3636, 3637, 3647, 3650, 3655, 4111, 3649, 3638, 3659, 3642,
+     4111, 3663, 3651, 3671, 3664, 3667, 4111, 3673, 3669, 4111,
+     3675, 3678, 3676, 3679, 3686, 3692, 3694, 3695, 4111, 3697,
+
+     4111, 4111, 4111, 3698, 4111, 3702, 3689, 3687, 3704, 3706,
+     3709, 4111, 4111, 3708, 3711, 3712, 4111, 3715, 3718, 3719,
+     3720, 3721, 3722, 3723, 3727, 3728, 3726, 3725, 4111, 4111,
+     3731, 4111, 3734, 3737, 3640, 4111, 4111, 4111, 3740, 4111,
+     3744, 4111, 3750, 3752, 3753, 4111, 3755, 3756, 4111, 3757,
+     3759, 3760, 3763, 3765, 3769, 3773, 3758, 3766, 3776, 3777,
+     3779, 3780, 3786, 4111, 4111, 3788, 4111, 3790, 4111, 3791,
+     3793, 4111, 3794, 3795, 3798, 3802, 4111, 4111, 3677, 4111,
+     3809, 3804, 3805, 3807, 3811, 3808, 4111, 4111, 4111, 3812,
+     4111, 3816, 3814, 3817, 4111, 3819, 3822, 3821, 3823, 3827,
+
+     3825, 3832, 3828, 3837, 3833, 3839, 3845, 3846, 3849, 3852,
+     3853, 3861, 3856, 3858, 4111, 3859, 4111, 4111, 3860, 3869,
+     3871, 3862, 3867, 3864, 4111, 3872, 3866, 3875, 3878, 3873,
+     3882, 3884, 3881, 3893, 3890, 3896, 3897, 3898, 3905, 3904,
+     3906, 3907, 3908, 3915, 3910, 3911, 4111, 3914, 3912, 3916,
+     3920, 3921, 3918, 3925, 3936, 3938, 3940, 3934, 3928, 3943,
+     3946, 3948, 3930, 3951, 3950, 4111, 3952, 3954, 3958, 3960,
+     3961, 3963, 3964, 3965, 3968, 3971, 3973, 3975, 3980, 4111,
+     3976, 4111, 4111, 3984, 3985, 3986, 3991, 3993, 4111, 4111,
+     4111, 4019, 4026, 4033, 4040, 4047,  680, 4054, 4061, 4068,
+
+     4075, 4082, 4089, 4096, 4103
     } ;
 
-static yyconst flex_int16_t yy_def[2062] =
+static yyconst flex_int16_t yy_def[2106] =
     {   0,
-     2047,    1, 2048, 2048, 2049, 2049, 2050, 2050, 2051, 2051,
-     2052, 2052, 2047, 2053, 2047, 2047, 2047, 2047, 2054, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2055, 2047, 2047, 2047, 2055, 2056, 2047, 2047, 2047, 2056,
-     2057, 2047, 2047, 2047, 2047, 2057, 2058, 2047, 2047, 2047,
-     2058, 2059, 2047, 2060, 2047, 2059, 2059, 2053, 2053, 2047,
-     2061, 2054, 2061, 2054, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2055,
-     2055, 2056, 2056, 2057, 2057, 2047, 2058, 2058, 2059, 2059,
-     2060, 2060, 2059, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2059, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2059, 2053, 2053, 2053, 2053, 2053,
-
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053, 2053,
-     2053, 2053, 2053, 2053, 2047, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2047, 2059, 2053, 2053, 2053, 2053,
-
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-
-     2053, 2053, 2053, 2053, 2053, 2059, 2053, 2053, 2053, 2053,
-     2053, 2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2047, 2053, 2047, 2047, 2053, 2047, 2047, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2059, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2047, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2047, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2047, 2053, 2053, 2053, 2053,
-
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2047, 2053, 2059, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2047, 2053, 2053, 2053, 2053,
-
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2047, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-
-     2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2047, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2047, 2053, 2047, 2053, 2053, 2053,
-     2047, 2053, 2047, 2053, 2053, 2047, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-
-     2053, 2053, 2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053, 2053,
-     2053, 2053, 2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053, 2047, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053,
-
-     2053, 2053, 2053, 2053, 2047, 2053, 2053, 2053, 2053, 2047,
-     2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2047, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2047, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2047, 2047, 2053, 2053, 2053, 2053,
-
-     2053, 2053, 2053, 2053, 2053, 2047, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2047, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2047, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2047, 2053, 2047, 2053, 2053, 2047, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053,
-     2053, 2053, 2053, 2047, 2053, 2047, 2053, 2047, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053, 2053, 2053,
-
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053,
-     2053, 2047, 2053, 2053, 2053, 2053, 2053, 2047, 2053, 2047,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2047, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2047, 2053, 2053, 2047, 2053, 2053, 2053, 2053, 2047,
-     2053, 2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2047, 2047, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-
-     2053, 2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2047, 2053, 2047, 2053, 2053, 2053, 2053,
-     2053, 2047, 2053, 2053, 2047, 2053, 2047, 2053, 2053, 2053,
-     2053, 2053, 2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-
-     2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2047, 2053, 2053, 2053, 2053, 2053,
-     2047, 2047, 2053, 2053, 2053, 2053, 2053, 2047, 2047, 2047,
-     2053, 2047, 2053, 2047, 2047, 2053, 2053, 2047, 2053, 2047,
-     2053, 2053, 2053, 2053, 2053, 2047, 2053, 2053, 2053, 2047,
-     2053, 2053, 2053, 2053, 2047, 2053, 2047, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2047, 2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-
-     2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2047, 2053, 2053, 2047, 2047, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2047, 2053, 2053, 2053, 2053, 2047, 2053,
-     2047, 2053, 2053, 2053, 2053, 2047, 2047, 2047, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047,
-     2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047,
-     2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-
-     2053, 2053, 2053, 2053, 2047, 2053, 2053, 2047, 2053, 2053,
-     2053, 2047, 2053, 2047, 2047, 2053, 2047, 2047, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2047, 2047, 2053, 2053, 2053, 2053, 2047, 2047, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053,
-     2053, 2053, 2047, 2053, 2053, 2047, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2047, 2053, 2053, 2047, 2053, 2047,
-     2047, 2047, 2053, 2053, 2053, 2047, 2053, 2053, 2047, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047,
-
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2047, 2053, 2053, 2047, 2053, 2053, 2047,
-     2053, 2053, 2053, 2053, 2047, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2047, 2053, 2053, 2047, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2047, 2053, 2047,
-     2047, 2047, 2053, 2047, 2053, 2053, 2053, 2053, 2053, 2053,
-     2047, 2047, 2053, 2053, 2053, 2047, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2047, 2047, 2053, 2047,
-     2053, 2053, 2053, 2047, 2047, 2047, 2053, 2047, 2053, 2047,
-
-     2053, 2053, 2053, 2047, 2053, 2053, 2047, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2047, 2047, 2053, 2047, 2053, 2047, 2053, 2053, 2047, 2053,
-     2053, 2053, 2053, 2047, 2047, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2047, 2047, 2047, 2053, 2047, 2053, 2053, 2053,
-     2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2047, 2053, 2047, 2047, 2053, 2053, 2053, 2053, 2053, 2053,
-     2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-
-     2053, 2053, 2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2047, 2053, 2053, 2053, 2053, 2053, 2053, 2053, 2053,
-     2053, 2053, 2053, 2053, 2053, 2047, 2053, 2047, 2047, 2053,
-     2053, 2053, 2053, 2053, 2047, 2047,    0, 2047, 2047, 2047,
-     2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047,
-     2047
+     2091,    1, 2092, 2092, 2093, 2093, 2094, 2094, 2095, 2095,
+     2096, 2096, 2091, 2097, 2091, 2091, 2091, 2091, 2098, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2099, 2091, 2091, 2091, 2099, 2100, 2091, 2091, 2091, 2100,
+     2101, 2091, 2091, 2091, 2091, 2101, 2102, 2091, 2091, 2091,
+     2102, 2103, 2091, 2104, 2091, 2103, 2103, 2097, 2097, 2091,
+     2105, 2098, 2105, 2098, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2099,
+     2099, 2100, 2100, 2101, 2101, 2091, 2102, 2102, 2103, 2103,
+     2104, 2104, 2103, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2103, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2103, 2097, 2097, 2097, 2097,
+
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091,
+     2097, 2097, 2097, 2097, 2097, 2097, 2091, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2091, 2103, 2097, 2097,
+
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2103, 2097,
+     2097, 2097, 2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2091, 2097, 2091, 2091,
+     2097, 2091, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2103, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+
+     2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2091, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091,
+     2097, 2103, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2091, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+
+     2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2091, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091, 2097, 2097,
+
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2091, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2091, 2097, 2091, 2097, 2097, 2097,
+     2091, 2097, 2091, 2097, 2097, 2091, 2097, 2097, 2097, 2097,
+
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091, 2097, 2097,
+     2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2091, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+
+     2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2091, 2097,
+     2097, 2097, 2097, 2091, 2091, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+
+     2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2091, 2091, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2091, 2097, 2091, 2097, 2097, 2091, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+
+     2091, 2097, 2097, 2097, 2097, 2091, 2097, 2091, 2097, 2091,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2091, 2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2091,
+     2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2091, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2091, 2097, 2097, 2091, 2097, 2097, 2097,
+     2097, 2091, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091, 2091,
+
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2091, 2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2091, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2091, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091,
+
+     2097, 2091, 2097, 2097, 2097, 2097, 2097, 2091, 2097, 2097,
+     2091, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2091, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2091,
+     2091, 2097, 2097, 2097, 2097, 2097, 2091, 2091, 2091, 2097,
+     2091, 2097, 2091, 2091, 2097, 2097, 2091, 2097, 2091, 2097,
+     2097, 2097, 2097, 2097, 2091, 2097, 2097, 2097, 2091, 2097,
+     2097, 2097, 2097, 2091, 2097, 2091, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091,
+     2091, 2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2091, 2097, 2097, 2091, 2091, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2091, 2097, 2097, 2097, 2097,
+     2091, 2097, 2091, 2097, 2097, 2097, 2097, 2091, 2091, 2091,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+
+     2097, 2091, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2091, 2091, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091, 2097,
+     2097, 2091, 2097, 2097, 2097, 2091, 2097, 2091, 2091, 2097,
+     2091, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2091, 2091, 2097, 2097, 2097, 2097,
+     2091, 2091, 2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2091, 2097, 2097, 2097, 2091,
+
+     2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2091, 2097, 2097, 2091, 2097, 2091, 2091, 2091, 2097,
+     2097, 2097, 2091, 2097, 2097, 2091, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2091, 2097, 2097, 2091, 2097, 2097, 2091, 2097,
+     2097, 2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2091, 2097, 2097, 2097, 2097,
+     2091, 2097, 2097, 2097, 2097, 2097, 2091, 2097, 2097, 2091,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091, 2097,
+
+     2091, 2091, 2091, 2097, 2091, 2097, 2097, 2097, 2097, 2097,
+     2097, 2091, 2091, 2097, 2097, 2097, 2091, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091, 2091,
+     2097, 2091, 2097, 2097, 2097, 2091, 2091, 2091, 2097, 2091,
+     2097, 2091, 2097, 2097, 2097, 2091, 2097, 2097, 2091, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2091, 2091, 2097, 2091, 2097, 2091, 2097,
+     2097, 2091, 2097, 2097, 2097, 2097, 2091, 2091, 2097, 2091,
+     2097, 2097, 2097, 2097, 2097, 2097, 2091, 2091, 2091, 2097,
+     2091, 2097, 2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097,
+
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2091, 2097, 2091, 2091, 2097, 2097,
+     2097, 2097, 2097, 2097, 2091, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2091, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2091, 2097, 2097, 2097, 2097,
+     2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2097, 2091,
+     2097, 2091, 2091, 2097, 2097, 2097, 2097, 2097, 2091, 2091,
+        0, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
+
+     2091, 2091, 2091, 2091, 2091
     } ;
 
-static yyconst flex_uint16_t yy_nxt[4069] =
+static yyconst flex_uint16_t yy_nxt[4152] =
     {   0,
        14,   15,   16,   17,   18,   19,   18,   14,   14,   14,
        14,   14,   18,   20,   21,   14,   22,   23,   24,   25,
@@ -1157,419 +1173,429 @@ static yyconst flex_uint16_t yy_nxt[4069] =
        69,   69,   69,   69,  190,  193,   69,  197,  192,   69,
       196,  194,  198,  200,   69,  201,  203,   69,  204,  206,
        69,  205,   69,   69,  210,  208,  130,  130,  211,  132,
-      137,  137,  132,  708,  209,  202,  134,  214,  134,  134,
+      137,  137,  132,  713,  209,  202,  134,  214,  134,  134,
       207,  134,  139,   69,  139,  139,   73,  139,   73,   73,
       140,   73,   69,  212,   69,   69,   69,  213,  142,   69,
-       69,  221,  226,  216,   69,   69,   69,   69,  222,  215,
-      223,   69,  224,  225,  218,  217,   69,   69,   68,   69,
-      219,  228,   69,  233,  227,  234,  229,   69,   69,   69,
-
-       69,  230,  235,  236,  238,   69,   69,  231,  232,  237,
-      239,   69,   69,  240,   69,   69,   69,  247,   69,  245,
-      246,  241,  248,  242,   69,  253,  243,   69,  254,  255,
-      244,   69,   69,  257,  249,   69,  250,   69,  251,   69,
-      252,  256,  260,   69,   69,  262,  258,   69,   69,  261,
-      263,   69,   69,  259,  264,   69,   69,   69,   69,   69,
-       69,  266,   69,  267,  268,  265,   69,  270,   69,   69,
-       69,  272,   69,  271,  278,  276,  281,  273,   69,  269,
-       69,   69,   69,   69,  274,  283,   69,   69,   69,  275,
-       69,  288,  285,  284,  277,   69,  279,  280,   69,  289,
-
-      287,  282,  291,  140,   69,   69,  286,   69,   69,  292,
-       69,  298,  297,   69,   69,  295,  300,   69,  294,  299,
-       69,   69,   69,  290,   69,   69,  293,   69,  301,  296,
-      306,   69,  304,  307,   69,  303,   69,  308,  302,  309,
-       69,  310,   69,   69,  311,   69,   69,  317,   69,  313,
-      305,  314,   69,   69,   69,  316,  315,  319,   69,  320,
-       69,  312,   69,   69,  322,  321,   69,   69,  318,   69,
-       69,   69,   69,   69,  327,   69,   69,   69,  328,  140,
-      330,   69,  323,   69,  324,  326,  335,  329,  325,  331,
-       69,  332,   69,  334,   69,  333,   69,  336,   69,   69,
-
-       69,   69,   69,   69,  343,  346,  347,  338,  337,  342,
-      348,   69,  344,  345,   69,  339,  340,  349,  341,  350,
-       69,   69,  351,   69,  355,   69,   69,   69,  357,   69,
-      353,  356,  354,   69,   69,  352,   69,   69,  359,  363,
-       69,  140,   69,   69,  358,   69,  360,  365,  366,   69,
-       69,   69,  362,  368,  367,  369,  361,   69,  375,   69,
-      364,   69,   69,  370,   69,   69,  374,  371,   69,   69,
-      372,   69,  373,  376,  377,   69,   69,  380,  382,  379,
-      392,   69,  378,  381,  140,  384,  394,   69,   69,   69,
-      393,  395,   69,  400,  383,   69,  399,  385,  386,   69,
-
-       69,   69,   69,  398,   69,  396,  397,  387,   69,  388,
-      389,  390,  401,  404,  391,  406,  403,  405,   69,   69,
-      402,   69,  410,   69,  407,   69,   69,   69,   69,  138,
-      408,  412,   69,  409,  413,  414,   69,   69,   69,  411,
-      419,   69,   69,  416,   69,  415,  420,   69,  417,   69,
-      418,  421,   69,   69,  429,   69,   69,  432,  424,  423,
-      430,  425,  428,   69,  431,   69,  422,   69,   69,   69,
-      438,   69,  426,  434,  427,  435,   69,   69,   69,   69,
-      441,  436,  439,  442,   69,   69,  433,   69,  437,   69,
-       69,  440,  445,   69,  443,   69,   69,  447,   69,  448,
-
-       69,  449,  446,  450,   69,  444,   69,  452,   69,  453,
-       69,   69,   69,   69,   69,   69,   69,  451,  455,   69,
-      456,  463,   69,   69,   69,  454,  458,   69,  464,  465,
-      462,  459,  457,  460,   69,  461,  466,  468,  469,   69,
-       69,   69,  467,   69,   69,  472,   69,   69,  494,   69,
-       69,  475,   69,  471,   69,  477,   69,  140,   69,   69,
-      489,  506,  470,  473,  476,   69,   69,  474,  478,   69,
-       69,  490,  491,  479,   69,  480,  486,  487,   69,  492,
-      481,  488,  482,   69,  493,   69,  495,   69,   69,   69,
-      483,   69,  500,  484,   69,   69,  501,  499,   69,   69,
-
-      485,  497,  496,  498,  502,   69,  507,   69,   69,   69,
-      508,  505,   69,  503,  504,  512,   69,  511,   69,   69,
-      514,  510,   69,   69,   69,  509,   69,  516,  518,   69,
-      513,  515,  519,   69,  522,   69,   69,  517,  136,  523,
-       69,  525,   69,  526,   69,  527,  528,   69,  524,  520,
-      530,   69,  521,  529,   69,   69,   69,  531,   69,   69,
-      532,   69,  536,   69,   69,  535,   69,  534,   69,  539,
-      537,   69,  541,   69,   69,   69,   69,  533,   69,  542,
-       69,  538,  135,  544,   69,  548,   69,  543,  545,   69,
-       69,  540,  546,  547,  549,  550,   69,  553,  554,   69,
-
-      552,  551,  555,   69,   69,   69,   69,   69,  556,   69,
-      558,  559,   69,   69,   69,  565,   69,  562,   69,  567,
-       69,   69,  561,  560,  566,   69,  564,   69,  568,  563,
-      557,   69,  569,  572,   69,   69,  574,  575,  570,   69,
-      573,   69,   69,  577,   69,  571,  576,   69,  578,   69,
-      581,   69,   69,   69,   69,   69,   69,  579,  584,  586,
-      580,  583,  587,   69,  589,   69,   69,  588,   69,   69,
-      582,  591,   69,  585,  593,   69,   69,   69,  590,   69,
-       69,   69,   69,  598,  592,  596,   69,   69,   69,  599,
-       69,   69,  604,  594,  595,  608,  600,  597,   69,   69,
-
-      601,   69,  603,   69,  607,  602,  610,  605,   69,  606,
-      609,   69,   69,   69,   69,   69,   69,   69,   69,  615,
-      614,  617,  616,  618,  611,  613,   69,   69,   69,   69,
-      612,   69,  140,  620,  625,  619,  621,  624,  623,   69,
-       69,   69,  622,  626,   69,  628,  631,   69,   69,   69,
-      630,   69,   69,  629,   69,  633,  636,  637,   69,   69,
-      634,  627,   69,   69,   69,   69,   69,  632,   69,   69,
-       69,  640,  635,  649,  647,  641,  638,   69,  642,  645,
-      646,   69,  650,  648,  639,  643,   69,  651,  644,  652,
-      133,  661,   69,  663,   69,   69,   69,  653,  654,  660,
-
-      655,   69,   69,  656,  664,  665,   69,   69,  657,  666,
-      662,   69,  667,   69,  658,  659,   69,  669,  670,   69,
-       69,   69,  668,  671,  672,   69,   69,  673,   69,   69,
-       69,   69,  679,  674,   69,   69,   69,  678,   69,   69,
-      685,   69,  131,   69,  684,  675,  683,  686,  676,  677,
-      680,  687,  681,   69,  682,   69,   69,   69,  688,   69,
-       69,  692,  689,   69,   69,   69,   69,  690,  691,  693,
-      694,  696,   69,   69,  699,  697,   69,   69,   69,   69,
-       69,  698,  703,   69,  695,   69,  701,  702,  704,   69,
-      706,   69,   69,   69,  711,  700,  709,  712,   69,  705,
-
-       69,   69,   69,   69,  710,   69,  707,  714,   69,   69,
-       69,   69,   69,   69,  720,   69,   69,   69,  719,   69,
-       69,  713,  715,  716,  723,  724,  726,  717,  718,  721,
-      725,  722,  727,   69,   69,  730,  731,  728,  733,   69,
-       69,   69,   69,  732,   69,   69,   69,  738,  729,  736,
-      739,   69,  734,   69,  740,   69,   69,  743,   69,   69,
-      735,  745,   69,   69,  747,  140,  737,   69,  742,   69,
-       69,  741,   69,  749,   69,   69,   69,  746,  744,   69,
-      760,   69,  748,   69,   69,  761,   69,  764,  752,  750,
-       69,  762,   69,   69,   69,  753,  751,   69,  766,   69,
-
-      754,  765,  755,   69,  767,   69,  756,   69,  757,  763,
-      771,  769,   69,  758,  770,  775,   69,  768,  759,   69,
-      772,  773,   69,  778,  779,   69,  774,  780,  777,   69,
-       69,  781,   69,  776,   69,   69,  782,   69,  783,   69,
-      787,   69,   69,  790,  791,   69,  786,   69,   69,  784,
-       69,  788,   69,  789,   69,  792,  785,  796,   69,  793,
-       69,   69,  798,   69,  797,   69,  799,  794,   69,  795,
-      802,  800,   69,  804,  801,   69,   69,  803,   69,   69,
-       69,  807,   69,   69,  805,   69,   69,  806,  808,   69,
-      810,   69,   69,   69,   69,  816,   69,  812,  814,  809,
-
-      815,   69,  811,  888,   69,   69,  813,   69,  819,  820,
-      821,  817,  818,   69,   69,  824,  823,  825,  822,   69,
-       69,  828,   69,   69,   69,  830,  829,   69,  831,   69,
-       69,   69,  826,  832,  836,   69,  827,   69,   69,   69,
-       69,  838,  834,  833,   69,   69,  835,   69,   69,   69,
-      841,  843,  842,   69,  844,  837,  847,   69,  839,  846,
-      840,   69,   69,   69,   69,  845,  850,   69,   69,  855,
-      848,   69,   69,   69,   69,   69,   69,  856,  857,  859,
-      849,   69,  851,   69,  854,  862,  852,   69,  853,  863,
-       69,   69,  858,  861,  860,   69,   69,  866,   69,   69,
-
-       69,  865,  864,  870,   69,   69,   69,   69,   69,  867,
-       69,   69,  869,  868,  872,   69,   69,  879,  880,  140,
-       69,   69,  871,   69,   69,  873,  877,   69,   69,  875,
-      876,   69,  881,  874,  883,  878,  882,   69,   69,   69,
-      887,   69,  884,  885,  891,   69,   69,   69,   69,   69,
-       69,  896,  886,   69,  889,  894,   69,   69,  897,   69,
-      890,  892,  900,  898,  893,   69,   69,   69,  895,   69,
-       69,  899,  903,   69,   69,  902,  907,   69,  905,   69,
-       69,   69,   69,  901,  908,   69,   69,   69,  904,  906,
-      909,   69,  913,  911,  910,   69,   69,  912,  914,   69,
-
-       69,   69,  918,  923,   69,   69,  915,   69,   69,   69,
-       69,   69,  916,  917,  919,  927,  922,   69,  924,  925,
-      920,  921,  929,   69,   69,  926,   69,  930,   69,  928,
-       69,  934,   69,  973,   69,  937,   69,  938,  932,  933,
-       69,   69,  931,  936,   69,  935,   69,   69,   69,  939,
-       69,  943,  941,  942,   69,  940,   69,   69,  947,  948,
-      949,  945,   69,  944,   69,   69,   69,  950,  951,   69,
-       69,  946,   69,  957,  958,   69,   69,   69,  952,  960,
-       69,  959,   69,  953,   69,  954,   69,  955,  964,  956,
-       69,  963,  961,  965,   69,   69,   69,   69,  962,  967,
-
-      966,   69,   69,  968,  969,   69,  971,  974,   69,  970,
-      975,   69,  977,   69,   69,   69,   69,  978,   69,  972,
-      976,  979,  981,   69,  983,   69,   69,  980,  986,   69,
-       69,  984,   69,   69,   69,  982,   69,  988,   69,  985,
-       69,  989,  993,  990,   69,  991,   69,  994,  996,  997,
-      987,   69,  992,   69,   69,   69,  998,  999,   69,  995,
-       69,   69, 1000,   69, 1003,   69,   69,   69, 1007,   69,
-       69, 1002,   69,   69,   69,   69, 1013, 1001,   69,   69,
-       69, 1004, 1011, 1008,   69, 1017, 1005, 1018,   69, 1009,
-     1006, 1012, 1010,   69,   69,   69,  138,   69, 1014, 1020,
-
-     1022,   69, 1016,   69, 1015, 1023,   69,   69,   69, 1026,
-     1024, 1025, 1028,   69, 1021,   69, 1019, 1029,   69,   69,
-       69,   69, 1027, 1032,   69, 1034, 1030,   69,   69,   69,
-       69,   69, 1037,   69,   69,   69,   69,   69, 1031, 1033,
-       69, 1040, 1035,   69,   69, 1045, 1091, 1036, 1038, 1041,
-     1039, 1042, 1043, 1044,   69,   69,   69,   69, 1050,   69,
-     1047, 1046, 1048,   69, 1053, 1049,   69, 1055,   69, 1052,
-     1056, 1054, 1060,   69, 1051,   69,   69,   69, 1057,   69,
-     1058, 1059,   69,   69, 1061,   69,   69,   69, 1066,   69,
-     1063, 1068,   69, 1067,   69,   69, 1069,   69,   69,   69,
-
-     1064, 1062,   69,   69,   69,   69, 1065, 1077,   69, 1070,
-     1076, 1071,   69,   69, 1072,   69,   69, 1073,   69,   69,
-     1085, 1075, 1078,   69, 1079, 1074, 1086, 1080,   69, 1082,
-       69, 1081,   69, 1084, 1088,   69,   69, 1083,   69, 1092,
-     1087, 1089, 1090,   69,   69, 1093, 1094,   69, 1099,   69,
-     1095,   69,   69,   69,   69, 1104, 1100, 1101,   69, 1098,
-       69,   69,   69, 1096, 1105,   69,   69, 1097,   69, 1108,
-     1102, 1107, 1109,   69, 1103, 1115, 1106,   69,   69, 1110,
-       69, 1111,   69,   69,   69, 1114, 1113, 1116,   69, 1112,
-       69, 1117,   69, 1118, 1120,   69, 1121,   69,   69, 1123,
-
-       69,   69,   69,   69,   69, 1119, 1126,   69, 1128, 1129,
-       69,   69, 1125,   69,   69, 1132, 1133, 1122,   69,   69,
-       69,   69, 1124, 1127,   69, 1130, 1138, 1131,   69, 1136,
-     1140,   69,   69, 1139, 1142,   69,   69,   69, 1134, 1135,
-       69, 1137, 1144,   69,   69,   69, 1143,   69, 1148,   69,
-     1146, 1141,   69, 1154, 1145, 1151,   69, 1149, 1152,   69,
-       69, 1147,   69,   69,   69, 1155, 1160, 1159, 1157, 1150,
-     1153, 1156,   69,   69, 1161,   69,   69,   69, 1165,   69,
-       69, 1158, 1167,   69,   69, 1166,   69,   69,   69, 1170,
-       69, 1169, 1171, 1162,   69, 1163,   69, 1164,   69,   69,
-
-     1179, 1172, 1168,   69,   69,   69,   69,   69,   69,   69,
-     1184,   69, 1175, 1176, 1173, 1177, 1174, 1178,   69,   69,
-       69,   69, 1182,   69, 1186, 1180,   69, 1181, 1188,   69,
-     1183,   69, 1195,   69,   69, 1187, 1196,   69, 1185, 1191,
-     1189, 1192,   69, 1190,   69, 1197, 1193,   69,   69, 1198,
-     1199,   69,   69, 1205, 1194,   69, 1200, 1206,   69,   69,
-     1202, 1204,   69, 1203,   69,   69,   69, 1201,   69,   69,
-       69,   69, 1215,   69,   69, 1207,   69, 1208, 1226, 1210,
-     1209, 1212, 1211, 1217,   69,   69,   69, 1219, 1214, 1216,
-     1218,   69, 1224, 1213, 1223,   69, 1229, 1225,   69,   69,
-
-     1221, 1220,   69, 1222, 1228,   69,   69,   69, 1232,   69,
-       69, 1230, 1234, 1227,   69,   69,   69,   69, 1235,   69,
-     1233, 1241,   69, 1237,   69,   69, 1231,   69,   69, 1236,
-     1238, 1244,   69,   69, 1239,   69,   69, 1246, 1240,   69,
-     1242, 1247, 1245, 1243, 1248,   69,   69,   69, 1253,   69,
-     1249, 1251,   69,   69, 1258, 1250,   69,   69, 1259,   69,
-     1255,   69, 1252,   69,   69,   69, 1254,   69, 1256, 1257,
-     1266, 1260, 1267, 1262, 1263,   69,   69,   69,   69, 1261,
-     1264, 1265,   69, 1268,   69,   69,   69, 1271, 1269,   69,
-     1270,   69,   69,   69,   69,   69, 1274, 1280, 1272, 1279,
-
-       69, 1275,   69,   69, 1273,   69, 1284,   69,   69, 1278,
-     1286,   69,   69, 1277, 1276,   69, 1281, 1288,   69, 1289,
-     1290, 1282,   69, 1292,   69, 1283,   69, 1291, 1285,   69,
-     1294,   69,   69, 1287,   69, 1296,   69, 1297,   69, 1299,
-     1293,   69, 1298,   69,   69,   69, 1300, 1301, 1302, 1306,
-       69,   69, 1308, 1303,   69,   69, 1295, 1309,   69, 1312,
-       69,   69,   69, 1304, 1305, 1310,   69, 1314,   69,   69,
-     1307,   69, 1317, 1318,   69, 1311, 1320,   69, 1319,   69,
-       69,   69, 1315,   69,   69, 1325,   69, 1313, 1322, 1323,
-     1316,   69,   69, 1329, 1321,   69,   69, 1328, 1332,   69,
-
-     1333, 1334,   69, 1331,   69,   69,   69, 1327,   69, 1324,
-     1335,   69, 1326,   69,   69, 1330,   69, 1336,   69, 1340,
-       69,   69, 1343,   69,   69,   69, 1339,   69, 1345,   69,
-       69, 1337, 1338, 1350, 1349,   69, 1341,   69, 1344,   69,
-     1348,   69, 1352,   69, 1346,   69, 1342, 1359, 1347, 1357,
-     1351, 1355,   69,   69, 1360,   69, 1353, 1361, 1356, 1358,
-     1363, 1354, 1362,   69,   69,   69,   69, 1366,   69,   69,
-       69,   69, 1371,   69, 1368,   69, 1373, 1365,   69,   69,
-     1367, 1369,   69,   69,   69, 1376, 1375, 1377,   69,   69,
-     1364, 1374, 1378,   69,   69,   69, 1370, 1372,   69,   69,
-
-     1380, 1382,   69, 1381,   69,   69,   69, 1384, 1383, 1379,
-       69, 1388,   69, 1385,   69,   69, 1386, 1387,   69, 1395,
-       69,   69,   69, 1390, 1393,   69, 1389, 1394,   69, 1397,
-       69,   69,   69, 1391,   69, 1396,   69, 1392, 1402,   69,
-     1398, 1400,   69, 1401, 1406,   69,   69, 1403, 1399,   69,
-       69, 1404,   69, 1408, 1411,   69, 1405, 1409, 1410,   69,
-       69,   69, 1407,   69, 1414,   69,   69, 1412,   69, 1413,
-     1415,   69,   69,   69,   69,   69,   69,   69, 1417, 1426,
-     1418, 1422,   69, 1419, 1427,   69, 1416,   69, 1421,   69,
-       69,   69, 1429,   69, 1423,   69, 1424, 1425, 1420, 1431,
-
-     1430, 1433,   69, 1428,   69, 1432,   69,   69, 1436, 1435,
-       69,   69, 1437, 1439, 1441, 1434, 1438,   69,   69,   69,
-       69,   69, 1442,   69, 1447,   69,   69, 1444,   69, 1448,
-     1440, 1443,   69, 1451,   69,   69, 1453, 1446,   69,   69,
-     1445, 1449,   69, 1452,   69, 1455,   69, 1454,   69, 1456,
-       69, 1457, 1450,   69, 1458, 1459, 1460,   69, 1462, 1461,
-       69,   69,   69,   69,   69, 1463, 1464,   69,   69,   69,
-       69,   69,   69, 1469,   69, 1465, 1470, 1474,   69,   69,
-       69, 1473, 1467, 1466, 1468, 1479, 1471,   69, 1475, 1476,
-       69, 1478,   69, 1477, 1472, 1481,   69,   69, 1485,   69,
-
-     1482,   69,   69,   69, 1483, 1480, 1487,   69,   69, 1488,
-       69, 1486, 1491,   69,   69, 1489,   69, 1484,   69, 1492,
-     1493,   69,   69,   69,   69,   69,   69, 1495, 1490, 1498,
-     1501,   69,   69,   69,   69,   69, 1502,   69, 1494, 1496,
-     1497, 1499, 1500,   69,   69,   69,   69,   69, 1503, 1504,
-       69,   69,   69,   69, 1506, 1616, 1507, 1515,   69,   69,
-     1505,   69, 1512,   69, 1516, 1510, 1508, 1514, 1511, 1509,
-       69,   69, 1513, 1518,   69, 1520, 1517, 1521,   69, 1522,
-       69,   69,   69, 1519,   69, 1525, 1523,   69, 1528,   69,
-     1529,   69, 1530,   69, 1524,   69, 1526, 1532,   69, 1527,
-
-       69, 1531, 1534,   69, 1535,   69,   69, 1538,   69,   69,
-       69, 1537,   69, 1533, 1540,   69, 1542,   69,   69, 1536,
-     1543,   69, 1544, 1546,   69,   69,   69,   69, 1539,   69,
-     1541, 1550,   69, 1548,   69,   69,   69, 1545,   69, 1554,
-     1555,   69, 1557,   69, 1547, 1549,   69, 1551,   69, 1553,
-       69, 1561, 1552, 1559,   69, 1556,   69,   69, 1558,   69,
-       69,   69, 1564, 1562,   69,   69,   69,   69, 1563, 1568,
-     1569,   69,   69, 1566, 1560,   69, 1571, 1574,   69, 1575,
-     1572, 1570, 1567,   69, 1565,   69, 1573,   69, 1578, 1579,
-       69, 1580,   69,   69, 1577,   69,   69,   69, 1576, 1581,
-
-       69,   69,   69, 1587,   69, 1585, 1588,   69, 1584, 1586,
-     1591,   69, 1582,   69, 1583,   69, 1590, 1592,   69,   69,
-     1594, 1593, 1589,   69,   69, 1595,   69, 1598, 1599, 1596,
-       69, 1601,   69, 1600,   69,   69,   69,   69,   69, 1602,
-       69,   69, 1597, 1609, 1606,   69, 1608,   69,   69,   69,
-       69, 1605,   69, 1610, 1614, 1603, 1604, 1613, 1607,   69,
-       69,   69,   69, 1611, 1612,   69, 1618, 1615,   69,   69,
-     1621, 1619, 1622,   69,   69, 1617, 1620, 1625,   69, 1624,
-     1623, 1626,   69, 1627,   69, 1628,   69,   69,   69,   69,
-       69,   69,   69, 1631, 1634,   69,   69, 1636,   69, 1635,
-
-     1639,   69, 1629,   69, 1633,   69, 1640, 1641,   69, 1630,
-     1632,   69,   69, 1638, 1637,   69, 1642, 1643,   69, 1646,
-       69, 1647,   69, 1645, 1648,   69, 1644,   69,   69,   69,
-     1651,   69,   69,   69,   69,   69, 1657,   69,   69, 1649,
-     1655,   69,   69, 1652, 1653, 1654, 1650, 1658,   69,   69,
-       69,   69, 1664,   69, 1656,   69,   69,  136,   69, 1670,
-       69, 1661, 1660, 1668, 1663, 1665,   69, 1659,   69,   69,
-       69, 1666,   69, 1662, 1669, 1671,   69, 1667,   69, 1672,
-       69,   69,   69,   69, 1680,   69, 1673,   69, 1674, 1677,
-     1675,   69, 1676, 1681,   69,   69, 1682,   69, 1684,   69,
-
-     1679, 1678,   69, 1683,   69, 1690,   69, 1691,   69,   69,
-     1685,   69,   69, 1692,   69, 1686,   69, 1687, 1688,   69,
-       69, 1696,   69, 1689,   69,   69, 1694, 1693,   69, 1699,
-     1700, 1695,   69,   69, 1697,   69, 1704, 1705,   69,   69,
-     1698, 1701, 1703,   69, 1702, 1708,   69, 1709,   69,   69,
-     1706, 1712,   69, 1711,   69, 1714,   69, 1707, 1715,   69,
-       69, 1717,   69, 1710, 1718,   69,   69, 1713,   69, 1719,
-       69,   69,   69,   69,   69,   69,   69, 1723, 1724, 1716,
-     1722,   69,   69, 1721, 1726,   69, 1728, 1729, 1720,   69,
-     1727, 1731,   69, 1725, 1732,   69, 1733,   69, 1735,   69,
-
-     1730,   69, 1734,   69,   69, 1740, 1736, 1737,   69, 1738,
-       69,   69, 1739,   69,   69,   69,   69, 1741, 1744, 1742,
-       69, 1746,   69,   69, 1743,   69, 1748,   69, 1745,   69,
-     1749,   69,   69,   69, 1747,   69, 1754,   69,   69,   69,
-     1752, 1753, 1751,   69,   69, 1750, 1755, 1759,   69,   69,
-       69,  135, 1756,   69, 1762, 1763,   69, 1765, 1757, 1761,
-     1766,   69, 1758, 1760,   69,   69,   69,   69, 1764,   69,
-     1768,   69, 1767, 1771,   69, 1769,   69, 1774, 1775,   69,
-     1770,   69,   69, 1777,   69, 1772, 1778,   69,   69, 1773,
-       69, 1779, 1780,   69, 1781,   69, 1782,   69,   69, 1785,
-
-      133, 1776, 1783,   69, 1784,   69, 1786,   69,   69, 1788,
-       69, 1792, 1787,   69, 1789,   69, 1791,   69, 1793,   69,
-       69, 1790,   69, 1798,   69, 1796, 1800,   69,   69,   69,
-       69,   69,   69, 1804,   69, 1805, 1794, 1795, 1799, 1802,
-     1797,   69, 1806,   69,   69,   69, 1807, 1801, 1803, 1808,
-       69,   69,   69,   69, 1814,   69,   69,   69,  131, 1811,
-     1815, 1817,   69, 1809,   69,   69, 1820,   69, 1821, 1816,
-     1818, 1810, 1812, 1813, 1819,   69,   69, 1824,   69,   69,
-       69,   69, 1825,   69, 1822,   69,   69, 1827,   69, 1828,
-       69, 1823, 1826, 1829,   69, 1831,   69, 1832,   69,   69,
-
-       69,   69, 1835, 1833, 1834, 1836, 1837,   69, 1839, 1838,
-     1830, 1840,   69,   69, 1844,   69,   69,   69, 1842, 1841,
-       69, 1846,   69,   69, 1849,   69,   69,   69,   69,   69,
-     1843, 1851,   69,   69,   69, 1847,   69, 1852, 1848, 1850,
-     1845, 1855,   69, 1858,   69, 1853,   69, 1856, 1860,   69,
-       69, 1854, 1861,   69,   69, 1859, 1862,   69,   69, 1863,
-     1857, 1864,   69,   69, 1868,   69, 1865,   69, 1871,   69,
-     1872,   69,   69, 1866,   69,   69,   69, 1867,   69, 1869,
-     1876,   69,   69,   69, 1878, 1877, 1874,   69, 1879, 1870,
-     1881, 1873,   69,   69, 1884, 1875,   69, 1882, 1880,   69,
-
-       69, 1887,   69, 1888,   69, 1890,   69,   69, 1894,   69,
-       69,   69, 1883, 1885, 1886, 1891, 1893,   69, 1889, 1895,
-       69, 1892, 1896,   69,   69, 1898,   69,   69, 1899, 1897,
-     1900,   69,   69,   69, 1904,   69,   69, 1902,   69,   69,
-       69, 1905, 1903, 1907,   69, 1908, 1901, 1906,   69,   69,
-       69,   69,   69,   69, 1911,   69,   69, 2047, 1909, 1913,
-       69,   69, 1912, 1921,   69, 1919, 1922,   69, 1910, 1915,
-     1914,   69, 1916, 1917,   69, 1923,   69, 1918, 1924,   69,
-     1925, 1920, 1926,   69,   69, 1929,   69,   69,   69,   69,
-       69,   69, 1927,   69, 1933, 1934,   69,   69, 1928, 1932,
-
-     1935,   69, 1930,   69,   69,   69, 1931,   69, 1936, 1957,
-     1940,   69, 1938, 2047, 1937,   69, 1941, 1943,   69, 1944,
-       69, 1945,   69,   69, 1946, 1939, 1942, 1947,   69,   69,
-     1949,   69, 1951,   69,   69, 1948, 1953, 1952,   69,   69,
-       69,   69,   69,   69, 1955,   69, 1950, 1960, 1959,   69,
-       69,   69, 1954,   69,   69,   69,   69, 1958,   69, 1956,
-       69,   69, 1963,   69, 1962,   69, 1964, 1971,   69, 1961,
-     1975, 1967, 1972, 1965, 1966, 1969, 1973,   69, 1974,   69,
-       69, 1970,   69, 1968,   69, 1976, 1979,   69, 1981,   69,
-       69,   69,   69,   69, 1984,   69, 1985,   69,   69, 1978,
-
-       69, 1980,   69,   69,   69, 1982, 1987, 1977,   69, 1986,
-     1983,   69, 1989,   69,   69,   69, 1988, 1991, 1994, 1995,
-       69, 1992, 1990,   69, 1997, 1998,   69,   69,   69, 2002,
-     1993, 1999, 2000,   69, 1996,   69, 2003,   69,   69,   69,
-     2004,   69, 2007,   69,   69,   69,   69, 2001,   69, 2010,
-       69,   69, 2014,   69,   69,   69, 2009, 2005, 2006, 2015,
-     2008,   69, 2017, 2013, 2011, 2012,   69, 2018,   69,   69,
-     2022,   69, 2016, 2019, 2021,   69, 2020,   69,   69,   69,
-       69,   69, 2023,   69, 2024, 2026, 2028,   69, 2029,   69,
-       69, 2032,   69,   69,   69, 2035,   69, 2025, 2027, 2036,
-
-       69, 2038,   69, 2037, 2039,   69, 2030,   69, 2031,   69,
-       69, 2033, 2034,   69, 2040, 2041,   69, 2047, 2042, 2045,
-       69, 2046,   69, 2047, 2047, 2047, 2047, 2047, 2043, 2047,
-     2047, 2047, 2047, 2047, 2047, 2044,   41,   41,   41,   41,
-       41,   41,   41,   46,   46,   46,   46,   46,   46,   46,
-       51,   51,   51,   51,   51,   51,   51,   57,   57,   57,
-       57,   57,   57,   57,   62,   62,   62,   62,   62,   62,
-       62,   72,   72, 2047,   72,   72,   72,   72,  130,  130,
-     2047, 2047, 2047,  130,  130,  132,  132, 2047, 2047,  132,
-     2047,  132,  134, 2047, 2047, 2047, 2047, 2047,  134,  137,
-
-      137, 2047, 2047, 2047,  137,  137,  139, 2047, 2047, 2047,
-     2047, 2047,  139,  141,  141, 2047,  141,  141,  141,  141,
-       73,   73, 2047,   73,   73,   73,   73,   13, 2047, 2047,
-     2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047,
-     2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047,
-     2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047,
-     2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047
+       69,  221,   69,  216,  284,   69,   69,   69,  222,  215,
+      223,   69,  224,  225,  218,  217,  226,   69,   69,   69,
+      219,  227,   69,   69,  234,  235,  229,   69,   69,   69,
+
+       69,  230,  236,  237,  239,   69,  231,   69,  228,   69,
+      238,   69,  232,  233,  240,   69,   69,  245,   69,  241,
+      246,  247,  242,  243,   69,  248,  244,   69,  254,  256,
+      249,   69,  255,  258,   69,   69,   69,   69,  252,   69,
+      261,  257,  250,  253,  251,  259,   69,   69,  263,  264,
+       69,   69,  262,   69,   69,   69,   69,  265,  260,  267,
+       69,   69,   69,   69,  266,   69,  269,   69,  273,   69,
+      271,   69,   69,   69,  279,   69,  268,  277,  272,   69,
+       69,  282,  274,  270,  286,  275,   69,   69,   69,   69,
+       69,  276,   69,  280,  281,  278,  285,   69,  289,  283,
+
+      288,  290,  292,   69,   69,  287,  293,   69,   69,  140,
+       69,  299,   69,   69,   69,  295,   69,   69,  298,  300,
+      301,  296,  297,  294,   69,  291,   69,  302,   69,   69,
+      304,  303,  305,   69,   69,   69,  307,  308,   69,  309,
+      310,   69,  312,   69,   69,  313,   69,  311,   69,   69,
+      314,  316,   69,  306,  319,   69,  317,  321,  318,   69,
+       69,  315,   69,   69,   69,  322,  324,  323,   69,  320,
+       69,   69,   69,   69,  329,   69,   69,   69,  330,  325,
+       69,  332,   69,  334,  328,   69,  326,   69,   69,  337,
+       69,  327,   69,  338,  331,   69,   69,   69,  333,  336,
+
+      339,  340,   69,  335,   69,  344,  350,   69,   69,  341,
+      342,   69,  343,  348,  349,  346,  347,   69,  345,   69,
+      351,   69,   69,  357,   69,  352,   69,   69,  353,   69,
+      355,  356,  358,   69,  354,   69,  359,   69,  361,   69,
+      365,  360,   69,   69,  364,   69,   69,   69,  367,  362,
+      368,   69,   69,   69,   69,  370,  369,  371,  377,  363,
+       69,  372,  366,  376,   69,  378,  379,  373,   69,   69,
+      374,   69,  375,   69,  380,   69,  384,   69,  140,   69,
+       68,   69,   69,   69,  382,  383,  395,  406,  381,  386,
+       69,   69,  385,   69,  394,  387,  388,  396,  400,  398,
+
+      399,   69,  397,   69,   69,  389,   69,  390,  391,  392,
+      401,  402,  393,   69,  403,   69,  408,   69,   69,  405,
+       69,  404,   69,  412,   69,   69,  409,  410,  407,   69,
+      415,   69,  411,  416,  417,   69,   69,   69,   69,   69,
+      414,  422,   69,   69,   69,  413,  423,  424,   69,  421,
+       69,  418,   69,  419,  420,   69,   69,   69,  427,  428,
+      432,  431,  425,   69,   69,  434,  426,  433,  435,   69,
+      429,   69,  430,   69,   69,  437,  439,  438,  436,   69,
+      441,   69,   69,  445,  440,   69,  442,   69,  444,   69,
+       69,   69,   69,   69,  446,  443,  448,   69,   69,   69,
+
+      452,  449,  451,   69,   69,  450,  447,   69,  453,   69,
+      455,   69,  456,   69,   69,  458,   69,   69,  454,   69,
+      466,   69,  459,   69,   69,  457,   69,   69,  461,   69,
+      467,  470,  468,   69,  460,  462,  471,  463,  465,  464,
+      472,   69,   69,  469,   69,   69,   69,  474,   69,  475,
+       69,   69,  478,   69,   69,   69,  480,   69,   69,   69,
+       69,  492,  140,  476,  473,  479,  477,   69,   69,  481,
+      500,  491,  493,  482,   69,  483,   69,  489,  490,  494,
+      484,   69,  485,   69,  496,  497,   69,  498,  495,   69,
+      486,   69,   69,  487,   69,   69,  499,   69,   69,  504,
+
+      488,   69,   69,  140,  501,  510,  505,  509,  508,   69,
+      502,   69,   69,  512,  503,   69,  507,  506,  515,   69,
+       69,  511,  517,  514,   69,  513,   69,   69,   69,  519,
+       69,   69,  516,   69,  522,  521,  518,   69,  526,  529,
+       69,   69,  520,  527,   69,  530,   69,  532,   69,  523,
+      531,   69,  524,  525,  528,  534,   69,  533,   69,   69,
+       69,   69,   69,   69,  536,  540,   69,  539,   69,   69,
+      538,   69,  535,  541,   69,   69,  545,   69,   69,  537,
+      543,   69,   69,  546,  542,   69,   69,   69,  544,  548,
+      554,  547,  551,  140,  549,   69,  552,   69,  550,  553,
+
+      557,  556,  555,   69,   69,   69,   69,  559,   69,  560,
+       69,   69,  558,  562,   69,  563,   69,   69,   69,  566,
+      569,   69,   69,   69,  571,  138,   69,  564,  570,  565,
+      568,  561,   69,  567,   69,  572,   69,  576,  578,  573,
+       69,  574,   69,   69,   69,  577,   69,  580,  581,  579,
+      575,   69,   69,  582,   69,  585,   69,   69,   69,   69,
+       69,   69,  588,  590,  583,  584,  587,  591,   69,  593,
+       69,   69,  592,   69,   69,  586,  595,  589,   69,   69,
+      597,   69,   69,   69,   69,  594,   69,  602,   69,  596,
+      600,   69,   69,  603,  608,   69,   69,  598,   69,  599,
+
+       69,  604,  601,   69,  611,   69,  605,  607,   69,  612,
+      606,   69,   69,   69,  609,  610,  614,  616,   69,  613,
+       69,   69,   69,   69,   69,  618,  617,  619,  615,  621,
+      620,   69,   69,   69,   69,  626,  622,   69,  623,  624,
+      140,   69,  625,  627,  629,  628,   69,   69,  632,  635,
+      630,   69,   69,   69,   69,   69,  633,  637,  631,   69,
+      634,  640,   69,   69,   69,   69,  638,   69,  136,   69,
+      641,   69,  636,   69,   69,   69,  645,  639,   69,  654,
+      646,  642,  652,  647,  650,  644,   69,   69,  655,  643,
+      648,  651,  653,  649,   69,  656,  657,   69,   69,  666,
+
+       69,   69,   69,   69,  658,  659,  665,  660,   69,  679,
+      661,  669,  670,   69,   69,  662,  667,   69,   69,  672,
+       69,  663,  664,   69,  671,  668,   69,  674,  675,  673,
+       69,   69,   69,  676,  678,   69,  677,   69,   69,  680,
+       69,  684,   69,   69,   69,   69,  683,   69,  690,   69,
+      689,   69,  701,   69,  691,  681,  682,  685,  686,  688,
+       69,  687,  692,   69,   69,   69,  693,   69,   69,  697,
+      694,   69,   69,  695,   69,  696,  698,   69,  704,  699,
+       69,   69,   69,   69,   69,   69,  702,   69,  703,   69,
+      708,  706,  707,  700,  709,   69,  711,   69,   69,  710,
+
+      705,  714,   69,   69,  716,  717,   69,   69,   69,  715,
+       69,   69,  712,  719,   69,   69,   69,   69,   69,  725,
+       69,   69,   69,   69,  718,  724,   69,  731,  720,  728,
+      721,  732,   69,  722,  723,  726,  730,  727,  729,   69,
+      735,  736,   69,  733,   69,   69,   69,   69,  737,   69,
+       69,   69,  743,  734,  741,   69,  744,  739,  745,   69,
+       69,  738,   69,  748,   69,  740,  750,   69,   69,   69,
+       69,  742,   69,  747,  752,  140,  754,  746,   69,   69,
+       69,   69,   69,  765,  749,  753,  751,   69,   69,   69,
+       69,  766,  769,   69,  757,   69,   69,  755,  786,   69,
+
+      771,  758,   69,  756,   69,  767,  773,  759,  770,  760,
+      772,  774,   69,  761,  768,  762,  775,   69,   69,   69,
+      763,  776,   69,   69,  778,  764,   69,  780,   69,   69,
+      785,  135,   69,  777,  779,  784,   69,  781,  787,   69,
+       69,  788,  783,   69,  793,   69,  789,  782,  790,   69,
+      794,   69,  797,  795,   69,   69,   69,   69,   69,  791,
+      798,  796,  799,  803,   69,   69,  792,  805,   69,  804,
+      800,  806,   69,   69,   69,  809,  801,  802,   69,   69,
+       69,   69,   69,  810,   69,   69,   69,  808,   69,  812,
+       69,  807,   69,  813,   69,  815,   69,  817,  811,   69,
+
+      823,  814,  818,   69,  819,  821,   69,  816,  822,   69,
+       69,   69,   69,   69,  820,   69,  827,  828,  829,   69,
+      831,   69,  824,  832,  830,  826,   69,  825,   69,   69,
+      835,  839,   69,   69,  833,  836,   69,   69,  837,   69,
+       69,  838,  834,  843,   69,   69,  840,  845,   69,   69,
+       69,   69,   69,  841,  842,  848,  849,   69,  851,   69,
+      844,   69,  854,   69,  847,   69,  846,  853,   69,  850,
+       69,   69,   69,  857,  855,  852,   69,   69,  862,   69,
+       69,   69,   69,   69,   69,  863,  856,  864,   69,  858,
+      861,  859,   69,  868,  867,  866,  860,  865,  869,  870,
+
+       69,   69,   69,  871,   69,   69,  872,  873,   69,   69,
+      877,   69,   69,   69,   69,   69,  875,   69,   69,  874,
+       69,  876,  879,   69,  886,  898,   69,  887,   69,  878,
+       69,  880,  883,   69,   69,  884,  882,   69,   69,  888,
+      881,   69,  889,  885,   69,   69,   69,  894,   69,  892,
+       69,   69,  890,  895,   69,  891,   69,   69,   69,   69,
+      893,  910,  901,  896,  903,  899,   69,  906,   69,  897,
+       69,   69,  900,  907,   69,  904,   69,  902,  905,   69,
+       69,  908,   69,   69,  909,  912,   69,  913,  915,  911,
+      917,   69,   69,   69,   69,  919,  918,   69,  914,  916,
+
+       69,   69,   69,   69,   69,   69,   69,  923,  920,   69,
+       69,  928,  922,  921,  924,   69,   69,  933,   69,   69,
+      925,  929,  927,   69,  926,  932,   69,  935,   69,  930,
+      931,  937,  934,  939,   69,  936,   69,   69,  940,   69,
+      938,   69,   69,  944,   69,  947,  946,   69,  948,   69,
+      942,   69,   69,  941,  943,   69,   69,  945,  950,   69,
+      949,  951,   69,  953,  952,   69,   69,   69,   69,  958,
+      957,  955,  959,  960,  954,   69,   69,   69,   69,   69,
+      961,  956,   69,  967,   69,  968,  962,   69,  970,   69,
+      969,  963,   69,  964,   69,  965,  974,  966,   69,   69,
+
+       69,  975,   69,  973,  971,   69,   69,   69,  977,   69,
+      972,   69,  976,  979,  985,   69,  981,   69,   69,  978,
+      980,   69,  984,  987,   69,   69,  989,  982,  988,   69,
+      991,   69,   69,  986,  993,   69,  983,   69,   69,  996,
+       69,   69,  994,   69,   69,   69,   69, 1001,  990,  998,
+     1000,  999,  992,   69,   69,   69,   69, 1006, 1007,  995,
+     1003,  997, 1004,   69,   69,   69, 1009,   69,   69, 1005,
+     1008, 1002,   69,   69, 1013,   69, 1010,   69,   69,   69,
+     1017,   69,   69,   69, 1012,   69,   69, 1011,   69,   69,
+     1023,   69,   69,   69, 1021, 1018,   69, 1014, 1015,   69,
+
+      133, 1019, 1016, 1020, 1027, 1024, 1022, 1028,   69,   69,
+     1026,   69, 1031,   69, 1030, 1032, 1025,   69,   69, 1029,
+     1033,   69, 1034,   69,   69, 1035, 1037,   69, 1039, 1038,
+     1042,   69, 1036, 1040,   69,   69,   69,   69, 1041, 1043,
+       69,   69,   69,   69,   69, 1044, 1045, 1048,   69,   69,
+       69,   69, 1051,   69,   69,   69,   69,  131, 1047, 1049,
+       69, 1052, 1054, 1046, 1050, 1055,   69, 1060, 1053, 1056,
+     1057, 1059, 1058,   69, 1062,   69,   69, 1064, 1061,   69,
+       69,   69,   69, 1069, 1063, 1070, 1066, 1068,   69,   69,
+       69,   69,   69, 1071, 1065,   69, 1072, 1073,   69,   69,
+
+       69,   69, 1067, 1074, 1078,   69, 1076, 1080,   69, 1075,
+     1077, 1082, 1081,   69,   69,   69, 1083,   69,   69,   69,
+     1079,   69,   69,   69, 1091,   69,   69,   69, 1084, 1090,
+       69,   69,   69, 1085, 1086,   69,   69, 1087,   69, 1099,
+     1089, 1092,   69,   69, 1093, 1088, 1094, 1097, 1103, 1096,
+     1095, 1098,   69,   69, 1101, 1100, 1102,   69,   69,   69,
+       69,   69, 1104, 1108,   69,   69, 1105, 1109, 1106, 1113,
+       69,   69,   69, 1107,   69,   69, 1114, 1118, 1115,   69,
+     1110, 1112,   69,   69, 1111, 1119,   69, 1121,   69, 1122,
+     1116,   69, 1123, 1124,   69, 1117,   69, 1120,   69, 1125,
+
+       69,   69,   69, 1128, 1127,   69,   69, 1126,   69,   69,
+       69, 1129,   69, 1132, 1134,   69, 1135,   69,   69, 1137,
+     1131,   69,   69,   69, 1133, 1140,   69, 1143,   69,   69,
+     1130, 1142, 1138, 1139,   69,   69, 1146, 1136,   69,   69,
+       69,   69, 1141, 1147,   69,   69,   69, 1144, 1145,   69,
+     1150, 1152,   69,   69,   69, 1154, 1156, 1153,  140, 1148,
+     1149,   69,   69,   69, 1151, 1155,   69, 1157, 1158,   69,
+     1161,   69, 1160, 1159,   69, 1162,   69, 1163,   69,   69,
+       69, 1164, 1166, 1172,   69,   69, 1165,   69, 1169,   69,
+     1167, 1170, 1173, 1174,   69,   69, 1178,   69,   69, 1175,
+
+     1168, 1177,   69, 1171,   69, 1179,   69,   69, 1183,   69,
+       69,   69, 1185,   69,   69, 1180, 1184,   69,   69,   69,
+     1176,   69, 1187, 1188,   69, 1181, 1189, 1182, 1190,   69,
+       69, 1197, 1186, 1191,   69,   69,   69,   69,   69, 1192,
+       69,   69,   69, 1193, 1194,   69, 1195, 1204, 1196, 1202,
+       69,   69,   69,   69, 1200,   69, 1198,   69, 1199, 1206,
+       69,   69, 1201,   69, 1207, 1203, 1205, 1208, 1216, 1209,
+     1213,   69, 1210, 1214,   69,   69,   69, 1211, 1215,   69,
+     1219,   69,   69, 1223,   69, 1212, 1224,   69, 1218,   69,
+     1220, 1222, 1217, 1221,   69,   69,   69,   69,   69,   69,
+
+       69,   69, 1233,   69, 1225,   69,   69, 1226,  138, 1230,
+     1228,   69,   69, 1227, 1229, 1235, 1236,   69, 1232, 1234,
+       69, 1237, 1242, 1241, 1231, 1244, 1239, 1243,   69, 1240,
+     1245,   69,   69, 1247,   69, 1238,   69, 1246, 1250,   69,
+     1248,   69,   69,   69,   69, 1252,   69,   69,   69,   69,
+       69, 1253, 1259,   69, 1251, 1255, 1249,   69,   69, 1256,
+     1262,   69, 1254,   69,   69,   69, 1257, 1264, 1258, 1260,
+     1263,   69,   69,   69, 1268, 1261, 1265, 1266, 1267,   69,
+     1271,   69,   69,   69,   69,   69,   69, 1269,   69, 1277,
+     1273,   69,  136,   69, 1270,   69, 1272, 1274, 1275, 1280,
+
+     1278, 1281,   69, 1276,   69, 1283,   69, 1282,   69, 1279,
+       69, 1286,   69, 1284,   69,   69,   69, 1288,   69, 1285,
+       69,   69,   69,   69,   69,   69, 1287, 1292,   69,   69,
+     1293,   69,   69, 1296, 1297, 1294, 1289, 1302, 1291, 1295,
+     1290, 1301,   69,   69,   69,   69, 1300, 1298,   69, 1299,
+     1306,   69,   69, 1303, 1308,   69, 1310,   69,   69,   69,
+     1312,   69, 1311, 1304, 1313, 1305,   69,   69, 1307, 1314,
+     1316,   69,   69, 1309, 1318,   69,   69, 1315, 1319,   69,
+       69, 1320, 1321,   69, 1322, 1323, 1324,   69,   69, 1328,
+       69, 1325, 1317, 1330,   69,   69,   69,   69, 1331,   69,
+
+     1334,   69,   69, 1326,   69, 1336,   69, 1327, 1332,   69,
+     1329,   69, 1339, 1340,   69, 1342,   69, 1333, 1341,   69,
+       69,   69, 1337, 1335,   69,   69, 1347, 1344, 1338,   69,
+     1345,   69,   69, 1351, 1343,   69,   69, 1350, 1354,   69,
+     1355,   69, 1353,   69,   69,   69,   69, 1349, 1356,   69,
+     1346,   69,   69,   69, 1358, 1348, 1352, 1357,   69,   69,
+     1365, 1359, 1360, 1361,   69,   69,   69, 1362,   69,   69,
+     1367, 1363,   69,   69,   69, 1372, 1371, 1374,   69,   69,
+     1366, 1377,   69, 1373, 1364,   69, 1368, 1369, 1370,   69,
+     1375,   69, 1381, 1382,   69, 1376, 1383,   69,   69, 1385,
+
+       69, 1384,   69, 1379, 1388,   69, 1378,   69,   69,   69,
+       69, 1380, 1387, 1390,   69, 1393,   69,   69, 1395, 1389,
+     1391,   69,   69, 1386,   69, 1397,   69, 1398,   69, 1396,
+     1399,   69, 1400,   69,   69,   69,   69,   69, 1394, 1392,
+     1402, 1403,   69, 1404, 1405,   69,   69, 1406, 1401, 1407,
+       69,   69, 1411,   69,   69,   69,   69, 1408,   69, 1413,
+     1414,   69, 1409, 1410, 1412,   69,   69, 1416,   69,   69,
+       69, 1421, 1419,   69, 1420,  135, 1415,   69,   69, 1423,
+       69, 1428,   69, 1417, 1422, 1418,   69,   69,   69, 1426,
+     1424, 1425,   69, 1432,   69, 1427,   69, 1434,   69,   69,
+
+     1435,   69, 1431, 1429, 1436,   69,   69, 1430,   69, 1437,
+       69, 1433,   69, 1438,   69, 1440,   69,   69,   69, 1441,
+       69,   69,   69,   69,  133,   69,   69, 1452, 1439, 1443,
+     1444, 1448, 1445, 1442,   69,   69, 1447, 1453,   69,   69,
+       69,   69, 1446, 1450, 1449, 1455, 1451, 1457, 1456, 1459,
+       69,   69, 1454, 1458,   69,   69,   69, 1462,   69, 1461,
+       69, 1463,   69, 1464, 1467,   69,   69,   69,   69,   69,
+       69, 1468,   69, 1470, 1473,   69,   69, 1460, 1465,   69,
+     1469,   69, 1466, 1472,   69, 1474, 1478, 1471, 1477,   69,
+     1706, 1475, 1476,   69,   69, 1479,   69, 1481,   69, 1482,
+
+       69, 1480,   69,   69, 1485, 1486,   69,   69,   69, 1483,
+       69,   69, 1484, 1489,   69, 1488, 1487,   69,   69, 1490,
+       69,   69,   69, 1491,   69,   69, 1495, 1496,   69,   69,
+       69, 1492, 1500,   69, 1494, 1493, 1509, 1497, 1499, 1501,
+     1502,   69,   69,   69, 1503,   69, 1504, 1507, 1505, 1498,
+       69,   69, 1508,   69, 1511,   69, 1513,   69, 1506,   69,
+     1512,   69, 1514,   69,   69,   69, 1517, 1519,   69, 1518,
+     1510, 1515,   69,   69,   69,   69,   69,   69, 1520, 1521,
+       69, 1516, 1524,   69,   69, 1522, 1530,   69, 1527,   69,
+       69, 1526,   69,   69, 1531,   69,   69,   69, 1533, 1523,
+
+       69,   69, 1528, 1525,   69, 1529,   69, 1532,   69,   69,
+       69, 1544,   69,   69,   69, 1535, 1536, 1545, 1541, 1543,
+       69, 1534,   69, 1537,   69, 1538, 1546, 1539,   69, 1549,
+     1540, 1542, 1550,   69, 1547, 1548, 1551,   69,   69, 1552,
+       69, 1554,   69,   69, 1557,   69, 1558,   69, 1559,   69,
+       69, 1553, 1555, 1561,   69, 1556, 1563,   69, 1564,   69,
+       69, 1560,   69, 1567,   69,   69,   69, 1566, 1562, 1569,
+       69,   69, 1571,   69,   69, 1573, 1572, 1575,   69, 1565,
+       69,   69,   69,   69, 1568, 1579,   69,   69,   69, 1570,
+     1574,   69, 1583, 1584,   69,   69, 1577, 1586,   69, 1576,
+
+       69, 1578,   69, 1580,   69,   69, 1582,   69, 1590, 1588,
+     1581,   69,   69,   69, 1585,   69, 1593, 1592,   69,   69,
+     1587, 1591,   69,   69, 1597,   69,   69, 1598, 1595,   69,
+     1589, 1603, 1600,   69,   69, 1601,  131,   69, 1594, 1596,
+     1599,   69,   69, 1602, 1608, 1604,   69, 1607,   69, 1609,
+       69, 1606,   69, 1605, 1611,   69, 1612, 1610,   69,   69,
+       69,   69, 1616,   69, 1614, 1617,   69, 1613, 1620,   69,
+     1615, 1621,   69,   69, 1623, 1619, 1624,   69, 1622,   69,
+       69, 1618,   69, 1626,   69,   69,   69,   69, 1630,   69,
+       69,   69, 1632, 1625, 1631,   69, 1627, 1633,   69, 1628,
+
+     1634,   69,   69,   69,   69, 1629, 1641, 1638,   69,   69,
+       69, 1635,   69, 1640,   69, 1642, 1637,   69,   69, 1646,
+       69, 1636, 1645,   69, 1639,   69, 1647,   69, 1643, 1648,
+     1644,   69, 1650,   69, 1649,   69, 1651,   69, 1653, 1654,
+       69,   69, 1657,   69, 1658,   69, 1656,   69, 1659, 1652,
+       69, 1660,   69, 1655,   69,   69,   69,   69, 1666,   69,
+     1663,   69, 1668, 1661,   69,   69, 1671,   69,   69, 1665,
+     1667,   69, 1672,   69, 1662, 1664, 1673,   69, 1674,   69,
+     1670, 1675, 1669,   69,   69, 1678,   69, 1679,   69, 1677,
+     1680,   69,   69,   69,   69, 1683,   69, 1676,   69,   69,
+
+       69,   69, 1689,   69, 1681,   69, 1687,   69, 1684,   69,
+     1685, 1682, 1686,   69, 1690,   69,   69,   69, 1696, 1688,
+       69,   69,   69,   69, 1702,   69, 1693,   69, 1700, 1692,
+     1695, 1697, 1701, 1691, 1703,   69,   69, 1704, 1698, 1694,
+       69,   69,   69, 1699,   69,   69,   69,   69,   69, 1714,
+       69, 1715,   69,   69,   69, 1711,   69,   69, 1705,   69,
+     1708, 1707, 1716, 1718,   69, 1710, 1709, 1712, 1713,   69,
+       69,   69, 1717,   69, 1719, 1720, 1724,   69, 1725,   69,
+     1726,   69, 1721,   69,   69, 1722,   69,   69, 1730, 1723,
+     1729, 1727,   69,   69,   69, 1734, 1728, 1733,   69,   69,
+
+     1739,   69,   69, 1735, 1731, 1738,   69, 1732,   69, 1742,
+       69,   69,   69,   69,   69, 1743,   69, 1736, 1745, 1737,
+       69, 1740, 1746,   69, 1748,   69, 1741, 1744,   69, 1747,
+     1749,   69, 1750, 1751,   69, 1752,   69,   69, 1753,   69,
+       69, 1755, 1754,   69,   69, 1757,   69,   69, 1756, 1758,
+       69,   69, 1762,   69, 1760, 2091, 1763, 1765,   69, 1766,
+       69,   69, 1759,   69,   69, 1761, 1768, 1769, 1764, 1770,
+     1767, 1771,   69,   69, 1772,   69,   69, 1774,   69,   69,
+     1777,   69, 1775,   69, 1776, 1778,   69,   69,   69, 1773,
+       69,   69, 1779, 1781,   69,   69, 1783, 1780, 1782,   69,
+
+     1786,   69, 1785,   69,   69,   69, 1784,   69, 1791,   69,
+       69,   69,   69, 1789, 1790,   69, 1788,   69, 1792, 1787,
+     1796,   69,   69,   69, 1800,   69,   69, 1799,   69, 1793,
+     1802, 1794, 1798, 1805, 1795,   69, 1797, 1803,   69,   69,
+       69, 1801,   69, 1804,   69,   69, 1808,   69, 1806,   69,
+     1811, 1812,   69, 1807,   69, 1814, 1815,   69, 1809,   69,
+     1810,   69, 1816, 1817,   69, 1818,   69, 1813, 1819,   69,
+       69, 1822, 1823,   69,   69, 1825,   69,   69, 1824, 1820,
+     1826,   69,   69, 1829, 1821,   69,   69,   69, 1828,   69,
+     1830,   69,   69,   69, 1831,   69,   69, 1835,   69, 1827,
+
+     1839,   69,   69,   69, 1833, 1834,   69, 1838,   69, 1843,
+     1841, 1832,   69, 1836,   69, 1844, 1837, 1840,   69, 1845,
+       69,   69, 1842,   69,   69, 1847, 1848,   69, 1846,   69,
+     1853,   69, 1850,   69, 1856,   69, 1854,   69,   69, 1859,
+       69,   69, 1857,   69, 1851, 1855,   69, 1849,   69, 1852,
+     1860,   69, 1861, 1863, 1865,   69, 1858,   69, 1864,   69,
+     1866,   69,   69, 1862, 1867,   69, 1871, 1870,   69, 1868,
+       69,   69,   69, 1874,   69, 1873, 1875, 1872, 1876,   69,
+     1877, 1879,   69,   69, 1881,   69, 1869,   69, 1880,   69,
+       69, 1885,   69,   69, 1878, 1883,   69,   69, 1887,   69,
+
+     1890,   69,   69, 1882,   69,   69,   69, 1884, 1892,   69,
+       69, 1889, 1888,   69, 1893, 1891,   69, 1886, 1896, 1899,
+       69, 1897, 1894,   69, 1901,   69, 1902,   69, 1895, 1903,
+       69,   69, 1905,   69,   69,   69, 1904,   69,   69, 1898,
+       69, 1909, 1900,   69, 1912,   69, 1913,   69,   69,   69,
+       69,   69, 1910,   69, 1906,   69, 1908, 1966, 1907, 1917,
+       69, 1915,   69,   69,   69, 1911, 1918, 1914,   69, 1919,
+     1916, 1921,   69, 1923, 1920, 1922,   69,   69, 1926, 1929,
+       69, 1924,   69, 1925,   69, 1930,   69, 1932,   69,   69,
+       69,   69,   69, 1996, 1927, 1928, 1933, 1935, 1936,   69,
+
+       69, 1931,   69, 1934, 1937,   69, 1938,   69,   69, 1940,
+       69,   69, 1941, 1939, 1942,   69, 1943,   69, 1946,   69,
+     1944,   69,   69, 1949,   69,   69, 1945, 1947,   69, 1948,
+     1950,   69,   69,   69,   69,   69,   69, 1953,   69,   69,
+       69,   69, 1955, 1962,   69, 1954, 1964,   69, 1951, 1965,
+       69, 1952, 1967,   69, 1957, 1956, 1958,   69, 1959, 1960,
+     1961, 1968, 1969,   69, 1963,   69,   69, 1972,   69,   69,
+       69,   69,   69,   69, 1976, 1977,   69, 1978,   69,   69,
+     1971, 1975,   69, 1970, 1973, 1980,   69, 1979, 1974,   69,
+       69, 2091,   69,   69, 1982, 1984, 1981, 1985, 1987,   69,
+
+     1988,   69, 1989,   69,   69, 1991,   69,   69,   69, 1993,
+     1983,   69, 1986, 1990, 1995,   69, 1997,   69,   69, 1992,
+       69,   69,   69, 1999,   69,   69, 1994,   69, 2003,   69,
+       69, 1998,   69, 2004,   69,   69,   69, 2002,   69, 2000,
+       69,   69, 2001, 2007, 2006,   69,   69, 2005, 2008, 2015,
+       69, 2017,   69, 2009, 2010, 2016, 2011, 2018,   69,   69,
+     2013, 2014,   69, 2012, 2019,   69,   69, 2020, 2023,   69,
+     2025,   69,   69,   69,   69,   69, 2028,   69, 2029,   69,
+       69, 2022,   69, 2024,   69,   69,   69, 2026,   69, 2030,
+     2021,   69, 2027, 2031,   69,   69, 2032,   69, 2034, 2033,
+
+     2038, 2035, 2039,   69, 2036, 2037,   69, 2041, 2042,   69,
+       69,   69, 2046, 2040, 2043, 2044, 2047,   69,   69,   69,
+       69,   69, 2051,   69,   69,   69, 2048,   69,   69,   69,
+     2045,   69, 2054,   69,   69, 2058, 2059, 2053,   69, 2049,
+     2050,   69, 2052,   69, 2055, 2091, 2057,   69, 2056,   69,
+     2061,   69, 2062,   69, 2064, 2066,   69, 2060, 2063,   69,
+     2065,   69, 2069,   69,   69,   69, 2067,   69, 2068, 2070,
+     2072,   69, 2073,   69,   69, 2076,   69,   69,   69, 2079,
+     2080,   69, 2071, 2091,   69, 2082,   69, 2083,   69,   69,
+     2074, 2081, 2075,   69, 2085, 2077, 2078,   69,   69,   69,
+
+     2084, 2091, 2086, 2089,   69, 2090,   69, 2091, 2091, 2091,
+     2091, 2091, 2091, 2091, 2091, 2091, 2091, 2087, 2088,   41,
+       41,   41,   41,   41,   41,   41,   46,   46,   46,   46,
+       46,   46,   46,   51,   51,   51,   51,   51,   51,   51,
+       57,   57,   57,   57,   57,   57,   57,   62,   62,   62,
+       62,   62,   62,   62,   72,   72, 2091,   72,   72,   72,
+       72,  130,  130, 2091, 2091, 2091,  130,  130,  132,  132,
+     2091, 2091,  132, 2091,  132,  134, 2091, 2091, 2091, 2091,
+     2091,  134,  137,  137, 2091, 2091, 2091,  137,  137,  139,
+     2091, 2091, 2091, 2091, 2091,  139,  141,  141, 2091,  141,
+
+      141,  141,  141,   73,   73, 2091,   73,   73,   73,   73,
+       13, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
+     2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
+     2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
+     2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
+     2091
     } ;
 
-static yyconst flex_int16_t yy_chk[4069] =
+static yyconst flex_int16_t yy_chk[4152] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -1605,419 +1631,429 @@ static yyconst flex_int16_t yy_chk[4069] =
        97,  103,  105,  108,  111,  110,  112,  112,  113,  117,
 
       110,  116,  114,  106,  110,  107,  109,  119,  122,  118,
-      124,  120,  123,  119,  111,  114,  128,  117,  113,  586,
+      124,  120,  123,  119,  111,  114,  128,  117,  113,  590,
       116,  114,  118,  120,  121,  121,  122,  125,  123,  125,
       126,  124,  127,  129,  128,  126,  131,  131,  129,  133,
-      138,  138,  133,  586,  127,  121,  135,  145,  135,  135,
+      138,  138,  133,  590,  127,  121,  135,  145,  135,  135,
       125,  135,  140,  145,  140,  140,  141,  140,  141,  141,
       143,  141,  144,  143,  146,  147,  148,  144,  141,  149,
-      150,  152,  156,  147,  156,  153,  159,  152,  152,  146,
-      153,  154,  154,  155,  149,  148,  162,  157, 2053,  155,
-      150,  157,  158,  158,  156,  159,  157,  160,  161,  165,
-
-      163,  157,  160,  161,  163,  164,  166,  157,  157,  162,
-      164,  167,  168,  165,  169,  170,  171,  171,  172,  169,
-      170,  166,  171,  167,  173,  174,  167,  175,  175,  176,
-      168,  174,  179,  177,  171,  176,  171,  178,  172,  177,
-      173,  176,  180,  187,  181,  182,  178,  184,  180,  181,
-      183,  182,  185,  179,  184,  186,  183,  189,  188,  190,
-      191,  186,  193,  187,  188,  185,  192,  190,  194,  195,
-      196,  192,  197,  191,  198,  196,  200,  193,  199,  189,
-      198,  201,  200,  202,  194,  202,  203,  205,  206,  195,
-      207,  207,  204,  203,  197,  211,  199,  199,  204,  208,
-
-      206,  201,  209,  212,  214,  208,  205,  210,  209,  210,
-      213,  215,  214,  218,  216,  212,  217,  215,  211,  216,
-      219,  220,  217,  208,  221,  222,  210,  223,  218,  213,
-      223,  224,  221,  224,  230,  220,  225,  225,  219,  226,
-      227,  227,  226,  228,  228,  229,  233,  234,  231,  230,
-      222,  231,  232,  234,  235,  233,  232,  236,  237,  237,
-      238,  229,  240,  236,  239,  238,  241,  242,  235,  246,
-      239,  248,  243,  244,  244,  245,  247,  250,  245,  747,
-      247,  251,  240,  257,  241,  243,  252,  246,  242,  248,
-      249,  249,  252,  251,  253,  250,  254,  253,  255,  258,
-
-      256,  259,  263,  260,  257,  260,  260,  255,  254,  256,
-      261,  261,  258,  259,  262,  255,  255,  262,  255,  263,
-      264,  265,  263,  266,  267,  267,  268,  269,  269,  270,
-      265,  268,  266,  271,  272,  264,  273,  274,  271,  275,
-      276,  139,  277,  278,  270,  275,  272,  277,  278,  280,
-      279,  281,  274,  279,  278,  279,  273,  282,  283,  286,
-      276,  285,  287,  280,  283,  292,  282,  281,  284,  288,
-      281,  290,  281,  284,  285,  289,  298,  287,  289,  286,
-      292,  293,  285,  288,  295,  290,  294,  296,  297,  300,
-      293,  294,  294,  299,  289,  291,  298,  291,  291,  299,
-
-      301,  302,  304,  297,  306,  295,  296,  291,  303,  291,
-      291,  291,  300,  303,  291,  305,  302,  304,  307,  308,
-      301,  305,  309,  310,  306,  313,  311,  314,  309,  137,
-      307,  311,  315,  308,  312,  312,  316,  312,  317,  310,
-      317,  320,  318,  314,  321,  313,  318,  319,  315,  324,
-      316,  319,  322,  323,  324,  326,  325,  327,  321,  320,
-      325,  322,  323,  327,  326,  328,  319,  329,  332,  333,
-      333,  330,  322,  329,  322,  330,  331,  334,  335,  336,
-      336,  331,  334,  337,  339,  342,  328,  340,  332,  337,
-      338,  335,  340,  341,  338,  343,  346,  342,  345,  343,
-
-      344,  344,  341,  345,  350,  339,  347,  347,  349,  349,
-      351,  352,  353,  356,  354,  357,  358,  346,  351,  360,
-      352,  359,  362,  383,  361,  350,  354,  359,  360,  361,
-      358,  356,  353,  356,  363,  357,  362,  364,  365,  366,
-      367,  368,  363,  364,  365,  367,  369,  370,  383,  371,
-      372,  370,  373,  366,  374,  372,  376,  396,  377,  381,
-      379,  396,  365,  368,  371,  378,  379,  369,  373,  380,
-      389,  379,  380,  374,  375,  375,  376,  377,  388,  381,
-      375,  378,  375,  382,  382,  384,  384,  385,  387,  386,
-      375,  390,  389,  375,  392,  391,  390,  388,  398,  393,
-
-      375,  386,  385,  387,  391,  394,  397,  399,  400,  401,
-      398,  394,  397,  392,  393,  402,  402,  401,  403,  405,
-      404,  400,  407,  408,  406,  399,  404,  406,  408,  409,
-      403,  405,  409,  410,  411,  412,  419,  407,  136,  411,
-      411,  413,  413,  414,  414,  415,  416,  416,  412,  410,
-      418,  415,  410,  417,  417,  420,  418,  419,  421,  422,
-      420,  423,  424,  426,  427,  423,  425,  422,  424,  427,
-      425,  428,  429,  431,  430,  433,  435,  421,  429,  430,
-      432,  426,  134,  432,  434,  434,  438,  431,  432,  440,
-      436,  428,  432,  433,  435,  436,  437,  439,  440,  441,
-
-      438,  437,  441,  439,  442,  443,  444,  445,  442,  446,
-      443,  444,  447,  448,  449,  450,  452,  447,  451,  452,
-      455,  450,  446,  445,  451,  453,  449,  454,  453,  448,
-      442,  456,  454,  457,  460,  458,  459,  460,  455,  457,
-      458,  461,  459,  462,  463,  456,  461,  464,  462,  462,
-      465,  466,  467,  472,  469,  468,  465,  463,  468,  469,
-      464,  467,  470,  471,  471,  474,  478,  470,  470,  473,
-      466,  473,  475,  468,  475,  476,  477,  479,  472,  480,
-      481,  482,  483,  480,  474,  478,  484,  485,  487,  481,
-      488,  490,  486,  476,  477,  490,  482,  479,  486,  491,
-
-      483,  492,  485,  489,  489,  484,  492,  487,  493,  488,
-      491,  494,  495,  496,  497,  498,  499,  501,  500,  497,
-      496,  499,  498,  500,  493,  495,  502,  503,  504,  505,
-      494,  507,  506,  502,  507,  501,  503,  506,  505,  508,
-      509,  511,  504,  508,  510,  510,  513,  514,  516,  519,
-      511,  515,  513,  510,  517,  515,  518,  519,  520,  521,
-      516,  509,  518,  527,  524,  530,  522,  514,  540,  532,
-      538,  522,  517,  532,  530,  522,  520,  531,  522,  524,
-      527,  533,  533,  531,  521,  522,  534,  534,  522,  535,
-      132,  538,  539,  540,  537,  535,  536,  536,  536,  537,
-
-      536,  541,  543,  536,  541,  542,  542,  545,  536,  543,
-      539,  544,  544,  547,  536,  536,  546,  546,  547,  549,
-      548,  551,  545,  548,  549,  550,  552,  550,  553,  555,
-      554,  556,  556,  551,  560,  557,  559,  555,  558,  561,
-      562,  562,  130,  569,  561,  552,  560,  563,  553,  554,
-      557,  564,  558,  563,  559,  565,  566,  564,  565,  567,
-      568,  569,  566,  571,  570,  572,  574,  567,  568,  570,
-      571,  573,  573,  575,  576,  574,  577,  579,  580,  581,
-      576,  575,  581,  582,  572,  583,  579,  580,  582,  584,
-      584,  585,  589,  587,  589,  577,  587,  590,  590,  583,
-
-      591,  593,  592,  594,  587,  595,  585,  592,  596,  597,
-      598,  599,  600,  602,  598,  601,  603,  606,  597,  611,
-      604,  591,  593,  594,  601,  602,  604,  595,  596,  599,
-      603,  600,  605,  605,  607,  608,  609,  606,  611,  610,
-      612,  608,  609,  610,  613,  614,  615,  615,  607,  613,
-      616,  617,  612,  618,  617,  619,  616,  620,  621,  623,
-      612,  622,  622,  620,  624,  624,  614,  625,  619,  626,
-      627,  618,  628,  626,  629,  630,  634,  623,  621,  632,
-      632,  633,  625,  636,  635,  633,  637,  636,  629,  627,
-      639,  634,   68,  638,  646,  630,  628,  631,  638,  642,
-
-      631,  637,  631,  640,  639,  643,  631,  641,  631,  635,
-      643,  641,  645,  631,  642,  646,  644,  640,  631,  647,
-      643,  644,  648,  649,  650,  650,  645,  651,  648,  649,
-      652,  652,  651,  647,  653,  654,  652,  655,  652,  658,
-      654,  656,  657,  657,  658,  660,  653,  659,  661,  652,
-      662,  655,  668,  656,  672,  659,  652,  663,  663,  660,
-      664,  669,  666,  667,  664,  675,  667,  661,  666,  662,
-      670,  668,  671,  672,  669,  673,  670,  671,  674,  676,
-      677,  675,  679,  680,  673,  678,  681,  674,  676,  682,
-      678,  683,  686,  688,  687,  684,  760,  680,  682,  677,
-
-      683,  684,  679,  760,  689,  690,  681,  692,  688,  689,
-      690,  686,  687,  691,  693,  693,  692,  694,  691,  695,
-      697,  698,  702,  694,  699,  699,  698,  698,  699,  701,
-      700,  703,  695,  700,  704,  705,  697,  707,  706,  711,
-      704,  706,  702,  701,  708,  709,  703,  710,  713,  714,
-      709,  711,  710,  715,  713,  705,  716,  716,  707,  715,
-      708,  717,  718,  719,  720,  714,  719,  721,  722,  724,
-      717,  723,  725,  726,  728,  724,  729,  725,  726,  729,
-      718,  731,  720,  730,  723,  732,  721,  734,  722,  733,
-      737,  732,  728,  731,  730,  733,  735,  736,  736,  738,
-
-      739,  735,  734,  740,  741,  742,  743,  740,  744,  737,
-      746,  749,  739,  738,  742,  750,  748,  751,  752,   62,
-      755,  759,  741,  751,  752,  743,  749,  753,  756,  746,
-      748,  754,  753,  744,  755,  750,  754,  758,  757,  761,
-      759,  762,  756,  757,  763,  763,  765,  764,  767,  766,
-      768,  768,  758,  769,  761,  766,  770,  771,  769,  772,
-      762,  764,  772,  770,  765,  773,  774,  775,  767,  776,
-      778,  771,  775,  777,  784,  774,  780,  780,  777,  783,
-      781,  782,  785,  773,  781,  786,  787,  788,  776,  778,
-      782,  789,  786,  784,  783,  790,  791,  785,  787,  792,
-
-      793,  794,  791,  797,  798,  800,  788,  795,  842,  797,
-      801,  799,  789,  790,  792,  801,  795,  802,  798,  799,
-      793,  794,  803,  804,  805,  800,  806,  803,  803,  802,
-      807,  807,  808,  842,  809,  810,  811,  811,  805,  806,
-      820,  810,  804,  809,  812,  808,  813,  814,  815,  812,
-      816,  816,  814,  815,  817,  813,  818,  819,  820,  821,
-      822,  818,  823,  817,  824,  821,  822,  823,  824,  825,
-      828,  819,  826,  826,  827,  830,  827,  831,  825,  830,
-      832,  828,  833,  825,  837,  825,  835,  825,  834,  825,
-      836,  833,  831,  834,  834,  839,  838,  840,  832,  836,
-
-      835,  841,  843,  837,  838,  845,  840,  843,  850,  839,
-      844,  844,  846,  846,  848,  852,  849,  848,  855,  841,
-      845,  849,  851,  851,  853,  853,  854,  850,  856,  856,
-      857,  854,  858,  859,  862,  852,  863,  858,  860,  855,
-      864,  859,  863,  860,  861,  861,  865,  864,  867,  868,
-      857,  869,  862,  871,  867,  868,  869,  870,  872,  865,
-      873,  875,  871,  870,  874,  874,  876,  877,  878,  879,
-      881,  873,  880,  882,  878,  883,  883,  872,  884,  885,
-      887,  875,  881,  879,  886,  887,  876,  888,  888,  879,
-      877,  882,  880,  889,  890,  892,   57,  902,  884,  890,
-
-      893,  894,  886,  895,  885,  893,  893,  896,  897,  896,
-      894,  895,  898,  899,  892,  900,  889,  899,  898,  901,
-      904,  903,  897,  902,  905,  904,  900,  906,  908,  911,
-      909,  910,  908,  961,  915,  912,  913,  914,  901,  903,
-      916,  911,  905,  924,  919,  916,  961,  906,  909,  912,
-      910,  913,  914,  915,  917,  918,  920,  921,  921,  922,
-      918,  917,  919,  923,  924,  920,  925,  926,  932,  923,
-      927,  925,  932,  926,  922,  933,  927,  928,  928,  929,
-      929,  931,  931,  934,  933,  935,  936,  937,  938,  940,
-      935,  939,  941,  938,  938,  942,  939,  939,  943,  944,
-
-      936,  934,  945,  948,  946,  949,  937,  947,  950,  940,
-      946,  941,  951,  947,  942,  952,  953,  943,  954,  955,
-      955,  945,  948,  956,  949,  944,  956,  950,  957,  952,
-      962,  951,  963,  954,  958,  958,  959,  953,  960,  962,
-      957,  959,  960,  967,  964,  963,  964,  966,  968,  968,
-      964,  969,  971,  970,  972,  973,  969,  970,  976,  967,
-      989,  973,  990,  964,  974,  974,  978,  966,  979,  979,
-      971,  978,  980,  985,  972,  989,  976,  991,  980,  982,
-      982,  984,  984,  987,  988,  988,  987,  990,  992,  985,
-      993,  991,  995,  992,  994,  994,  995,  996,  997,  997,
-
-      998,  999, 1000, 1002, 1001,  993, 1000, 1005, 1002, 1004,
-     1004, 1008,  999, 1006, 1007, 1007, 1008,  996, 1009, 1010,
-     1011, 1012,  998, 1001, 1013, 1005, 1013, 1006, 1014, 1011,
-     1015, 1016, 1019, 1014, 1017, 1021, 1015, 1024, 1009, 1010,
-     1017, 1012, 1020, 1020, 1022, 1026, 1019, 1025, 1025, 1027,
-     1022, 1016, 1028, 1029, 1021, 1028, 1033, 1026, 1028, 1029,
-     1030, 1024, 1031, 1032, 1034, 1030, 1035, 1034, 1032, 1027,
-     1028, 1031, 1035, 1036, 1036, 1037, 1038, 1039, 1040, 1043,
-     1041, 1033, 1042, 1047, 1040, 1041, 1044, 1046, 1042, 1045,
-     1045, 1044, 1046, 1037, 1048, 1038, 1049, 1039, 1050, 1051,
-
-     1054, 1047, 1043, 1052, 1053, 1055, 1054, 1056, 1057, 1058,
-     1060, 1060, 1050, 1051, 1048, 1052, 1049, 1053, 1061, 1062,
-     1063, 1064, 1057, 1066, 1062, 1055, 1068, 1056, 1064, 1070,
-     1058, 1065, 1071, 1071, 1075, 1063, 1072, 1072, 1061, 1066,
-     1065, 1068, 1073, 1065, 1074, 1073, 1068, 1076, 1077, 1074,
-     1075, 1078, 1079, 1080, 1070, 1082, 1076, 1081, 1081, 1080,
-     1078, 1079, 1084, 1078, 1083, 1085, 1086, 1077, 1089, 1087,
-     1090, 1091, 1091, 1092, 1093, 1082, 1097, 1083, 1100, 1085,
-     1084, 1087, 1086, 1093, 1100, 1094, 1095, 1095, 1090, 1092,
-     1094, 1096, 1098, 1089, 1097, 1101, 1103, 1098, 1098, 1102,
-
-     1096, 1095, 1103, 1096, 1102, 1104, 1106, 1108, 1107, 1109,
-     1112, 1104, 1109, 1101, 1107, 1113, 1115, 1114, 1109, 1116,
-     1108, 1117, 1122, 1113, 1118, 1119, 1106, 1117, 1128, 1112,
-     1114, 1121, 1121, 1123, 1115, 1136, 1124, 1123, 1116, 1125,
-     1118, 1124, 1122, 1119, 1125, 1126, 1127, 1130, 1131, 1131,
-     1126, 1128, 1132, 1133, 1136, 1127, 1134, 1135, 1137, 1138,
-     1133, 1139, 1130, 1146, 1137, 1145, 1132, 1140, 1134, 1135,
-     1145, 1138, 1146, 1140, 1141, 1141, 1148, 1142, 1150, 1139,
-     1142, 1143, 1143, 1147, 1147, 1149, 1151, 1150, 1148, 1152,
-     1149, 1153, 1154, 1155, 1156, 1159, 1153, 1158, 1151, 1157,
-
-     1157, 1154, 1160, 1158, 1152, 1161, 1162, 1162, 1163, 1156,
-     1164, 1164, 1165, 1155, 1154, 1167, 1159, 1166, 1166, 1167,
-     1168, 1160, 1172, 1171, 1169, 1161, 1168, 1169, 1163, 1171,
-     1173, 1174, 1175, 1165, 1179, 1175, 1173, 1176, 1176, 1178,
-     1172, 1177, 1177, 1180, 1181, 1178, 1179, 1179, 1179, 1182,
-     1183, 1186, 1185, 1179, 1187, 1182, 1174, 1185, 1185, 1188,
-     1188, 1189, 1191, 1180, 1181, 1186, 1190, 1190, 1192, 1197,
-     1183, 1193, 1193, 1194, 1194, 1187, 1198, 1198, 1197, 1199,
-     1201, 1200, 1191, 1202, 1203, 1203, 1204, 1189, 1200, 1201,
-     1192, 1205, 1207, 1208, 1199, 1209, 1210, 1207, 1211, 1208,
-
-     1212, 1213, 1213, 1210, 1211, 1214, 1212, 1205, 1215, 1202,
-     1214, 1216, 1204, 1217, 1218, 1209, 1219, 1215, 1220, 1219,
-     1221, 1222, 1222, 1223, 1224, 1227, 1218, 1229, 1224, 1226,
-     1228, 1216, 1217, 1229, 1228, 1235, 1220, 1234, 1223, 1236,
-     1227, 1230, 1231, 1231, 1224, 1232, 1221, 1237, 1226, 1235,
-     1230, 1233, 1233, 1237, 1238, 1238, 1232, 1239, 1234, 1236,
-     1240, 1232, 1239, 1239, 1241, 1242, 1240, 1243, 1245, 1247,
-     1246, 1248, 1249, 1243, 1246, 1250, 1251, 1242, 1249, 1252,
-     1245, 1247, 1251, 1254, 1255, 1255, 1254, 1256, 1256, 1258,
-     1241, 1252, 1257, 1257, 1259, 1261, 1248, 1250, 1260, 1262,
-
-     1259, 1261, 1264, 1260, 1267, 1269, 1271, 1264, 1262, 1258,
-     1266, 1270, 1270, 1266, 1272, 1273, 1267, 1269, 1274, 1277,
-     1275, 1278, 1276, 1272, 1275, 1277, 1271, 1276, 1280, 1280,
-     1281, 1287, 1282, 1273, 1283, 1278, 1289, 1274, 1285, 1285,
-     1280, 1282, 1290, 1283, 1291, 1292, 1296, 1287, 1281, 1299,
-     1291, 1289, 1293, 1293, 1296, 1294, 1290, 1294, 1295, 1295,
-     1298, 1301, 1292, 1300, 1300, 1302, 1303, 1298, 1304, 1299,
-     1301, 1305, 1306, 1307, 1313, 1308, 1310, 1311, 1303, 1313,
-     1304, 1308, 1314, 1305, 1314, 1315, 1302, 1316, 1307, 1323,
-     1319, 1321, 1316, 1317, 1308, 1328, 1310, 1311, 1306, 1319,
-
-     1317, 1322, 1322, 1315, 1324, 1321, 1325, 1326, 1325, 1324,
-     1329, 1327, 1326, 1328, 1330, 1323, 1327, 1331, 1332, 1333,
-     1330, 1335, 1331, 1336, 1337, 1337, 1339, 1333, 1338, 1338,
-     1329, 1332, 1340, 1341, 1343, 1344, 1343, 1336, 1342, 1341,
-     1335, 1339, 1347, 1342, 1345, 1345, 1351, 1344, 1346, 1346,
-     1350, 1347, 1340, 1348, 1347, 1348, 1349, 1349, 1351, 1350,
-     1353, 1354, 1356, 1357, 1358, 1353, 1354, 1361, 1359, 1365,
-     1363, 1364, 1366, 1361, 1370, 1356, 1363, 1367, 1367, 1368,
-     1372, 1366, 1358, 1357, 1359, 1372, 1364, 1371, 1368, 1369,
-     1369, 1371, 1373, 1370, 1365, 1374, 1375, 1376, 1379, 1379,
-
-     1374, 1374, 1380, 1383, 1375, 1373, 1381, 1381, 1382, 1382,
-     1384, 1380, 1385, 1389, 1386, 1383, 1391, 1376, 1385, 1386,
-     1387, 1387, 1390, 1394, 1393, 1392, 1395, 1390, 1384, 1393,
-     1396, 1396, 1397, 1398, 1400, 1401, 1397, 1403, 1389, 1391,
-     1392, 1394, 1395, 1404, 1399, 1405, 1406, 1407, 1398, 1399,
-     1408, 1409, 1411, 1520, 1401, 1520, 1403, 1412, 1412, 1415,
-     1400, 1413, 1408, 1414, 1413, 1406, 1404, 1411, 1407, 1405,
-     1416, 1420, 1409, 1415, 1417, 1417, 1414, 1418, 1418, 1419,
-     1419, 1421, 1427, 1416, 1422, 1422, 1420, 1423, 1424, 1424,
-     1425, 1425, 1426, 1426, 1421, 1429, 1423, 1428, 1428, 1423,
-
-     1432, 1427, 1430, 1430, 1431, 1431, 1434, 1435, 1435, 1436,
-     1439, 1434, 1438, 1429, 1437, 1437, 1439, 1440, 1444, 1432,
-     1440, 1441, 1441, 1442, 1442, 1443, 1445, 1448, 1436, 1449,
-     1438, 1446, 1446, 1444, 1450, 1451, 1453, 1441, 1455, 1451,
-     1452, 1452, 1454, 1454, 1443, 1445, 1456, 1448, 1457, 1450,
-     1458, 1458, 1449, 1456, 1459, 1453, 1461, 1462, 1455, 1463,
-     1464, 1465, 1462, 1459, 1466, 1467, 1468, 1469, 1461, 1466,
-     1467, 1470, 1471, 1464, 1457, 1473, 1469, 1472, 1475, 1473,
-     1470, 1468, 1465, 1472, 1463, 1477, 1471, 1478, 1478, 1479,
-     1480, 1480, 1481, 1483, 1477, 1479, 1484, 1486, 1475, 1480,
-
-     1488, 1489, 1490, 1488, 1491, 1484, 1489, 1495, 1483, 1486,
-     1492, 1492, 1481, 1497, 1481, 1498, 1491, 1494, 1494, 1496,
-     1496, 1495, 1490, 1499, 1502, 1497, 1500, 1500, 1502, 1498,
-     1503, 1504, 1504, 1503, 1505, 1506, 1507, 1508, 1510, 1505,
-     1509, 1511, 1499, 1512, 1509, 1514, 1511, 1513, 1516, 1512,
-     1526, 1508, 1517, 1513, 1518, 1506, 1507, 1517, 1510, 1519,
-     1518, 1523, 1533, 1514, 1516, 1524, 1524, 1519, 1525, 1527,
-     1527, 1525, 1531, 1531, 1536, 1523, 1526, 1537, 1537, 1536,
-     1533, 1539, 1539, 1541, 1542, 1542, 1543, 1544, 1545, 1541,
-     1551, 1547, 1548, 1545, 1549, 1549, 1553, 1552, 1554, 1551,
-
-     1556, 1556, 1543, 1552, 1548, 1558, 1558, 1559, 1559, 1544,
-     1547, 1560, 1562, 1554, 1553, 1561, 1560, 1561, 1563, 1564,
-     1564, 1565, 1565, 1563, 1566, 1566, 1562, 1567, 1568, 1569,
-     1569, 1570, 1571, 1572, 1574, 1573, 1575, 1575, 1576, 1567,
-     1573, 1577, 1578, 1570, 1571, 1572, 1568, 1576, 1579, 1580,
-     1581, 1582, 1582, 1584, 1574, 1585, 1583,   52, 1586, 1588,
-     1588, 1579, 1578, 1586, 1581, 1583, 1593, 1577, 1595, 1587,
-     1594, 1584, 1596, 1580, 1587, 1589, 1589, 1585, 1590, 1590,
-     1597, 1598, 1599, 1600, 1600, 1604, 1593, 1603, 1594, 1597,
-     1595, 1605, 1596, 1602, 1602, 1606, 1603, 1607, 1605, 1608,
-
-     1599, 1598, 1609, 1604, 1610, 1611, 1611, 1612, 1612, 1614,
-     1606, 1615, 1616, 1613, 1618, 1607, 1617, 1608, 1609, 1613,
-     1619, 1617, 1627, 1610, 1620, 1624, 1615, 1614, 1621, 1620,
-     1621, 1616, 1623, 1628, 1618, 1630, 1628, 1629, 1629, 1631,
-     1619, 1623, 1627, 1633, 1624, 1632, 1632, 1633, 1635, 1636,
-     1630, 1637, 1637, 1636, 1638, 1640, 1640, 1631, 1642, 1642,
-     1643, 1644, 1644, 1635, 1645, 1645, 1650, 1638, 1649, 1649,
-     1651, 1652, 1653, 1654, 1655, 1658, 1656, 1653, 1654, 1643,
-     1652, 1659, 1660, 1651, 1656, 1661, 1659, 1660, 1650, 1664,
-     1658, 1662, 1662, 1655, 1663, 1663, 1664, 1665, 1666, 1672,
-
-     1661, 1667, 1665, 1677, 1666, 1673, 1667, 1668, 1668, 1669,
-     1669, 1673, 1672, 1674, 1675, 1676, 1679, 1674, 1677, 1675,
-     1678, 1679, 1680, 1682, 1676, 1683, 1682, 1684, 1678, 1685,
-     1683, 1686, 1687, 1692, 1680, 1688, 1688, 1689, 1693, 1698,
-     1686, 1687, 1685, 1694, 1696, 1684, 1689, 1695, 1695, 1700,
-     1697,   51, 1692, 1701, 1698, 1699, 1699, 1701, 1693, 1697,
-     1702, 1702, 1694, 1696, 1703, 1704, 1706, 1707, 1700, 1709,
-     1704, 1710, 1703, 1709, 1711, 1706, 1713, 1713, 1716, 1716,
-     1707, 1719, 1720, 1720, 1726, 1710, 1721, 1721, 1722, 1711,
-     1727, 1722, 1723, 1723, 1724, 1724, 1725, 1725, 1734, 1728,
-
-       46, 1719, 1726, 1743, 1727, 1728, 1729, 1729, 1730, 1733,
-     1735, 1736, 1730, 1739, 1733, 1733, 1735, 1736, 1739, 1740,
-     1741, 1734, 1742, 1743, 1744, 1741, 1745, 1745, 1746, 1748,
-     1752, 1747, 1749, 1749, 1750, 1750, 1740, 1740, 1744, 1747,
-     1742, 1751, 1751, 1754, 1753, 1755, 1752, 1746, 1748, 1753,
-     1756, 1762, 1757, 1758, 1760, 1760, 1767, 1761,   41, 1756,
-     1761, 1764, 1764, 1754, 1769, 1765, 1768, 1768, 1769, 1762,
-     1765, 1755, 1757, 1758, 1767, 1770, 1771, 1772, 1774, 1773,
-     1776, 1777, 1772, 1772, 1770, 1779,   14, 1774, 1792, 1776,
-     1783, 1771, 1773, 1777, 1785, 1783, 1784, 1784, 1794, 1787,
-
-     1791, 1788, 1788, 1785, 1787, 1788, 1790, 1790, 1792, 1791,
-     1779, 1793, 1796, 1795, 1797, 1798, 1801, 1793, 1795, 1794,
-     1797, 1799, 1799, 1802, 1803, 1803, 1804, 1805, 1806, 1807,
-     1796, 1805, 1808, 1809, 1811, 1801, 1813, 1806, 1802, 1804,
-     1798, 1809, 1810, 1812, 1812, 1807, 1822, 1810, 1815, 1815,
-     1823, 1808, 1816, 1816, 1819, 1813, 1818, 1818, 1824, 1819,
-     1811, 1821, 1821, 1826, 1826, 1827, 1822, 1828, 1829, 1829,
-     1830, 1830, 1831, 1823, 1832, 1833, 1838, 1824, 1839, 1827,
-     1834, 1834, 1835, 1836, 1836, 1835, 1832, 1840, 1838, 1828,
-     1840, 1831, 1841, 1842, 1843, 1833, 1844, 1841, 1839, 1848,
-
-     1843, 1845, 1845, 1847, 1847, 1850, 1850, 1852, 1854, 1854,
-     1851, 1853, 1842, 1844, 1844, 1851, 1853, 1867, 1848, 1855,
-     1855, 1852, 1856, 1856, 1857, 1859, 1859, 1863, 1863, 1857,
-     1865, 1865, 1866, 1868, 1869, 1869, 1870, 1867, 1877, 1873,
-     1875, 1870, 1868, 1874, 1874, 1875, 1866, 1873, 1878, 1879,
-     1880, 1881, 1882, 1883, 1879, 1884, 1885,   13, 1877, 1881,
-     1886, 1889, 1880, 1891, 1891, 1886, 1892, 1892, 1878, 1883,
-     1882, 1893, 1884, 1884, 1902, 1893, 1899, 1885, 1897, 1897,
-     1899, 1889, 1901, 1901, 1903, 1905, 1905, 1906, 1908, 1914,
-     1909, 1941, 1902, 1910, 1910, 1911, 1911, 1915, 1903, 1909,
-
-     1912, 1912, 1906, 1913, 1916, 1917, 1908, 1919, 1913, 1941,
-     1917, 1918, 1915,    0, 1914, 1927, 1918, 1920, 1920, 1923,
-     1923, 1925, 1925, 1930, 1927, 1916, 1919, 1928, 1928, 1931,
-     1931, 1932, 1933, 1933, 1936, 1930, 1937, 1936, 1938, 1939,
-     1940, 1942, 1937, 1948, 1939, 1946, 1932, 1948, 1946, 1949,
-     1950, 1952, 1938, 1953, 1954, 1956, 1955, 1942, 1957, 1940,
-     1958, 1959, 1952, 1961, 1950, 1964, 1953, 1960, 1960, 1949,
-     1964, 1956, 1961, 1954, 1955, 1958, 1962, 1962, 1963, 1963,
-     1965, 1959, 1966, 1957, 1967, 1965, 1968, 1969, 1970, 1970,
-     1972, 1975, 1968, 1979, 1976, 1978, 1977, 1980, 1982, 1967,
-
-     1976, 1969, 1977, 1983, 1984, 1972, 1979, 1966, 1985, 1978,
-     1975, 1986, 1982, 1987, 1988, 1989, 1980, 1984, 1987, 1988,
-     1991, 1985, 1983, 1990, 1990, 1991, 1992, 1993, 1994, 1995,
-     1986, 1992, 1993, 1997, 1989, 1995, 1996, 1996, 1998, 1999,
-     1997, 2001, 2000, 2002, 2004, 2005, 2006, 1994, 2000, 2004,
-     2007, 2008, 2008, 2010, 2009, 2015, 2002, 1998, 1999, 2009,
-     2001, 2011, 2011, 2007, 2005, 2006, 2012, 2012, 2013, 2014,
-     2016, 2016, 2010, 2013, 2015, 2017, 2014, 2018, 2019, 2021,
-     2020, 2023, 2017, 2024, 2018, 2020, 2023, 2025, 2024, 2026,
-     2027, 2027, 2028, 2029, 2030, 2030, 2032, 2019, 2021, 2031,
-
-     2031, 2033, 2033, 2032, 2034, 2034, 2025, 2035, 2026, 2041,
-     2037, 2028, 2029, 2040, 2035, 2037, 2042,    0, 2040, 2043,
-     2043, 2044, 2044,    0,    0,    0,    0,    0, 2041,    0,
-        0,    0,    0,    0,    0, 2042, 2048, 2048, 2048, 2048,
-     2048, 2048, 2048, 2049, 2049, 2049, 2049, 2049, 2049, 2049,
-     2050, 2050, 2050, 2050, 2050, 2050, 2050, 2051, 2051, 2051,
-     2051, 2051, 2051, 2051, 2052, 2052, 2052, 2052, 2052, 2052,
-     2052, 2054, 2054,    0, 2054, 2054, 2054, 2054, 2055, 2055,
-        0,    0,    0, 2055, 2055, 2056, 2056,    0,    0, 2056,
-        0, 2056, 2057,    0,    0,    0,    0,    0, 2057, 2058,
-
-     2058,    0,    0,    0, 2058, 2058, 2059,    0,    0,    0,
-        0,    0, 2059, 2060, 2060,    0, 2060, 2060, 2060, 2060,
-     2061, 2061,    0, 2061, 2061, 2061, 2061, 2047, 2047, 2047,
-     2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047,
-     2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047,
-     2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047,
-     2047, 2047, 2047, 2047, 2047, 2047, 2047, 2047
+      150,  152,  202,  147,  202,  153,  159,  152,  152,  146,
+      153,  154,  154,  155,  149,  148,  156,  162,  156,  155,
+      150,  156,  157,  158,  158,  159,  157,  160,  161,  168,
+
+      163,  157,  160,  161,  163,  165,  157,  166,  156,  164,
+      162,  167,  157,  157,  164,  169,  170,  168,  172,  165,
+      169,  170,  166,  167,  171,  171,  167,  173,  174,  176,
+      171,  175,  175,  177,  174,  176,  178,  179,  172,  177,
+      180,  176,  171,  173,  171,  178,  180,  181,  182,  183,
+      184,  185,  181,  186,  182,  183,  187,  184,  179,  186,
+      188,  189,  190,  192,  185,  191,  188,  193,  192,  194,
+      190,  195,  196,  197,  198,  199,  187,  196,  191,  201,
+      198,  200,  193,  189,  204,  194,  205,  200,  206,  203,
+      204,  195,  211,  199,  199,  197,  203,  207,  207,  201,
+
+      206,  208,  209,  213,  210,  205,  210,  208,  209,  212,
+      214,  215,  218,  219,  216,  211,  220,  215,  214,  216,
+      217,  212,  213,  210,  221,  208,  217,  218,  222,  227,
+      220,  219,  221,  223,  230,  224,  223,  224,  225,  225,
+      226,  228,  228,  226,  229,  229,  231,  227,  232,  234,
+      230,  232,  233,  222,  235,  236,  233,  237,  234,  241,
+      235,  231,  239,  237,  238,  238,  240,  239,  242,  236,
+      243,  244,  240,  245,  245,  246,  247,  248,  246,  241,
+      249,  248,  250,  250,  244,  251,  242,  252,  255,  253,
+      254,  243,  256,  254,  247,  253,  257,  258,  249,  252,
+
+      255,  256,  259,  251,  260,  257,  262,  262,  264,  256,
+      256,  261,  256,  261,  261,  259,  260,  263,  258,  265,
+      263,  266,  267,  268,  268,  264,  271,  269,  264,  275,
+      266,  267,  269,  272,  265,  270,  270,  273,  272,  274,
+      276,  271,  277,  278,  275,  279,  276,  281,  278,  273,
+      279,  282,  280,  286,  283,  280,  279,  280,  284,  274,
+      285,  281,  277,  283,  284,  285,  286,  282,  287,  288,
+      282,  289,  282,  290,  286,  291,  290,  294,  296,  293,
+     2097,  297,  304,  298,  288,  289,  294,  304,  287,  291,
+      299,  301,  290,  292,  293,  292,  292,  295,  298,  296,
+
+      297,  302,  295,  295,  303,  292,  307,  292,  292,  292,
+      299,  300,  292,  305,  301,  308,  306,  300,  309,  303,
+      311,  302,  306,  310,  312,  313,  307,  308,  305,  310,
+      313,  315,  309,  314,  314,  318,  314,  316,  317,  319,
+      312,  319,  320,  321,  323,  311,  320,  321,  322,  318,
+      324,  315,  325,  316,  317,  326,  328,  330,  323,  324,
+      326,  325,  321,  327,  334,  328,  322,  327,  329,  331,
+      324,  333,  324,  332,  329,  331,  333,  332,  330,  335,
+      335,  336,  337,  339,  334,  341,  336,  338,  338,  339,
+      340,  342,  343,  344,  340,  337,  342,  348,  345,  346,
+
+      346,  343,  345,  347,  352,  344,  341,  353,  347,  349,
+      349,  351,  351,  354,  355,  353,  356,  358,  348,  359,
+      361,  362,  354,  365,  360,  352,  361,  363,  356,  364,
+      362,  365,  363,  368,  355,  358,  366,  358,  360,  359,
+      367,  370,  366,  364,  369,  371,  367,  368,  372,  369,
+      373,  374,  372,  375,  376,  380,  374,  378,  388,  379,
+      385,  381,  752,  370,  367,  373,  371,  381,  383,  375,
+      388,  380,  381,  376,  377,  377,  382,  378,  379,  382,
+      377,  387,  377,  384,  384,  385,  386,  386,  383,  389,
+      377,  390,  391,  377,  392,  401,  387,  393,  394,  392,
+
+      377,  395,  396,  398,  389,  399,  393,  398,  396,  400,
+      390,  399,  402,  401,  391,  403,  395,  394,  404,  404,
+      405,  400,  406,  403,  407,  402,  408,  409,  406,  408,
+      410,  411,  405,  412,  411,  410,  407,  413,  414,  416,
+      416,  415,  409,  414,  414,  417,  417,  419,  419,  412,
+      418,  422,  412,  413,  415,  421,  418,  420,  420,  423,
+      424,  421,  425,  426,  423,  427,  429,  426,  431,  428,
+      425,  427,  422,  428,  436,  430,  432,  434,  433,  424,
+      430,  438,  432,  433,  429,  439,  435,  441,  431,  435,
+      439,  434,  436,  139,  435,  437,  437,  440,  435,  438,
+
+      442,  441,  440,  443,  444,  445,  442,  444,  446,  445,
+      447,  448,  443,  446,  450,  447,  449,  451,  452,  450,
+      453,  455,  454,  458,  455,  137,  453,  448,  454,  449,
+      452,  445,  456,  451,  457,  456,  459,  460,  462,  457,
+      461,  458,  464,  460,  462,  461,  463,  464,  465,  463,
+      459,  466,  467,  465,  465,  468,  469,  470,  472,  471,
+      475,  468,  471,  472,  466,  467,  470,  473,  474,  474,
+      477,  481,  473,  473,  476,  469,  476,  471,  478,  479,
+      478,  480,  482,  483,  484,  475,  485,  483,  486,  477,
+      481,  487,  488,  484,  489,  490,  491,  479,  497,  480,
+
+      489,  485,  482,  492,  492,  493,  486,  488,  494,  493,
+      487,  495,  496,  498,  490,  491,  495,  497,  499,  494,
+      504,  507,  500,  501,  502,  499,  498,  500,  496,  502,
+      501,  503,  505,  506,  508,  507,  503,  512,  504,  505,
+      509,  510,  506,  508,  510,  509,  511,  513,  513,  516,
+      511,  514,  517,  518,  519,  516,  513,  518,  512,  520,
+      514,  521,  522,  523,  524,  525,  519,  521,  136,  528,
+      522,  526,  517,  534,  531,  536,  526,  520,  542,  536,
+      526,  523,  534,  526,  528,  525,  535,  537,  537,  524,
+      526,  531,  535,  526,  538,  538,  539,  555,  543,  542,
+
+      544,  541,  539,  540,  540,  540,  541,  540,  545,  555,
+      540,  545,  546,  546,  549,  540,  543,  547,  548,  548,
+      556,  540,  540,  551,  547,  544,  550,  550,  551,  549,
+      552,  553,  554,  552,  554,  557,  553,  558,  559,  556,
+      560,  560,  561,  563,  562,  565,  559,  564,  566,  566,
+      565,  573,  577,  577,  567,  557,  558,  561,  562,  564,
+      567,  563,  568,  569,  570,  571,  569,  572,  568,  573,
+      570,  574,  575,  571,  576,  572,  574,  578,  580,  575,
+      579,  581,  583,  584,  580,  587,  578,  585,  579,  586,
+      585,  583,  584,  576,  586,  588,  588,  589,  591,  587,
+
+      581,  591,  593,  595,  593,  594,  594,  597,  596,  591,
+      598,  599,  589,  596,  600,  602,  601,  603,  604,  602,
+      605,  608,  607,  610,  595,  601,  606,  608,  597,  605,
+      598,  609,  609,  599,  600,  603,  607,  604,  606,  611,
+      612,  613,  615,  610,  614,  616,  612,  613,  614,  617,
+      618,  619,  619,  611,  617,  621,  620,  616,  621,  622,
+      623,  615,  620,  624,  625,  616,  626,  626,  627,  624,
+      629,  618,  630,  623,  628,  628,  630,  622,  631,  632,
+      633,  634,  636,  636,  625,  629,  627,  637,  640,  639,
+      638,  637,  640,  641,  633,  642,  643,  631,  655,  655,
+
+      642,  634,  645,  632,  635,  638,  644,  635,  641,  635,
+      643,  644,  644,  635,  639,  635,  645,  646,  647,  648,
+      635,  646,  649,  650,  648,  635,  651,  649,  652,  653,
+      654,  134,  658,  647,  648,  653,  654,  650,  656,  660,
+      657,  657,  652,  656,  658,  659,  657,  651,  657,  661,
+      659,  662,  662,  660,  664,  663,  665,  666,  667,  657,
+      663,  661,  664,  668,  668,  669,  657,  671,  672,  669,
+      665,  672,  673,  671,  674,  675,  666,  667,  676,  677,
+      678,  675,  684,  676,  679,  680,  681,  674,  682,  678,
+      685,  673,  683,  679,  686,  681,  687,  683,  677,  688,
+
+      689,  680,  684,  691,  685,  687,  689,  682,  688,  692,
+      693,  694,  695,  696,  686,  697,  694,  695,  696,  698,
+      698,  700,  691,  699,  697,  693,  702,  692,  705,  699,
+      703,  705,  706,  707,  700,  703,  703,  704,  704,  708,
+      710,  704,  702,  709,  711,  712,  706,  711,  713,  709,
+      714,  715,  718,  707,  708,  714,  715,  716,  718,  719,
+      710,  720,  721,  721,  713,  722,  712,  720,  723,  716,
+      724,  725,  726,  724,  722,  719,  727,  728,  729,  733,
+      730,  736,  731,  735,  729,  730,  723,  731,  739,  725,
+      728,  726,  734,  736,  735,  734,  727,  733,  737,  738,
+
+      742,  740,  743,  739,  737,  738,  740,  741,  741,  744,
+      745,  746,  748,  747,  745,  749,  743,  751,  753,  742,
+      754,  744,  747,  755,  756,  768,  768,  757,  764,  746,
+      756,  748,  753,  757,  758,  754,  751,  759,  760,  758,
+      749,  761,  759,  755,  762,  763,  765,  764,  766,  762,
+      767,  769,  760,  765,  770,  761,  771,  772,  779,  773,
+      763,  779,  771,  766,  773,  769,  775,  775,  776,  767,
+      778,  780,  770,  776,  777,  773,  781,  772,  773,  783,
+      785,  777,  782,  784,  778,  781,  789,  782,  784,  780,
+      787,  787,  788,  790,  791,  789,  788,  792,  783,  785,
+
+      793,  795,  794,  796,  797,  798,  799,  793,  790,  800,
+      801,  798,  792,  791,  794,  807,  802,  804,  805,  806,
+      795,  799,  797,  804,  796,  802,  808,  806,  809,  800,
+      801,  808,  805,  810,  811,  807,  812,  816,  810,  810,
+      809,  813,  814,  814,  815,  817,  816,  818,  818,  820,
+      812,  817,  827,  811,  813,  819,  821,  815,  820,  822,
+      819,  821,  823,  823,  822,  824,  825,  826,  830,  828,
+      827,  825,  829,  830,  824,  828,  831,  832,  829,  835,
+      831,  826,  833,  833,  837,  834,  832,  834,  837,  838,
+      835,  832,  839,  832,  840,  832,  841,  832,  842,  843,
+
+      844,  841,  841,  840,  838,  845,  846,  847,  843,  848,
+      839,  849,  842,  845,  851,  851,  847,  850,  852,  844,
+      846,  856,  850,  853,  853,  855,  856,  848,  855,  857,
+      858,  858,  859,  852,  860,  860,  849,  861,  862,  863,
+      863,  864,  861,  866,  865,  867,  868,  868,  857,  865,
+      867,  866,  859,  869,  870,  871,  872,  874,  875,  862,
+      870,  864,  871,  874,  875,  876,  877,  878,  879,  872,
+      876,  869,  877,  880,  881,  881,  878,  882,  883,  884,
+      885,  886,  888,  887,  880,  891,  885,  879,  889,  890,
+      890,  892,  893,  899,  888,  886,  896,  882,  883,  894,
+
+      132,  886,  884,  887,  894,  891,  889,  895,  895,  897,
+      893,  904,  899,  901,  897,  900,  892,  902,  903,  896,
+      900,  900,  901,  905,  907,  902,  904,  911,  905,  904,
+      908,  906,  903,  906,  910,  909,  908,  912,  907,  909,
+      913,  915,  914,  919,  916,  910,  911,  914,  918,  920,
+      921,  922,  918,  925,  923,  924,  929,  130,  913,  915,
+      927,  919,  921,  912,  916,  922,  926,  927,  920,  923,
+      924,  926,  925,  928,  929,  930,  931,  931,  928,  932,
+      933,  934,  935,  936,  930,  937,  933,  935,  944,  936,
+      946,  937,  938,  938,  932,  939,  939,  941,  941,  942,
+
+      943,  947,  934,  942,  946,  945,  944,  948,  950,  943,
+      945,  949,  948,  948,  951,  952,  949,  949,  953,  954,
+      947,  955,  958,  956,  957,  959,  963,  960,  950,  956,
+      957,  961,   68,  951,  952,  962,  964,  953,  965,  965,
+      955,  958,  967,  969,  959,  954,  960,  963,  969,  962,
+      961,  964,  966,  971,  967,  966,  968,  968,  970,  972,
+      973,  974,  970,  974,  976,  977,  971,  974,  972,  978,
+      978,  979,  981,  973,  980,  982,  979,  983,  980,  986,
+      974,  977,  988,  983,  976,  984,  984,  988,  989,  989,
+      981,  995,  990,  992,  992,  982,  999,  986,  990,  994,
+
+      994,  997,  998,  998,  997, 1000, 1001,  995, 1002, 1003,
+     1008,  999, 1005, 1002, 1004, 1004, 1005, 1006, 1007, 1007,
+     1001, 1010, 1009, 1011, 1003, 1010, 1012, 1014, 1014, 1015,
+     1000, 1012, 1008, 1009, 1016, 1017, 1017, 1006, 1018, 1019,
+     1020, 1021, 1011, 1018, 1022, 1026, 1034, 1015, 1016, 1023,
+     1021, 1023, 1024, 1029, 1031, 1025, 1027, 1024,   62, 1019,
+     1020, 1025, 1027, 1037, 1022, 1026, 1032, 1029, 1030, 1030,
+     1034, 1038, 1032, 1031, 1035, 1035, 1036, 1036, 1040, 1039,
+     1041, 1037, 1039, 1043, 1045, 1042, 1038, 1044, 1042, 1043,
+     1040, 1042, 1044, 1045, 1046, 1047, 1049, 1051, 1048, 1046,
+
+     1041, 1048, 1049, 1042, 1050, 1050, 1052, 1053, 1054, 1057,
+     1061, 1055, 1056, 1062, 1054, 1051, 1055, 1058, 1056, 1063,
+     1047, 1060, 1058, 1059, 1059, 1052, 1060, 1053, 1061, 1064,
+     1065, 1068, 1057, 1062, 1066, 1067, 1069, 1068, 1070, 1063,
+     1071, 1072, 1076, 1064, 1065, 1075, 1066, 1076, 1067, 1074,
+     1074, 1077, 1078, 1080, 1071, 1079, 1069, 1082, 1070, 1078,
+     1084, 1091, 1072, 1088, 1079, 1075, 1077, 1079, 1088, 1080,
+     1085, 1085, 1082, 1086, 1086, 1087, 1089, 1082, 1087, 1090,
+     1091, 1092, 1093, 1094, 1096, 1084, 1095, 1095, 1090, 1094,
+     1092, 1093, 1089, 1092, 1097, 1098, 1099, 1101, 1100, 1103,
+
+     1104, 1105, 1105, 1106, 1096, 1111, 1107, 1097,   57, 1101,
+     1099, 1108, 1115, 1098, 1100, 1107, 1108, 1110, 1104, 1106,
+     1109, 1109, 1112, 1111, 1103, 1114, 1110, 1112, 1112, 1110,
+     1115, 1114, 1116, 1117, 1118, 1109, 1120, 1116, 1121, 1117,
+     1118, 1122, 1123, 1126, 1121, 1123, 1128, 1127, 1129, 1130,
+     1136, 1123, 1131, 1132, 1122, 1127, 1120, 1133, 1131, 1128,
+     1135, 1135, 1126, 1137, 1142, 1141, 1129, 1137, 1130, 1132,
+     1136, 1138, 1139, 1140, 1141, 1133, 1138, 1139, 1140, 1144,
+     1145, 1145, 1146, 1147, 1150, 1148, 1149, 1142, 1152, 1151,
+     1147, 1153,   52, 1154, 1144, 1151, 1146, 1148, 1149, 1154,
+
+     1152, 1155, 1155, 1150, 1156, 1157, 1157, 1156, 1159, 1153,
+     1160, 1161, 1161, 1159, 1162, 1163, 1164, 1163, 1165, 1160,
+     1166, 1168, 1167, 1169, 1170, 1172, 1162, 1167, 1171, 1173,
+     1168, 1174, 1177, 1171, 1172, 1169, 1164, 1176, 1166, 1170,
+     1165, 1175, 1175, 1176, 1178, 1179, 1174, 1172, 1181, 1173,
+     1180, 1180, 1183, 1177, 1182, 1182, 1184, 1184, 1185, 1190,
+     1186, 1187, 1185, 1178, 1187, 1179, 1186, 1192, 1181, 1189,
+     1191, 1193, 1197, 1183, 1193, 1189, 1191, 1190, 1194, 1194,
+     1195, 1195, 1196, 1198, 1197, 1197, 1197, 1199, 1196, 1200,
+     1201, 1197, 1192, 1203, 1204, 1200, 1205, 1207, 1203, 1203,
+
+     1206, 1206, 1209, 1198, 1208, 1208, 1210, 1199, 1204, 1215,
+     1201, 1211, 1211, 1212, 1212, 1216, 1216, 1205, 1215, 1217,
+     1218, 1219, 1209, 1207, 1220, 1221, 1221, 1218, 1210, 1222,
+     1219, 1223, 1225, 1226, 1217, 1228, 1227, 1225, 1229, 1226,
+     1230, 1234, 1228, 1235, 1229, 1233, 1230, 1223, 1231, 1231,
+     1220, 1236, 1232, 1238, 1233, 1222, 1227, 1232, 1239, 1240,
+     1240, 1234, 1235, 1236, 1237, 1241, 1242, 1237, 1244, 1247,
+     1242, 1238, 1246, 1245, 1248, 1247, 1246, 1249, 1249, 1250,
+     1241, 1251, 1251, 1248, 1239, 1252, 1242, 1244, 1245, 1253,
+     1250, 1254, 1255, 1256, 1256, 1250, 1257, 1259, 1255, 1258,
+
+     1260, 1257, 1257, 1253, 1261, 1258, 1252, 1263, 1265, 1264,
+     1261, 1254, 1260, 1264, 1266, 1267, 1268, 1270, 1269, 1263,
+     1265, 1267, 1272, 1259, 1269, 1272, 1273, 1273, 1276, 1270,
+     1274, 1274, 1275, 1275, 1277, 1280, 1278, 1279, 1268, 1266,
+     1277, 1278, 1282, 1279, 1280, 1285, 1284, 1282, 1276, 1284,
+     1287, 1288, 1289, 1289, 1291, 1290, 1293, 1285, 1294, 1291,
+     1292, 1292, 1287, 1288, 1290, 1295, 1296, 1294, 1297, 1298,
+     1300, 1299, 1297, 1303, 1298,   51, 1293, 1299, 1302, 1302,
+     1304, 1307, 1307, 1295, 1300, 1296, 1305, 1309, 1312, 1304,
+     1302, 1303, 1311, 1313, 1314, 1305, 1315, 1315, 1316, 1313,
+
+     1316, 1318, 1312, 1309, 1317, 1317, 1320, 1311, 1321, 1318,
+     1323, 1314, 1324, 1320, 1322, 1322, 1328, 1325, 1326, 1323,
+     1327, 1329, 1335, 1332,   46, 1330, 1333, 1335, 1321, 1325,
+     1326, 1330, 1327, 1324, 1337, 1336, 1329, 1336, 1341, 1343,
+     1338, 1339, 1328, 1332, 1330, 1338, 1333, 1341, 1339, 1344,
+     1344, 1345, 1337, 1343, 1346, 1347, 1348, 1347, 1349, 1346,
+     1350, 1348, 1351, 1349, 1352, 1355, 1353, 1354, 1357, 1358,
+     1352, 1353, 1362, 1355, 1359, 1359, 1361, 1345, 1350, 1623,
+     1354, 1364, 1351, 1358, 1360, 1360, 1364, 1357, 1363, 1366,
+     1623, 1361, 1362, 1365, 1363, 1365, 1367, 1367, 1368, 1368,
+
+     1369, 1366, 1370, 1373, 1370, 1371, 1371, 1372, 1375, 1369,
+     1378, 1379, 1369, 1375, 1376, 1373, 1372, 1380, 1381, 1376,
+     1383, 1385, 1386, 1378, 1387, 1392, 1383, 1385, 1397, 1388,
+     1390, 1379, 1389, 1389, 1381, 1380, 1397, 1386, 1388, 1390,
+     1391, 1391, 1393, 1394, 1392, 1395, 1393, 1396, 1394, 1387,
+     1398, 1402, 1396, 1396, 1401, 1401, 1403, 1403, 1395, 1405,
+     1402, 1404, 1404, 1406, 1408, 1413, 1407, 1409, 1409, 1408,
+     1398, 1405, 1407, 1410, 1415, 1412, 1418, 1416, 1410, 1412,
+     1417, 1406, 1416, 1419, 1420, 1413, 1422, 1422, 1419, 1421,
+     1423, 1418, 1424, 1425, 1423, 1426, 1427, 1429, 1425, 1415,
+
+     1430, 1431, 1420, 1417, 1437, 1421, 1434, 1424, 1432, 1433,
+     1435, 1438, 1438, 1440, 1439, 1427, 1429, 1439, 1434, 1437,
+     1441, 1426, 1442, 1430, 1446, 1431, 1440, 1432, 1443, 1443,
+     1433, 1435, 1444, 1444, 1441, 1442, 1445, 1445, 1447, 1446,
+     1448, 1448, 1453, 1449, 1450, 1450, 1451, 1451, 1452, 1452,
+     1455, 1447, 1449, 1454, 1454, 1449, 1456, 1456, 1457, 1457,
+     1458, 1453, 1460, 1461, 1461, 1462, 1465, 1460, 1455, 1463,
+     1463, 1464, 1465, 1466, 1467, 1467, 1466, 1468, 1468, 1458,
+     1469, 1470, 1471, 1474, 1462, 1472, 1472, 1475, 1477, 1464,
+     1467, 1476, 1477, 1478, 1478, 1479, 1470, 1480, 1480, 1469,
+
+     1481, 1471, 1482, 1474, 1483, 1487, 1476, 1484, 1484, 1482,
+     1475, 1488, 1485, 1489, 1479, 1490, 1488, 1487, 1491, 1492,
+     1481, 1485, 1493, 1495, 1492, 1494, 1496, 1493, 1490, 1497,
+     1483, 1498, 1495, 1501, 1507, 1496,   41, 1498, 1489, 1491,
+     1494, 1499, 1503, 1497, 1505, 1499, 1504, 1504, 1506, 1506,
+     1505, 1503, 1509, 1501, 1507, 1510, 1507, 1506, 1512, 1514,
+     1515, 1516, 1514, 1517, 1510, 1515,   14, 1509, 1518, 1518,
+     1512, 1520, 1520, 1521, 1522, 1517, 1523, 1523, 1521, 1524,
+     1522, 1516, 1525, 1525, 1526, 1527, 1528, 1529, 1529, 1532,
+     1531, 1535, 1532, 1524, 1531, 1534, 1526, 1533, 1533, 1527,
+
+     1534, 1536, 1537, 1538, 1539, 1528, 1541, 1538, 1540, 1542,
+     1543, 1535, 1541, 1540, 1545, 1542, 1537, 1546, 1548, 1547,
+     1552, 1536, 1546, 1555, 1539, 1547, 1548, 1549, 1543, 1549,
+     1545, 1553, 1553, 1554, 1552, 1562, 1554, 1556, 1556, 1560,
+     1560, 1565, 1566, 1566, 1568, 1568, 1565, 1572, 1570, 1555,
+     1571, 1571, 1573, 1562, 1570, 1574, 1576, 1577, 1578, 1578,
+     1574, 1580, 1581, 1572, 1582, 1583, 1585, 1585, 1581, 1577,
+     1580, 1587, 1587, 1589, 1573, 1576, 1588, 1588, 1589, 1590,
+     1583, 1590, 1582, 1591, 1592, 1593, 1593, 1594, 1594, 1592,
+     1595, 1595, 1596, 1597, 1598, 1598, 1599, 1591, 1600, 1603,
+
+     1601, 1602, 1604, 1604, 1596, 1605, 1602, 1606, 1599, 1607,
+     1600, 1597, 1601, 1608, 1605, 1609, 1610, 1611, 1611, 1603,
+     1613, 1614, 1612, 1615, 1617, 1617, 1608, 1616, 1615, 1607,
+     1610, 1612, 1616, 1606, 1618, 1618, 1619, 1619, 1613, 1609,
+     1622, 1625, 1626, 1614, 1627, 1628, 1629, 1630, 1632, 1632,
+     1631, 1634, 1634, 1635, 1636, 1629, 1637, 1639, 1622, 1638,
+     1626, 1625, 1635, 1637, 1640, 1628, 1627, 1630, 1631, 1641,
+     1642, 1648, 1636, 1646, 1638, 1639, 1643, 1643, 1644, 1644,
+     1645, 1647, 1640, 1649, 1650, 1641, 1645, 1651, 1649, 1642,
+     1648, 1646, 1652, 1653, 1655, 1653, 1647, 1652, 1656, 1659,
+
+     1661, 1661, 1660, 1655, 1650, 1660, 1662, 1651, 1663, 1664,
+     1664, 1665, 1667, 1675, 1668, 1665, 1670, 1656, 1668, 1659,
+     1682, 1662, 1669, 1669, 1672, 1672, 1663, 1667, 1683, 1670,
+     1674, 1674, 1675, 1676, 1676, 1677, 1677, 1681, 1681, 1684,
+     1685, 1683, 1682, 1687, 1686, 1685, 1688, 1691, 1684, 1686,
+     1690, 1692, 1691, 1693, 1688,   13, 1692, 1694, 1694, 1695,
+     1695, 1697, 1687, 1696, 1699, 1690, 1697, 1698, 1693, 1699,
+     1696, 1700, 1700, 1698, 1701, 1701, 1704, 1705, 1711, 1706,
+     1707, 1708, 1705, 1705, 1706, 1708, 1707, 1709, 1710, 1704,
+     1712, 1713, 1709, 1711, 1714, 1717, 1713, 1710, 1712, 1716,
+
+     1717, 1718, 1716, 1719, 1720, 1721, 1714, 1722, 1722, 1723,
+     1726, 1727, 1732, 1720, 1721, 1728, 1719, 1730, 1723, 1718,
+     1729, 1729, 1734, 1731, 1733, 1733, 1735, 1732, 1738, 1726,
+     1735, 1727, 1731, 1738, 1728, 1737, 1730, 1736, 1736, 1740,
+     1741, 1734, 1743, 1737, 1744, 1745, 1743, 1753, 1740, 1747,
+     1747, 1750, 1750, 1741, 1754, 1754, 1755, 1755, 1744, 1756,
+     1745, 1760, 1756, 1757, 1757, 1758, 1758, 1753, 1759, 1759,
+     1761, 1762, 1763, 1763, 1764, 1767, 1768, 1762, 1764, 1760,
+     1767, 1767, 1769, 1770, 1761, 1773, 1776, 1777, 1769, 1770,
+     1773, 1774, 1778, 1781, 1774, 1779, 1780, 1778, 1783, 1768,
+
+     1782, 1782, 1784, 1785, 1777, 1777, 1791, 1781, 1786, 1786,
+     1784, 1776, 1789, 1779, 1787, 1787, 1780, 1783, 1788, 1788,
+     1790, 1792, 1785, 1793, 1794, 1790, 1791, 1799, 1789, 1795,
+     1797, 1797, 1793, 1798, 1801, 1801, 1798, 1802, 1804, 1805,
+     1805, 1810, 1802, 1807, 1794, 1799, 1806, 1792, 1808, 1795,
+     1806, 1811, 1807, 1809, 1810, 1813, 1804, 1814, 1809, 1809,
+     1811, 1816, 1820, 1808, 1813, 1821, 1821, 1820, 1822, 1814,
+     1824, 1828, 1825, 1825, 1829, 1824, 1825, 1822, 1827, 1827,
+     1828, 1830, 1833, 1831, 1832, 1832, 1816, 1830, 1831, 1835,
+     1834, 1836, 1837, 1840, 1829, 1834, 1841, 1836, 1838, 1838,
+
+     1842, 1842, 1843, 1833, 1844, 1845, 1846, 1835, 1844, 1847,
+     1848, 1841, 1840, 1850, 1845, 1843, 1849, 1837, 1848, 1851,
+     1851, 1849, 1846, 1852, 1854, 1854, 1855, 1855, 1847, 1857,
+     1857, 1858, 1860, 1860, 1861, 1862, 1858, 1863, 1866, 1850,
+     1865, 1865, 1852, 1867, 1868, 1868, 1869, 1869, 1870, 1871,
+     1872, 1878, 1866, 1935, 1861, 1880, 1863, 1935, 1862, 1873,
+     1873, 1871, 1877, 1874, 1883, 1867, 1874, 1870, 1875, 1875,
+     1872, 1878, 1879, 1880, 1877, 1879, 1882, 1885, 1884, 1886,
+     1886, 1882, 1889, 1883, 1884, 1888, 1888, 1891, 1891, 1893,
+     1979, 1892, 1894, 1979, 1885, 1885, 1892, 1894, 1895, 1895,
+
+     1908, 1889, 1907, 1893, 1896, 1896, 1897, 1897, 1898, 1900,
+     1900, 1904, 1904, 1898, 1906, 1906, 1907, 1909, 1910, 1910,
+     1908, 1914, 1911, 1915, 1915, 1916, 1909, 1911, 1918, 1914,
+     1916, 1919, 1920, 1921, 1922, 1923, 1924, 1920, 1928, 1927,
+     1925, 1926, 1922, 1928, 1931, 1921, 1933, 1933, 1918, 1934,
+     1934, 1919, 1939, 1939, 1924, 1923, 1925, 1941, 1926, 1926,
+     1927, 1941, 1943, 1943, 1931, 1944, 1945, 1947, 1947, 1948,
+     1950, 1957, 1951, 1952, 1952, 1953, 1953, 1954, 1954, 1958,
+     1945, 1951, 1955, 1944, 1948, 1956, 1956, 1955, 1950, 1959,
+     1960,    0, 1961, 1962, 1958, 1960, 1957, 1961, 1963, 1963,
+
+     1966, 1966, 1968, 1968, 1970, 1971, 1971, 1973, 1974, 1974,
+     1959, 1975, 1962, 1970, 1976, 1976, 1981, 1982, 1983, 1973,
+     1984, 1986, 1981, 1983, 1985, 1990, 1975, 1993, 1990, 1992,
+     1994, 1982, 1996, 1992, 1998, 1997, 1999, 1986, 2001, 1984,
+     2000, 2003, 1985, 1996, 1994, 2002, 2005, 1993, 1997, 2004,
+     2004, 2006, 2006, 1998, 1999, 2005, 2000, 2007, 2007, 2008,
+     2002, 2003, 2009, 2001, 2008, 2010, 2011, 2009, 2012, 2013,
+     2014, 2014, 2016, 2019, 2012, 2022, 2020, 2024, 2021, 2027,
+     2023, 2011, 2020, 2013, 2021, 2026, 2030, 2016, 2028, 2022,
+     2010, 2029, 2019, 2023, 2033, 2031, 2024, 2032, 2027, 2026,
+
+     2031, 2028, 2032, 2035, 2029, 2030, 2034, 2034, 2035, 2036,
+     2037, 2038, 2039, 2033, 2036, 2037, 2040, 2040, 2039, 2041,
+     2042, 2043, 2044, 2045, 2046, 2049, 2041, 2048, 2044, 2050,
+     2038, 2053, 2048, 2051, 2052, 2052, 2053, 2046, 2054, 2042,
+     2043, 2059, 2045, 2063, 2049,    0, 2051, 2058, 2050, 2055,
+     2055, 2056, 2056, 2057, 2058, 2060, 2060, 2054, 2057, 2061,
+     2059, 2062, 2063, 2065, 2064, 2067, 2061, 2068, 2062, 2064,
+     2067, 2069, 2068, 2070, 2071, 2071, 2072, 2073, 2074, 2074,
+     2075, 2075, 2065,    0, 2076, 2077, 2077, 2078, 2078, 2081,
+     2069, 2076, 2070, 2079, 2081, 2072, 2073, 2084, 2085, 2086,
+
+     2079,    0, 2084, 2087, 2087, 2088, 2088,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0, 2085, 2086, 2092,
+     2092, 2092, 2092, 2092, 2092, 2092, 2093, 2093, 2093, 2093,
+     2093, 2093, 2093, 2094, 2094, 2094, 2094, 2094, 2094, 2094,
+     2095, 2095, 2095, 2095, 2095, 2095, 2095, 2096, 2096, 2096,
+     2096, 2096, 2096, 2096, 2098, 2098,    0, 2098, 2098, 2098,
+     2098, 2099, 2099,    0,    0,    0, 2099, 2099, 2100, 2100,
+        0,    0, 2100,    0, 2100, 2101,    0,    0,    0,    0,
+        0, 2101, 2102, 2102,    0,    0,    0, 2102, 2102, 2103,
+        0,    0,    0,    0,    0, 2103, 2104, 2104,    0, 2104,
+
+     2104, 2104, 2104, 2105, 2105,    0, 2105, 2105, 2105, 2105,
+     2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
+     2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
+     2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
+     2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091, 2091,
+     2091
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -2228,7 +2264,7 @@ static void config_end_include(void)
 #define YY_NO_INPUT 1
 #endif
 
-#line 2230 "<stdout>"
+#line 2266 "<stdout>"
 
 #define INITIAL 0
 #define quotedstring 1
@@ -2451,7 +2487,7 @@ YY_DECL
        {
 #line 207 "./util/configlexer.lex"
 
-#line 2453 "<stdout>"
+#line 2489 "<stdout>"
 
        while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
@@ -2484,13 +2520,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 2048 )
+                               if ( yy_current_state >= 2092 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 4028 );
+               while ( yy_base[yy_current_state] != 4111 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -3470,40 +3506,70 @@ YY_RULE_SETUP
 { YDVAR(2, VAR_RESPONSE_IP_DATA) }
        YY_BREAK
 case 190:
-/* rule 190 can match eol */
 YY_RULE_SETUP
 #line 407 "./util/configlexer.lex"
-{ LEXOUT(("NL\n")); cfg_parser->line++; }
+{ YDVAR(0, VAR_DNSCRYPT) }
        YY_BREAK
-/* Quoted strings. Strip leading and ending quotes */
 case 191:
 YY_RULE_SETUP
+#line 408 "./util/configlexer.lex"
+{ YDVAR(1, VAR_DNSCRYPT_ENABLE) }
+       YY_BREAK
+case 192:
+YY_RULE_SETUP
+#line 409 "./util/configlexer.lex"
+{ YDVAR(1, VAR_DNSCRYPT_PORT) }
+       YY_BREAK
+case 193:
+YY_RULE_SETUP
 #line 410 "./util/configlexer.lex"
+{ YDVAR(1, VAR_DNSCRYPT_PROVIDER) }
+       YY_BREAK
+case 194:
+YY_RULE_SETUP
+#line 411 "./util/configlexer.lex"
+{ YDVAR(1, VAR_DNSCRYPT_SECRET_KEY) }
+       YY_BREAK
+case 195:
+YY_RULE_SETUP
+#line 412 "./util/configlexer.lex"
+{ YDVAR(1, VAR_DNSCRYPT_PROVIDER_CERT) }
+       YY_BREAK
+case 196:
+/* rule 196 can match eol */
+YY_RULE_SETUP
+#line 413 "./util/configlexer.lex"
+{ LEXOUT(("NL\n")); cfg_parser->line++; }
+       YY_BREAK
+/* Quoted strings. Strip leading and ending quotes */
+case 197:
+YY_RULE_SETUP
+#line 416 "./util/configlexer.lex"
 { BEGIN(quotedstring); LEXOUT(("QS ")); }
        YY_BREAK
 case YY_STATE_EOF(quotedstring):
-#line 411 "./util/configlexer.lex"
+#line 417 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 192:
+case 198:
 YY_RULE_SETUP
-#line 416 "./util/configlexer.lex"
+#line 422 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 193:
-/* rule 193 can match eol */
+case 199:
+/* rule 199 can match eol */
 YY_RULE_SETUP
-#line 417 "./util/configlexer.lex"
+#line 423 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end \""); 
                          cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 194:
+case 200:
 YY_RULE_SETUP
-#line 419 "./util/configlexer.lex"
+#line 425 "./util/configlexer.lex"
 {
         LEXOUT(("QE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -3516,34 +3582,34 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* Single Quoted strings. Strip leading and ending quotes */
-case 195:
+case 201:
 YY_RULE_SETUP
-#line 431 "./util/configlexer.lex"
+#line 437 "./util/configlexer.lex"
 { BEGIN(singlequotedstr); LEXOUT(("SQS ")); }
        YY_BREAK
 case YY_STATE_EOF(singlequotedstr):
-#line 432 "./util/configlexer.lex"
+#line 438 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
        if(--num_args == 0) { BEGIN(INITIAL); }
        else                { BEGIN(val); }
 }
        YY_BREAK
-case 196:
+case 202:
 YY_RULE_SETUP
-#line 437 "./util/configlexer.lex"
+#line 443 "./util/configlexer.lex"
 { LEXOUT(("STR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 197:
-/* rule 197 can match eol */
+case 203:
+/* rule 203 can match eol */
 YY_RULE_SETUP
-#line 438 "./util/configlexer.lex"
+#line 444 "./util/configlexer.lex"
 { yyerror("newline inside quoted string, no end '"); 
                             cfg_parser->line++; BEGIN(INITIAL); }
        YY_BREAK
-case 198:
+case 204:
 YY_RULE_SETUP
-#line 440 "./util/configlexer.lex"
+#line 446 "./util/configlexer.lex"
 {
         LEXOUT(("SQE "));
        if(--num_args == 0) { BEGIN(INITIAL); }
@@ -3556,38 +3622,38 @@ YY_RULE_SETUP
 }
        YY_BREAK
 /* include: directive */
-case 199:
+case 205:
 YY_RULE_SETUP
-#line 452 "./util/configlexer.lex"
+#line 458 "./util/configlexer.lex"
 { 
        LEXOUT(("v(%s) ", yytext)); inc_prev = YYSTATE; BEGIN(include); }
        YY_BREAK
 case YY_STATE_EOF(include):
-#line 454 "./util/configlexer.lex"
+#line 460 "./util/configlexer.lex"
 {
         yyerror("EOF inside include directive");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 200:
+case 206:
 YY_RULE_SETUP
-#line 458 "./util/configlexer.lex"
+#line 464 "./util/configlexer.lex"
 { LEXOUT(("ISP ")); /* ignore */ }
        YY_BREAK
-case 201:
-/* rule 201 can match eol */
+case 207:
+/* rule 207 can match eol */
 YY_RULE_SETUP
-#line 459 "./util/configlexer.lex"
+#line 465 "./util/configlexer.lex"
 { LEXOUT(("NL\n")); cfg_parser->line++;}
        YY_BREAK
-case 202:
+case 208:
 YY_RULE_SETUP
-#line 460 "./util/configlexer.lex"
+#line 466 "./util/configlexer.lex"
 { LEXOUT(("IQS ")); BEGIN(include_quoted); }
        YY_BREAK
-case 203:
+case 209:
 YY_RULE_SETUP
-#line 461 "./util/configlexer.lex"
+#line 467 "./util/configlexer.lex"
 {
        LEXOUT(("Iunquotedstr(%s) ", yytext));
        config_start_include_glob(yytext);
@@ -3595,27 +3661,27 @@ YY_RULE_SETUP
 }
        YY_BREAK
 case YY_STATE_EOF(include_quoted):
-#line 466 "./util/configlexer.lex"
+#line 472 "./util/configlexer.lex"
 {
         yyerror("EOF inside quoted string");
         BEGIN(inc_prev);
 }
        YY_BREAK
-case 204:
+case 210:
 YY_RULE_SETUP
-#line 470 "./util/configlexer.lex"
+#line 476 "./util/configlexer.lex"
 { LEXOUT(("ISTR(%s) ", yytext)); yymore(); }
        YY_BREAK
-case 205:
-/* rule 205 can match eol */
+case 211:
+/* rule 211 can match eol */
 YY_RULE_SETUP
-#line 471 "./util/configlexer.lex"
+#line 477 "./util/configlexer.lex"
 { yyerror("newline before \" in include name"); 
                                  cfg_parser->line++; BEGIN(inc_prev); }
        YY_BREAK
-case 206:
+case 212:
 YY_RULE_SETUP
-#line 473 "./util/configlexer.lex"
+#line 479 "./util/configlexer.lex"
 {
        LEXOUT(("IQE "));
        yytext[yyleng - 1] = '\0';
@@ -3625,7 +3691,7 @@ YY_RULE_SETUP
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(val):
-#line 479 "./util/configlexer.lex"
+#line 485 "./util/configlexer.lex"
 {
        LEXOUT(("LEXEOF "));
        yy_set_bol(1); /* Set beginning of line, so "^" rules match.  */
@@ -3637,33 +3703,33 @@ case YY_STATE_EOF(val):
        }
 }
        YY_BREAK
-case 207:
+case 213:
 YY_RULE_SETUP
-#line 490 "./util/configlexer.lex"
+#line 496 "./util/configlexer.lex"
 { LEXOUT(("unquotedstr(%s) ", yytext)); 
                        if(--num_args == 0) { BEGIN(INITIAL); }
                        yylval.str = strdup(yytext); return STRING_ARG; }
        YY_BREAK
-case 208:
+case 214:
 YY_RULE_SETUP
-#line 494 "./util/configlexer.lex"
+#line 500 "./util/configlexer.lex"
 {
        ub_c_error_msg("unknown keyword '%s'", yytext);
        }
        YY_BREAK
-case 209:
+case 215:
 YY_RULE_SETUP
-#line 498 "./util/configlexer.lex"
+#line 504 "./util/configlexer.lex"
 {
        ub_c_error_msg("stray '%s'", yytext);
        }
        YY_BREAK
-case 210:
+case 216:
 YY_RULE_SETUP
-#line 502 "./util/configlexer.lex"
+#line 508 "./util/configlexer.lex"
 ECHO;
        YY_BREAK
-#line 3665 "<stdout>"
+#line 3731 "<stdout>"
 
        case YY_END_OF_BUFFER:
                {
@@ -3954,7 +4020,7 @@ static int yy_get_next_buffer (void)
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 2048 )
+                       if ( yy_current_state >= 2092 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -3982,11 +4048,11 @@ static int yy_get_next_buffer (void)
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 2048 )
+               if ( yy_current_state >= 2092 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 2047);
+       yy_is_jam = (yy_current_state == 2091);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -4625,7 +4691,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 502 "./util/configlexer.lex"
+#line 508 "./util/configlexer.lex"
 
 
 
index 489be47d63e48e08b1ad0b4c23e5744cc64867a1..c105f9a20dbafc59724140bebcda0c4d47c875f6 100644 (file)
@@ -319,7 +319,13 @@ extern int yydebug;
     VAR_HIDE_TRUSTANCHOR = 448,
     VAR_USE_SYSTEMD = 449,
     VAR_SHM_ENABLE = 450,
-    VAR_SHM_KEY = 451
+    VAR_SHM_KEY = 451,
+    VAR_DNSCRYPT = 452,
+    VAR_DNSCRYPT_ENABLE = 453,
+    VAR_DNSCRYPT_PORT = 454,
+    VAR_DNSCRYPT_PROVIDER = 455,
+    VAR_DNSCRYPT_SECRET_KEY = 456,
+    VAR_DNSCRYPT_PROVIDER_CERT = 457
   };
 #endif
 /* Tokens.  */
@@ -517,6 +523,12 @@ extern int yydebug;
 #define VAR_USE_SYSTEMD 449
 #define VAR_SHM_ENABLE 450
 #define VAR_SHM_KEY 451
+#define VAR_DNSCRYPT 452
+#define VAR_DNSCRYPT_ENABLE 453
+#define VAR_DNSCRYPT_PORT 454
+#define VAR_DNSCRYPT_PROVIDER 455
+#define VAR_DNSCRYPT_SECRET_KEY 456
+#define VAR_DNSCRYPT_PROVIDER_CERT 457
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -527,7 +539,7 @@ union YYSTYPE
 
        char*   str;
 
-#line 531 "util/configparser.c" /* yacc.c:355  */
+#line 543 "util/configparser.c" /* yacc.c:355  */
 };
 
 typedef union YYSTYPE YYSTYPE;
@@ -544,7 +556,7 @@ int yyparse (void);
 
 /* Copy the second part of user declarations.  */
 
-#line 548 "util/configparser.c" /* yacc.c:358  */
+#line 560 "util/configparser.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -786,21 +798,21 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   400
+#define YYLAST   411
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  197
+#define YYNTOKENS  203
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  210
+#define YYNNTS  218
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  403
+#define YYNRULES  417
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  609
+#define YYNSTATES  628
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   451
+#define YYMAXUTOK   457
 
 #define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -854,54 +866,55 @@ static const yytype_uint8 yytranslate[] =
      165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
      175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
      185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
-     195,   196
+     195,   196,   197,   198,   199,   200,   201,   202
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   144,   144,   144,   145,   145,   146,   146,   147,   147,
-     147,   152,   157,   158,   159,   159,   159,   160,   160,   161,
-     161,   162,   162,   163,   163,   164,   164,   164,   165,   165,
-     165,   166,   166,   167,   167,   168,   168,   169,   169,   170,
-     170,   171,   171,   172,   172,   173,   173,   174,   174,   174,
-     175,   175,   175,   176,   176,   176,   177,   177,   178,   178,
-     179,   179,   180,   180,   181,   181,   181,   182,   182,   183,
-     183,   184,   184,   184,   185,   185,   186,   186,   187,   187,
-     188,   188,   188,   189,   189,   190,   190,   191,   191,   192,
-     192,   193,   193,   194,   194,   194,   195,   195,   196,   196,
-     196,   197,   197,   197,   198,   198,   198,   199,   199,   199,
-     199,   200,   200,   200,   201,   201,   201,   202,   202,   203,
-     203,   204,   204,   205,   205,   206,   206,   206,   207,   207,
-     208,   208,   209,   210,   210,   211,   212,   212,   213,   213,
-     214,   214,   214,   215,   215,   216,   216,   217,   217,   218,
-     218,   219,   219,   219,   220,   220,   220,   221,   221,   221,
-     222,   224,   236,   237,   238,   238,   238,   238,   238,   239,
-     241,   253,   254,   255,   255,   255,   255,   256,   258,   272,
-     273,   274,   274,   274,   274,   275,   275,   275,   277,   286,
-     295,   306,   315,   324,   333,   344,   353,   366,   381,   390,
-     399,   408,   417,   426,   435,   444,   453,   462,   471,   480,
-     489,   498,   507,   516,   523,   530,   539,   548,   557,   571,
-     580,   589,   598,   605,   612,   638,   646,   653,   660,   667,
-     674,   682,   690,   698,   705,   712,   721,   730,   739,   746,
-     753,   761,   769,   779,   789,   799,   812,   823,   831,   844,
-     853,   862,   871,   881,   891,   899,   912,   921,   929,   938,
-     946,   959,   968,   975,   985,   995,  1005,  1015,  1025,  1035,
-    1045,  1055,  1062,  1069,  1076,  1085,  1094,  1103,  1110,  1120,
-    1137,  1144,  1162,  1175,  1188,  1197,  1206,  1215,  1224,  1234,
-    1244,  1253,  1262,  1275,  1288,  1297,  1304,  1313,  1322,  1331,
-    1340,  1348,  1361,  1369,  1397,  1404,  1419,  1429,  1439,  1446,
-    1453,  1462,  1476,  1495,  1514,  1526,  1538,  1550,  1561,  1580,
-    1590,  1599,  1607,  1615,  1628,  1641,  1654,  1667,  1676,  1685,
-    1695,  1705,  1715,  1722,  1729,  1738,  1748,  1758,  1768,  1775,
-    1782,  1791,  1801,  1811,  1840,  1850,  1858,  1867,  1882,  1891,
-    1896,  1897,  1898,  1898,  1898,  1899,  1899,  1899,  1900,  1900,
-    1902,  1912,  1921,  1928,  1938,  1945,  1952,  1959,  1966,  1971,
-    1972,  1973,  1973,  1974,  1974,  1975,  1975,  1976,  1977,  1978,
-    1979,  1980,  1981,  1983,  1991,  1998,  2006,  2014,  2021,  2028,
-    2037,  2046,  2055,  2064,  2073,  2082,  2087,  2088,  2089,  2091,
-    2097,  2107,  2114,  2123
+       0,   146,   146,   146,   147,   147,   148,   148,   149,   149,
+     149,   151,   155,   160,   161,   162,   162,   162,   163,   163,
+     164,   164,   165,   165,   166,   166,   167,   167,   167,   168,
+     168,   168,   169,   169,   170,   170,   171,   171,   172,   172,
+     173,   173,   174,   174,   175,   175,   176,   176,   177,   177,
+     177,   178,   178,   178,   179,   179,   179,   180,   180,   181,
+     181,   182,   182,   183,   183,   184,   184,   184,   185,   185,
+     186,   186,   187,   187,   187,   188,   188,   189,   189,   190,
+     190,   191,   191,   191,   192,   192,   193,   193,   194,   194,
+     195,   195,   196,   196,   197,   197,   197,   198,   198,   199,
+     199,   199,   200,   200,   200,   201,   201,   201,   202,   202,
+     202,   202,   203,   203,   203,   204,   204,   204,   205,   205,
+     206,   206,   207,   207,   208,   208,   209,   209,   209,   210,
+     210,   211,   211,   212,   213,   213,   214,   215,   215,   216,
+     216,   217,   217,   217,   218,   218,   219,   219,   220,   220,
+     221,   221,   222,   222,   222,   223,   223,   223,   224,   224,
+     224,   225,   227,   239,   240,   241,   241,   241,   241,   241,
+     242,   244,   256,   257,   258,   258,   258,   258,   259,   261,
+     275,   276,   277,   277,   277,   277,   278,   278,   278,   280,
+     289,   298,   309,   318,   327,   336,   347,   356,   369,   384,
+     393,   402,   411,   420,   429,   438,   447,   456,   465,   474,
+     483,   492,   501,   510,   519,   526,   533,   542,   551,   560,
+     574,   583,   592,   601,   608,   615,   641,   649,   656,   663,
+     670,   677,   685,   693,   701,   708,   715,   724,   733,   742,
+     749,   756,   764,   772,   782,   792,   802,   815,   826,   834,
+     847,   856,   865,   874,   884,   894,   902,   915,   924,   932,
+     941,   949,   962,   971,   978,   988,   998,  1008,  1018,  1028,
+    1038,  1048,  1058,  1065,  1072,  1079,  1088,  1097,  1106,  1113,
+    1123,  1140,  1147,  1165,  1178,  1191,  1200,  1209,  1218,  1227,
+    1237,  1247,  1256,  1265,  1278,  1291,  1300,  1307,  1316,  1325,
+    1334,  1343,  1351,  1364,  1372,  1400,  1407,  1422,  1432,  1442,
+    1449,  1456,  1465,  1479,  1498,  1517,  1529,  1541,  1553,  1564,
+    1583,  1593,  1602,  1610,  1618,  1631,  1644,  1657,  1670,  1679,
+    1688,  1698,  1708,  1718,  1725,  1732,  1741,  1751,  1761,  1771,
+    1778,  1785,  1794,  1804,  1814,  1843,  1853,  1861,  1870,  1885,
+    1894,  1899,  1900,  1901,  1901,  1901,  1902,  1902,  1902,  1903,
+    1903,  1905,  1915,  1924,  1931,  1941,  1948,  1955,  1962,  1969,
+    1974,  1975,  1976,  1976,  1977,  1977,  1978,  1978,  1979,  1980,
+    1981,  1982,  1983,  1984,  1986,  1994,  2001,  2009,  2017,  2024,
+    2031,  2040,  2049,  2058,  2067,  2076,  2085,  2090,  2091,  2092,
+    2094,  2100,  2110,  2117,  2126,  2134,  2140,  2141,  2143,  2143,
+    2143,  2144,  2144,  2146,  2155,  2165,  2172,  2179
 };
 #endif
 
@@ -978,11 +991,13 @@ static const char *const yytname[] =
   "VAR_VIEW", "VAR_ACCESS_CONTROL_VIEW", "VAR_VIEW_FIRST",
   "VAR_SERVE_EXPIRED", "VAR_FAKE_DSA", "VAR_FAKE_SHA1", "VAR_LOG_IDENTITY",
   "VAR_HIDE_TRUSTANCHOR", "VAR_USE_SYSTEMD", "VAR_SHM_ENABLE",
-  "VAR_SHM_KEY", "$accept", "toplevelvars", "toplevelvar", "serverstart",
-  "contents_server", "content_server", "stubstart", "contents_stub",
-  "content_stub", "forwardstart", "contents_forward", "content_forward",
-  "viewstart", "contents_view", "content_view", "server_num_threads",
-  "server_verbosity", "server_statistics_interval",
+  "VAR_SHM_KEY", "VAR_DNSCRYPT", "VAR_DNSCRYPT_ENABLE",
+  "VAR_DNSCRYPT_PORT", "VAR_DNSCRYPT_PROVIDER", "VAR_DNSCRYPT_SECRET_KEY",
+  "VAR_DNSCRYPT_PROVIDER_CERT", "$accept", "toplevelvars", "toplevelvar",
+  "serverstart", "contents_server", "content_server", "stubstart",
+  "contents_stub", "content_stub", "forwardstart", "contents_forward",
+  "content_forward", "viewstart", "contents_view", "content_view",
+  "server_num_threads", "server_verbosity", "server_statistics_interval",
   "server_statistics_cumulative", "server_extended_statistics",
   "server_shm_enable", "server_shm_key", "server_port", "server_interface",
   "server_outgoing_interface", "server_outgoing_range",
@@ -1061,7 +1076,10 @@ static const char *const yytname[] =
   "dt_dnstap_log_forwarder_response_messages", "pythonstart",
   "contents_py", "content_py", "py_script",
   "server_disable_dnssec_lame_check", "server_log_identity",
-  "server_response_ip", "server_response_ip_data", YY_NULLPTR
+  "server_response_ip", "server_response_ip_data", "dnscstart",
+  "contents_dnsc", "content_dnsc", "dnsc_dnscrypt_enable",
+  "dnsc_dnscrypt_port", "dnsc_dnscrypt_provider",
+  "dnsc_dnscrypt_provider_cert", "dnsc_dnscrypt_secret_key", YY_NULLPTR
 };
 #endif
 
@@ -1089,14 +1107,15 @@ static const yytype_uint16 yytoknum[] =
      415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
      425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
      435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
-     445,   446,   447,   448,   449,   450,   451
+     445,   446,   447,   448,   449,   450,   451,   452,   453,   454,
+     455,   456,   457
 };
 # endif
 
-#define YYPACT_NINF -132
+#define YYPACT_NINF -157
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-132)))
+  (!!((Yystate) == (-157)))
 
 #define YYTABLE_NINF -1
 
@@ -1107,67 +1126,69 @@ static const yytype_uint16 yytoknum[] =
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    -132,     0,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,   137,   -39,
-     -35,   193,   -65,  -131,  -106,    -4,    -3,    -2,    -1,     2,
-      25,    26,    27,    28,    29,    30,    32,    33,    34,    35,
-      36,    38,    39,    40,    41,    42,    43,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    55,    56,    57,
-      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
-      68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
-      78,    79,    80,    82,    83,    85,    88,    90,    91,    92,
-      93,    94,    95,    96,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
-     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
-     124,   125,   126,   127,   128,   129,   130,   131,   132,   133,
-     134,   136,   138,   167,   168,   169,   170,   174,   175,   218,
-     219,   220,   221,   222,   224,   225,   226,   230,   234,   235,
-     261,   262,   272,   273,   274,   275,   276,   277,   278,   279,
-     280,   281,   282,   283,   313,   315,   324,   325,   326,   327,
-     328,   329,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-     330,   331,   332,   333,   334,   335,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,   336,   337,   338,   339,   340,  -132,  -132,
-    -132,  -132,  -132,  -132,   341,   344,   345,   346,   347,   348,
-     349,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,   350,
-     351,   352,   353,   354,   355,   356,   357,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,   358,   359,   360,   361,
-     362,   363,   364,   365,   366,   367,   368,   369,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,   370,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-     372,   373,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,   374,   375,   376,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,   377,   378,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,   379,   380,   381,
-     382,   383,   384,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,   385,  -132,  -132,   386,   387,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,   388,
-     389,   390,  -132,  -132,  -132,  -132,  -132,  -132,  -132
+    -157,     0,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+     186,   -38,   -34,   -39,   -64,  -130,  -105,  -156,    -3,    -2,
+      -1,     2,     3,    26,    29,    30,    38,    39,    40,    41,
+      42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
+      53,    54,    56,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      74,    75,    76,    77,    78,    79,    80,    82,    83,    84,
+      86,    89,    91,    92,    93,    94,    95,    96,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,   108,   109,
+     112,   113,   114,   115,   116,   117,   118,   119,   120,   121,
+     122,   123,   124,   125,   126,   127,   128,   129,   130,   131,
+     132,   133,   134,   136,   137,   138,   140,   141,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,   177,   178,   179,   180,   181,   182,   183,   184,
+     185,   216,   217,   218,   219,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,   223,   224,   225,   267,   268,   269,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,   270,   271,   272,   273,
+     274,  -157,  -157,  -157,  -157,  -157,  -157,   275,   279,   283,
+     284,   308,   309,   310,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,   311,   321,   322,   323,   324,   325,   326,   327,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,   328,
+     329,   330,   331,   332,   333,   362,   364,   373,   374,   375,
+     376,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,   377,  -157,  -157,   378,   379,   380,
+     381,   382,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,   383,   384,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,   385,   386,
+     387,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+     388,   389,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,   390,   391,   392,   393,   394,   395,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,   396,  -157,  -157,
+     397,   398,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,   399,   400,
+     401,  -157,  -157,  -157,  -157,  -157,  -157,  -157
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1175,9 +1196,9 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint16 yydefact[] =
 {
-       2,     0,     1,    11,   161,   170,   349,   395,   368,   178,
-       3,    13,   163,   172,   180,   351,   370,   397,     4,     5,
-       6,    10,     8,     9,     7,     0,     0,     0,     0,     0,
+       2,     0,     1,    12,   162,   171,   350,   396,   369,   179,
+     405,     3,    14,   164,   173,   181,   352,   371,   398,   407,
+       4,     5,     6,    10,     8,     9,     7,    11,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
@@ -1192,102 +1213,106 @@ static const yytype_uint16 yydefact[] =
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    12,    14,    15,    74,    77,    86,   157,   158,
-      16,    25,    65,    17,    78,    79,    36,    58,    73,    18,
-      19,    21,    22,    20,    23,    24,   109,   110,   111,   112,
-     113,   153,    75,    64,    90,   107,   108,    26,    27,    28,
-      29,    30,    66,    80,    81,    96,    52,    62,    53,    91,
-      46,    47,   160,    48,    49,   100,   104,   117,   125,   140,
-     101,    59,    31,    32,    33,    88,   118,   119,   120,    34,
-      35,    37,    38,    40,    41,    39,   123,    42,    43,    44,
-      50,    69,   105,    83,   124,    76,   136,    84,    85,   102,
-     103,    89,    45,    67,    70,    51,    54,    92,    93,    68,
-     137,    94,    55,    56,    57,   106,   150,   151,   159,    95,
-      63,    97,    98,    99,   138,    60,    61,    82,    71,    72,
-      87,   114,   115,   116,   121,   122,   141,   142,   144,   146,
-     147,   145,   148,   154,   126,   127,   130,   131,   128,   129,
-     132,   133,   135,   134,   139,   149,   143,   152,   155,   156,
-       0,     0,     0,     0,     0,     0,   162,   164,   165,   166,
-     168,   169,   167,     0,     0,     0,     0,     0,   171,   173,
-     174,   175,   176,   177,     0,     0,     0,     0,     0,     0,
-       0,   179,   181,   182,   185,   186,   183,   187,   184,     0,
-       0,     0,     0,     0,     0,     0,     0,   350,   352,   354,
-     353,   359,   355,   356,   357,   358,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   369,   371,
-     372,   373,   374,   375,   376,   377,   378,   379,   380,   381,
-     382,     0,   396,   398,   189,   188,   195,   198,   196,   204,
-     205,   208,   206,   207,   209,   210,   222,   223,   224,   225,
-     226,   247,   248,   249,   254,   255,   201,   256,   257,   260,
-     258,   259,   262,   263,   264,   277,   235,   236,   238,   239,
-     265,   280,   231,   233,   281,   287,   288,   289,   202,   246,
-     300,   301,   232,   295,   218,   197,   227,   278,   284,   266,
-       0,     0,   304,   203,   190,   217,   270,   191,   199,   200,
-     228,   229,   302,   268,   272,   273,   192,   305,   250,   276,
-     219,   234,   282,   283,   286,   294,   230,   298,   296,   297,
-     240,   245,   274,   275,   241,   242,   267,   290,   220,   221,
-     211,   212,   213,   214,   215,   306,   307,   308,   251,   252,
-     253,   261,   309,   310,     0,     0,     0,   269,   243,   400,
-     319,   323,   321,   320,   324,   322,     0,     0,   327,   328,
-     271,   285,   299,   329,   330,   244,   311,     0,     0,     0,
-       0,     0,     0,   291,   292,   293,   401,   237,   216,   193,
-     194,   331,   332,   333,   336,   335,   334,   337,   338,   339,
-     340,   341,   342,     0,   346,   347,     0,     0,   348,   360,
-     362,   361,   364,   365,   366,   367,   363,   383,   384,   385,
-     386,   387,   388,   389,   390,   391,   392,   393,   394,   399,
-     279,   303,   318,   402,   403,   325,   326,   312,   313,     0,
-       0,     0,   317,   343,   344,   345,   316,   314,   315
+       0,     0,     0,     0,     0,    13,    15,    16,    75,    78,
+      87,   158,   159,    17,    26,    66,    18,    79,    80,    37,
+      59,    74,    19,    20,    22,    23,    21,    24,    25,   110,
+     111,   112,   113,   114,   154,    76,    65,    91,   108,   109,
+      27,    28,    29,    30,    31,    67,    81,    82,    97,    53,
+      63,    54,    92,    47,    48,   161,    49,    50,   101,   105,
+     118,   126,   141,   102,    60,    32,    33,    34,    89,   119,
+     120,   121,    35,    36,    38,    39,    41,    42,    40,   124,
+      43,    44,    45,    51,    70,   106,    84,   125,    77,   137,
+      85,    86,   103,   104,    90,    46,    68,    71,    52,    55,
+      93,    94,    69,   138,    95,    56,    57,    58,   107,   151,
+     152,   160,    96,    64,    98,    99,   100,   139,    61,    62,
+      83,    72,    73,    88,   115,   116,   117,   122,   123,   142,
+     143,   145,   147,   148,   146,   149,   155,   127,   128,   131,
+     132,   129,   130,   133,   134,   136,   135,   140,   150,   144,
+     153,   156,   157,     0,     0,     0,     0,     0,     0,   163,
+     165,   166,   167,   169,   170,   168,     0,     0,     0,     0,
+       0,   172,   174,   175,   176,   177,   178,     0,     0,     0,
+       0,     0,     0,     0,   180,   182,   183,   186,   187,   184,
+     188,   185,     0,     0,     0,     0,     0,     0,     0,     0,
+     351,   353,   355,   354,   360,   356,   357,   358,   359,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   370,   372,   373,   374,   375,   376,   377,   378,   379,
+     380,   381,   382,   383,     0,   397,   399,     0,     0,     0,
+       0,     0,   406,   408,   409,   410,   412,   411,   190,   189,
+     196,   199,   197,   205,   206,   209,   207,   208,   210,   211,
+     223,   224,   225,   226,   227,   248,   249,   250,   255,   256,
+     202,   257,   258,   261,   259,   260,   263,   264,   265,   278,
+     236,   237,   239,   240,   266,   281,   232,   234,   282,   288,
+     289,   290,   203,   247,   301,   302,   233,   296,   219,   198,
+     228,   279,   285,   267,     0,     0,   305,   204,   191,   218,
+     271,   192,   200,   201,   229,   230,   303,   269,   273,   274,
+     193,   306,   251,   277,   220,   235,   283,   284,   287,   295,
+     231,   299,   297,   298,   241,   246,   275,   276,   242,   243,
+     268,   291,   221,   222,   212,   213,   214,   215,   216,   307,
+     308,   309,   252,   253,   254,   262,   310,   311,     0,     0,
+       0,   270,   244,   401,   320,   324,   322,   321,   325,   323,
+       0,     0,   328,   329,   272,   286,   300,   330,   331,   245,
+     312,     0,     0,     0,     0,     0,     0,   292,   293,   294,
+     402,   238,   217,   194,   195,   332,   333,   334,   337,   336,
+     335,   338,   339,   340,   341,   342,   343,     0,   347,   348,
+       0,     0,   349,   361,   363,   362,   365,   366,   367,   368,
+     364,   384,   385,   386,   387,   388,   389,   390,   391,   392,
+     393,   394,   395,   400,   413,   414,   415,   417,   416,   280,
+     304,   319,   403,   404,   326,   327,   313,   314,     0,     0,
+       0,   318,   344,   345,   346,   317,   315,   316
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,
-    -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132,  -132
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157,
+    -157,  -157,  -157,  -157,  -157,  -157,  -157,  -157
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     1,    10,    11,    18,   172,    12,    19,   326,    13,
-      20,   338,    14,    21,   351,   173,   174,   175,   176,   177,
-     178,   179,   180,   181,   182,   183,   184,   185,   186,   187,
-     188,   189,   190,   191,   192,   193,   194,   195,   196,   197,
-     198,   199,   200,   201,   202,   203,   204,   205,   206,   207,
-     208,   209,   210,   211,   212,   213,   214,   215,   216,   217,
-     218,   219,   220,   221,   222,   223,   224,   225,   226,   227,
-     228,   229,   230,   231,   232,   233,   234,   235,   236,   237,
-     238,   239,   240,   241,   242,   243,   244,   245,   246,   247,
-     248,   249,   250,   251,   252,   253,   254,   255,   256,   257,
-     258,   259,   260,   261,   262,   263,   264,   265,   266,   267,
-     268,   269,   270,   271,   272,   273,   274,   275,   276,   277,
-     278,   279,   280,   281,   282,   283,   284,   285,   286,   287,
-     288,   289,   290,   291,   292,   293,   294,   295,   296,   297,
-     298,   299,   300,   301,   302,   303,   304,   305,   306,   307,
-     308,   309,   310,   311,   312,   313,   314,   315,   327,   328,
-     329,   330,   331,   332,   339,   340,   341,   342,   343,   352,
-     353,   354,   355,   356,   357,   358,    15,    22,   367,   368,
-     369,   370,   371,   372,   373,   374,   375,    16,    23,   388,
-     389,   390,   391,   392,   393,   394,   395,   396,   397,   398,
-     399,   400,    17,    24,   402,   403,   316,   317,   318,   319
+      -1,     1,    11,    12,    20,   175,    13,    21,   329,    14,
+      22,   341,    15,    23,   354,   176,   177,   178,   179,   180,
+     181,   182,   183,   184,   185,   186,   187,   188,   189,   190,
+     191,   192,   193,   194,   195,   196,   197,   198,   199,   200,
+     201,   202,   203,   204,   205,   206,   207,   208,   209,   210,
+     211,   212,   213,   214,   215,   216,   217,   218,   219,   220,
+     221,   222,   223,   224,   225,   226,   227,   228,   229,   230,
+     231,   232,   233,   234,   235,   236,   237,   238,   239,   240,
+     241,   242,   243,   244,   245,   246,   247,   248,   249,   250,
+     251,   252,   253,   254,   255,   256,   257,   258,   259,   260,
+     261,   262,   263,   264,   265,   266,   267,   268,   269,   270,
+     271,   272,   273,   274,   275,   276,   277,   278,   279,   280,
+     281,   282,   283,   284,   285,   286,   287,   288,   289,   290,
+     291,   292,   293,   294,   295,   296,   297,   298,   299,   300,
+     301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
+     311,   312,   313,   314,   315,   316,   317,   318,   330,   331,
+     332,   333,   334,   335,   342,   343,   344,   345,   346,   355,
+     356,   357,   358,   359,   360,   361,    16,    24,   370,   371,
+     372,   373,   374,   375,   376,   377,   378,    17,    25,   391,
+     392,   393,   394,   395,   396,   397,   398,   399,   400,   401,
+     402,   403,    18,    26,   405,   406,   319,   320,   321,   322,
+      19,    27,   412,   413,   414,   415,   416,   417
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1295,139 +1320,142 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_uint16 yytable[] =
 {
-       2,   320,   401,   321,   322,   333,   404,   405,   406,   407,
-       0,     3,   408,   334,   335,   376,   377,   378,   379,   380,
-     381,   382,   383,   384,   385,   386,   387,   359,   360,   361,
-     362,   363,   364,   365,   366,   409,   410,   411,   412,   413,
-     414,     4,   415,   416,   417,   418,   419,     5,   420,   421,
-     422,   423,   424,   425,   426,   427,   428,   429,   430,   431,
-     432,   433,   434,   435,   323,   436,   437,   438,   439,   440,
-     441,   442,   443,   444,   445,   446,   447,   448,   449,   450,
-     451,   452,   453,   454,   455,   456,   457,   458,   459,   460,
-     461,     6,   462,   463,   324,   464,   325,   336,   465,   337,
-     466,   467,   468,   469,   470,   471,   472,     7,   473,   474,
-     475,   476,   477,   478,   479,   480,   481,   482,   483,   484,
-     485,   486,   487,   488,   489,   490,   491,   492,   493,   494,
-     495,   496,   497,   498,   499,   500,   501,   502,   503,   504,
-     505,   506,   507,   508,   509,     8,   510,     0,   511,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    42,    43,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,   512,   513,   514,
-     515,    53,    54,    55,   516,   517,     9,    56,    57,    58,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,    73,    74,    75,    76,    77,    78,
-      79,    80,    81,    82,    83,    84,    85,    86,    87,    88,
-      89,    90,    91,    92,    93,    94,    95,    96,   518,   519,
-     520,   521,   522,   344,   523,   524,   525,    97,    98,    99,
-     526,   100,   101,   102,   527,   528,   103,   104,   105,   106,
-     107,   108,   109,   110,   111,   112,   113,   114,   115,   116,
-     117,   118,   119,   120,   121,   122,   123,   124,   125,   345,
-     346,   529,   530,   126,   127,   128,   129,   130,   131,   132,
-     133,   134,   531,   532,   533,   534,   535,   536,   537,   538,
-     539,   540,   541,   542,   347,   135,   136,   137,   138,   139,
-     140,   141,   142,   143,   144,   145,   146,   147,   148,   149,
-     150,   151,   152,   153,   154,   155,   156,   157,   158,   159,
-     160,   161,   162,   543,   163,   544,   164,   165,   166,   167,
-     168,   169,   170,   171,   545,   546,   547,   548,   549,   550,
-     551,   552,   553,   554,   555,   556,   557,   558,   559,   560,
-     561,   562,   348,   349,   563,   564,   565,   566,   567,   568,
-     569,   570,   571,   572,   573,   574,   575,   576,   577,   578,
-     579,   580,   581,   582,   583,   584,   585,   586,   587,   588,
-     589,   350,   590,   591,   592,   593,   594,   595,   596,   597,
-     598,   599,   600,   601,   602,   603,   604,   605,   606,   607,
-     608
+       2,   347,   323,   404,   324,   325,   336,   418,   419,   420,
+       0,     3,   421,   422,   337,   338,   379,   380,   381,   382,
+     383,   384,   385,   386,   387,   388,   389,   390,   362,   363,
+     364,   365,   366,   367,   368,   369,   423,   348,   349,   424,
+     425,     4,   407,   408,   409,   410,   411,     5,   426,   427,
+     428,   429,   430,   431,   432,   433,   434,   435,   436,   437,
+     438,   439,   350,   440,   441,   326,   442,   443,   444,   445,
+     446,   447,   448,   449,   450,   451,   452,   453,   454,   455,
+     456,   457,   458,   459,   460,   461,   462,   463,   464,   465,
+     466,     6,   467,   468,   469,   327,   470,   328,   339,   471,
+     340,   472,   473,   474,   475,   476,   477,     7,   478,   479,
+     480,   481,   482,   483,   484,   485,   486,   487,   488,   489,
+     351,   352,   490,   491,   492,   493,   494,   495,   496,   497,
+     498,   499,   500,   501,   502,   503,   504,   505,   506,   507,
+     508,   509,   510,   511,   512,     8,   513,   514,   515,   353,
+     516,   517,   518,   519,   520,   521,   522,   523,   524,   525,
+     526,   527,   528,   529,   530,   531,   532,   533,   534,   535,
+     536,   537,   538,   539,   540,   541,   542,   543,   544,   545,
+     546,   547,   548,   549,   550,   551,     9,   552,   553,   554,
+     555,   556,   557,   558,   559,   560,     0,    10,    28,    29,
+      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
+      40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,   561,   562,   563,   564,
+      56,    57,    58,   565,   566,   567,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
+      83,    84,    85,    86,    87,    88,    89,    90,    91,    92,
+      93,    94,    95,    96,    97,    98,    99,   568,   569,   570,
+     571,   572,   573,   574,   575,   576,   100,   101,   102,   577,
+     103,   104,   105,   578,   579,   106,   107,   108,   109,   110,
+     111,   112,   113,   114,   115,   116,   117,   118,   119,   120,
+     121,   122,   123,   124,   125,   126,   127,   128,   580,   581,
+     582,   583,   129,   130,   131,   132,   133,   134,   135,   136,
+     137,   584,   585,   586,   587,   588,   589,   590,   591,   592,
+     593,   594,   595,   596,   138,   139,   140,   141,   142,   143,
+     144,   145,   146,   147,   148,   149,   150,   151,   152,   153,
+     154,   155,   156,   157,   158,   159,   160,   161,   162,   163,
+     164,   165,   597,   166,   598,   167,   168,   169,   170,   171,
+     172,   173,   174,   599,   600,   601,   602,   603,   604,   605,
+     606,   607,   608,   609,   610,   611,   612,   613,   614,   615,
+     616,   617,   618,   619,   620,   621,   622,   623,   624,   625,
+     626,   627
 };
 
 static const yytype_int16 yycheck[] =
 {
-       0,    40,   108,    42,    43,    40,    10,    10,    10,    10,
-      -1,    11,    10,    48,    49,   146,   147,   148,   149,   150,
-     151,   152,   153,   154,   155,   156,   157,    92,    93,    94,
-      95,    96,    97,    98,    99,    10,    10,    10,    10,    10,
-      10,    41,    10,    10,    10,    10,    10,    47,    10,    10,
+       0,    40,    40,   108,    42,    43,    40,    10,    10,    10,
+      -1,    11,    10,    10,    48,    49,   146,   147,   148,   149,
+     150,   151,   152,   153,   154,   155,   156,   157,    92,    93,
+      94,    95,    96,    97,    98,    99,    10,    76,    77,    10,
+      10,    41,   198,   199,   200,   201,   202,    47,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,   103,    10,    10,    10,    10,    10,
+      10,    10,   101,    10,    10,   103,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    91,    10,    10,   133,    10,   135,   132,    10,   134,
-      10,    10,    10,    10,    10,    10,    10,   107,    10,    10,
+      10,    91,    10,    10,    10,   133,    10,   135,   132,    10,
+     134,    10,    10,    10,    10,    10,    10,   107,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
+     159,   160,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
+      10,    10,    10,    10,    10,   145,    10,    10,    10,   188,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,   145,    10,    -1,    10,    12,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    10,    10,    10,
-      10,    44,    45,    46,    10,    10,   186,    50,    51,    52,
-      53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
-      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
-      73,    74,    75,    76,    77,    78,    79,    80,    81,    82,
-      83,    84,    85,    86,    87,    88,    89,    90,    10,    10,
-      10,    10,    10,    40,    10,    10,    10,   100,   101,   102,
-      10,   104,   105,   106,    10,    10,   109,   110,   111,   112,
-     113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
-     123,   124,   125,   126,   127,   128,   129,   130,   131,    76,
-      77,    10,    10,   136,   137,   138,   139,   140,   141,   142,
-     143,   144,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,   101,   158,   159,   160,   161,   162,
-     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-     173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
-     183,   184,   185,    10,   187,    10,   189,   190,   191,   192,
-     193,   194,   195,   196,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,   159,   160,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
+      10,    10,    10,    10,    10,    10,   186,    10,    10,    10,
+      10,    10,    10,    10,    10,    10,    -1,   197,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    10,    10,    10,    10,
+      44,    45,    46,    10,    10,    10,    50,    51,    52,    53,
+      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
+      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
+      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
+      84,    85,    86,    87,    88,    89,    90,    10,    10,    10,
+      10,    10,    10,    10,    10,    10,   100,   101,   102,    10,
+     104,   105,   106,    10,    10,   109,   110,   111,   112,   113,
+     114,   115,   116,   117,   118,   119,   120,   121,   122,   123,
+     124,   125,   126,   127,   128,   129,   130,   131,    10,    10,
+      10,    10,   136,   137,   138,   139,   140,   141,   142,   143,
+     144,    10,    10,    10,    10,    10,    10,    10,    10,    10,
+      10,    10,    10,    10,   158,   159,   160,   161,   162,   163,
+     164,   165,   166,   167,   168,   169,   170,   171,   172,   173,
+     174,   175,   176,   177,   178,   179,   180,   181,   182,   183,
+     184,   185,    10,   187,    10,   189,   190,   191,   192,   193,
+     194,   195,   196,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,   188,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10
+      10,    10
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
      symbol of state STATE-NUM.  */
 static const yytype_uint16 yystos[] =
 {
-       0,   198,     0,    11,    41,    47,    91,   107,   145,   186,
-     199,   200,   203,   206,   209,   373,   384,   399,   201,   204,
-     207,   210,   374,   385,   400,    12,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
-      37,    38,    39,    44,    45,    46,    50,    51,    52,    53,
-      54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
-      64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
-      74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
-      84,    85,    86,    87,    88,    89,    90,   100,   101,   102,
-     104,   105,   106,   109,   110,   111,   112,   113,   114,   115,
-     116,   117,   118,   119,   120,   121,   122,   123,   124,   125,
-     126,   127,   128,   129,   130,   131,   136,   137,   138,   139,
-     140,   141,   142,   143,   144,   158,   159,   160,   161,   162,
-     163,   164,   165,   166,   167,   168,   169,   170,   171,   172,
-     173,   174,   175,   176,   177,   178,   179,   180,   181,   182,
-     183,   184,   185,   187,   189,   190,   191,   192,   193,   194,
-     195,   196,   202,   212,   213,   214,   215,   216,   217,   218,
-     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
-     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
-     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
-     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
-     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
-     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
-     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
-     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
-     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
-     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
-     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
-     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
-     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
-     349,   350,   351,   352,   353,   354,   403,   404,   405,   406,
-      40,    42,    43,   103,   133,   135,   205,   355,   356,   357,
-     358,   359,   360,    40,    48,    49,   132,   134,   208,   361,
-     362,   363,   364,   365,    40,    76,    77,   101,   159,   160,
-     188,   211,   366,   367,   368,   369,   370,   371,   372,    92,
-      93,    94,    95,    96,    97,    98,    99,   375,   376,   377,
-     378,   379,   380,   381,   382,   383,   146,   147,   148,   149,
-     150,   151,   152,   153,   154,   155,   156,   157,   386,   387,
-     388,   389,   390,   391,   392,   393,   394,   395,   396,   397,
-     398,   108,   401,   402,    10,    10,    10,    10,    10,    10,
+       0,   204,     0,    11,    41,    47,    91,   107,   145,   186,
+     197,   205,   206,   209,   212,   215,   379,   390,   405,   413,
+     207,   210,   213,   216,   380,   391,   406,   414,    12,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    36,    37,    38,    39,    44,    45,    46,    50,
+      51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
+      81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
+     100,   101,   102,   104,   105,   106,   109,   110,   111,   112,
+     113,   114,   115,   116,   117,   118,   119,   120,   121,   122,
+     123,   124,   125,   126,   127,   128,   129,   130,   131,   136,
+     137,   138,   139,   140,   141,   142,   143,   144,   158,   159,
+     160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
+     170,   171,   172,   173,   174,   175,   176,   177,   178,   179,
+     180,   181,   182,   183,   184,   185,   187,   189,   190,   191,
+     192,   193,   194,   195,   196,   208,   218,   219,   220,   221,
+     222,   223,   224,   225,   226,   227,   228,   229,   230,   231,
+     232,   233,   234,   235,   236,   237,   238,   239,   240,   241,
+     242,   243,   244,   245,   246,   247,   248,   249,   250,   251,
+     252,   253,   254,   255,   256,   257,   258,   259,   260,   261,
+     262,   263,   264,   265,   266,   267,   268,   269,   270,   271,
+     272,   273,   274,   275,   276,   277,   278,   279,   280,   281,
+     282,   283,   284,   285,   286,   287,   288,   289,   290,   291,
+     292,   293,   294,   295,   296,   297,   298,   299,   300,   301,
+     302,   303,   304,   305,   306,   307,   308,   309,   310,   311,
+     312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
+     322,   323,   324,   325,   326,   327,   328,   329,   330,   331,
+     332,   333,   334,   335,   336,   337,   338,   339,   340,   341,
+     342,   343,   344,   345,   346,   347,   348,   349,   350,   351,
+     352,   353,   354,   355,   356,   357,   358,   359,   360,   409,
+     410,   411,   412,    40,    42,    43,   103,   133,   135,   211,
+     361,   362,   363,   364,   365,   366,    40,    48,    49,   132,
+     134,   214,   367,   368,   369,   370,   371,    40,    76,    77,
+     101,   159,   160,   188,   217,   372,   373,   374,   375,   376,
+     377,   378,    92,    93,    94,    95,    96,    97,    98,    99,
+     381,   382,   383,   384,   385,   386,   387,   388,   389,   146,
+     147,   148,   149,   150,   151,   152,   153,   154,   155,   156,
+     157,   392,   393,   394,   395,   396,   397,   398,   399,   400,
+     401,   402,   403,   404,   108,   407,   408,   198,   199,   200,
+     201,   202,   415,   416,   417,   418,   419,   420,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
@@ -1447,60 +1475,62 @@ static const yytype_uint16 yystos[] =
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
       10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
-      10,    10,    10,    10,    10,    10,    10,    10,    10
+      10,    10,    10,    10,    10,    10,    10,    10,    10,    10,
+      10,    10,    10,    10,    10,    10,    10,    10
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint16 yyr1[] =
 {
-       0,   197,   198,   198,   199,   199,   199,   199,   199,   199,
-     199,   200,   201,   201,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   202,   202,   202,   202,   202,   202,   202,   202,   202,
-     202,   203,   204,   204,   205,   205,   205,   205,   205,   205,
-     206,   207,   207,   208,   208,   208,   208,   208,   209,   210,
-     210,   211,   211,   211,   211,   211,   211,   211,   212,   213,
-     214,   215,   216,   217,   218,   219,   220,   221,   222,   223,
-     224,   225,   226,   227,   228,   229,   230,   231,   232,   233,
-     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
-     244,   245,   246,   247,   248,   249,   250,   251,   252,   253,
-     254,   255,   256,   257,   258,   259,   260,   261,   262,   263,
-     264,   265,   266,   267,   268,   269,   270,   271,   272,   273,
-     274,   275,   276,   277,   278,   279,   280,   281,   282,   283,
-     284,   285,   286,   287,   288,   289,   290,   291,   292,   293,
-     294,   295,   296,   297,   298,   299,   300,   301,   302,   303,
-     304,   305,   306,   307,   308,   309,   310,   311,   312,   313,
-     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
-     324,   325,   326,   327,   328,   329,   330,   331,   332,   333,
-     334,   335,   336,   337,   338,   339,   340,   341,   342,   343,
-     344,   345,   346,   347,   348,   349,   350,   351,   352,   353,
-     354,   355,   356,   357,   358,   359,   360,   361,   362,   363,
-     364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
-     374,   374,   375,   375,   375,   375,   375,   375,   375,   375,
-     376,   377,   378,   379,   380,   381,   382,   383,   384,   385,
-     385,   386,   386,   386,   386,   386,   386,   386,   386,   386,
-     386,   386,   386,   387,   388,   389,   390,   391,   392,   393,
-     394,   395,   396,   397,   398,   399,   400,   400,   401,   402,
-     403,   404,   405,   406
+       0,   203,   204,   204,   205,   205,   205,   205,   205,   205,
+     205,   205,   206,   207,   207,   208,   208,   208,   208,   208,
+     208,   208,   208,   208,   208,   208,   208,   208,   208,   208,
+     208,   208,   208,   208,   208,   208,   208,   208,   208,   208,
+     208,   208,   208,   208,   208,   208,   208,   208,   208,   208,
+     208,   208,   208,   208,   208,   208,   208,   208,   208,   208,
+     208,   208,   208,   208,   208,   208,   208,   208,   208,   208,
+     208,   208,   208,   208,   208,   208,   208,   208,   208,   208,
+     208,   208,   208,   208,   208,   208,   208,   208,   208,   208,
+     208,   208,   208,   208,   208,   208,   208,   208,   208,   208,
+     208,   208,   208,   208,   208,   208,   208,   208,   208,   208,
+     208,   208,   208,   208,   208,   208,   208,   208,   208,   208,
+     208,   208,   208,   208,   208,   208,   208,   208,   208,   208,
+     208,   208,   208,   208,   208,   208,   208,   208,   208,   208,
+     208,   208,   208,   208,   208,   208,   208,   208,   208,   208,
+     208,   208,   208,   208,   208,   208,   208,   208,   208,   208,
+     208,   208,   209,   210,   210,   211,   211,   211,   211,   211,
+     211,   212,   213,   213,   214,   214,   214,   214,   214,   215,
+     216,   216,   217,   217,   217,   217,   217,   217,   217,   218,
+     219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
+     229,   230,   231,   232,   233,   234,   235,   236,   237,   238,
+     239,   240,   241,   242,   243,   244,   245,   246,   247,   248,
+     249,   250,   251,   252,   253,   254,   255,   256,   257,   258,
+     259,   260,   261,   262,   263,   264,   265,   266,   267,   268,
+     269,   270,   271,   272,   273,   274,   275,   276,   277,   278,
+     279,   280,   281,   282,   283,   284,   285,   286,   287,   288,
+     289,   290,   291,   292,   293,   294,   295,   296,   297,   298,
+     299,   300,   301,   302,   303,   304,   305,   306,   307,   308,
+     309,   310,   311,   312,   313,   314,   315,   316,   317,   318,
+     319,   320,   321,   322,   323,   324,   325,   326,   327,   328,
+     329,   330,   331,   332,   333,   334,   335,   336,   337,   338,
+     339,   340,   341,   342,   343,   344,   345,   346,   347,   348,
+     349,   350,   351,   352,   353,   354,   355,   356,   357,   358,
+     359,   360,   361,   362,   363,   364,   365,   366,   367,   368,
+     369,   370,   371,   372,   373,   374,   375,   376,   377,   378,
+     379,   380,   380,   381,   381,   381,   381,   381,   381,   381,
+     381,   382,   383,   384,   385,   386,   387,   388,   389,   390,
+     391,   391,   392,   392,   392,   392,   392,   392,   392,   392,
+     392,   392,   392,   392,   393,   394,   395,   396,   397,   398,
+     399,   400,   401,   402,   403,   404,   405,   406,   406,   407,
+     408,   409,   410,   411,   412,   413,   414,   414,   415,   415,
+     415,   415,   415,   416,   417,   418,   419,   420
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
 static const yytype_uint8 yyr2[] =
 {
        0,     2,     0,     2,     2,     2,     2,     2,     2,     2,
-       2,     1,     2,     0,     1,     1,     1,     1,     1,     1,
+       2,     2,     1,     2,     0,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
@@ -1515,9 +1545,9 @@ static const yytype_uint8 yyr2[] =
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
+       1,     1,     1,     2,     0,     1,     1,     1,     1,     1,
        1,     1,     2,     0,     1,     1,     1,     1,     1,     1,
-       1,     2,     0,     1,     1,     1,     1,     1,     1,     2,
-       0,     1,     1,     1,     1,     1,     1,     1,     2,     2,
+       2,     0,     1,     1,     1,     1,     1,     1,     1,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -1526,20 +1556,21 @@ static const yytype_uint8 yyr2[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     2,     2,     2,     2,     3,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
+       3,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     3,     2,     2,     2,     2,     2,     2,
-       2,     2,     3,     3,     4,     4,     4,     3,     3,     2,
-       2,     2,     2,     2,     2,     3,     3,     2,     2,     2,
+       2,     2,     2,     2,     3,     2,     2,     2,     2,     2,
+       2,     2,     2,     3,     3,     4,     4,     4,     3,     3,
+       2,     2,     2,     2,     2,     2,     3,     3,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     3,     3,     3,     2,     2,     2,     1,
+       2,     2,     2,     2,     3,     3,     3,     2,     2,     2,
+       1,     2,     0,     1,     1,     1,     1,     1,     1,     1,
+       1,     2,     2,     2,     2,     2,     2,     2,     2,     1,
        2,     0,     1,     1,     1,     1,     1,     1,     1,     1,
-       2,     2,     2,     2,     2,     2,     2,     2,     1,     2,
-       0,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     1,     2,     0,     1,     2,
-       2,     2,     3,     3
+       1,     1,     1,     1,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     1,     2,     0,     1,
+       2,     2,     2,     3,     3,     1,     2,     0,     1,     1,
+       1,     1,     1,     2,     2,     2,     2,     2
 };
 
 
@@ -2215,16 +2246,16 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 11:
-#line 153 "./util/configparser.y" /* yacc.c:1646  */
+        case 12:
+#line 156 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("\nP(server:)\n")); 
        }
-#line 2224 "util/configparser.c" /* yacc.c:1646  */
+#line 2255 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 161:
-#line 225 "./util/configparser.y" /* yacc.c:1646  */
+  case 162:
+#line 228 "./util/configparser.y" /* yacc.c:1646  */
     {
                struct config_stub* s;
                OUTYY(("\nP(stub_zone:)\n")); 
@@ -2235,11 +2266,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2239 "util/configparser.c" /* yacc.c:1646  */
+#line 2270 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 170:
-#line 242 "./util/configparser.y" /* yacc.c:1646  */
+  case 171:
+#line 245 "./util/configparser.y" /* yacc.c:1646  */
     {
                struct config_stub* s;
                OUTYY(("\nP(forward_zone:)\n")); 
@@ -2250,11 +2281,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2254 "util/configparser.c" /* yacc.c:1646  */
+#line 2285 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 178:
-#line 259 "./util/configparser.y" /* yacc.c:1646  */
+  case 179:
+#line 262 "./util/configparser.y" /* yacc.c:1646  */
     {
                struct config_view* s;
                OUTYY(("\nP(view:)\n")); 
@@ -2267,11 +2298,11 @@ yyreduce:
                } else 
                        yyerror("out of memory");
        }
-#line 2271 "util/configparser.c" /* yacc.c:1646  */
+#line 2302 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 188:
-#line 278 "./util/configparser.y" /* yacc.c:1646  */
+  case 189:
+#line 281 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_num_threads:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2279,11 +2310,11 @@ yyreduce:
                else cfg_parser->cfg->num_threads = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2283 "util/configparser.c" /* yacc.c:1646  */
+#line 2314 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 189:
-#line 287 "./util/configparser.y" /* yacc.c:1646  */
+  case 190:
+#line 290 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_verbosity:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2291,11 +2322,11 @@ yyreduce:
                else cfg_parser->cfg->verbosity = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2295 "util/configparser.c" /* yacc.c:1646  */
+#line 2326 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 190:
-#line 296 "./util/configparser.y" /* yacc.c:1646  */
+  case 191:
+#line 299 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_statistics_interval:%s)\n", (yyvsp[0].str))); 
                if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
@@ -2305,11 +2336,11 @@ yyreduce:
                else cfg_parser->cfg->stat_interval = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2309 "util/configparser.c" /* yacc.c:1646  */
+#line 2340 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 191:
-#line 307 "./util/configparser.y" /* yacc.c:1646  */
+  case 192:
+#line 310 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_statistics_cumulative:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2317,11 +2348,11 @@ yyreduce:
                else cfg_parser->cfg->stat_cumulative = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2321 "util/configparser.c" /* yacc.c:1646  */
+#line 2352 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 192:
-#line 316 "./util/configparser.y" /* yacc.c:1646  */
+  case 193:
+#line 319 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_extended_statistics:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2329,11 +2360,11 @@ yyreduce:
                else cfg_parser->cfg->stat_extended = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2333 "util/configparser.c" /* yacc.c:1646  */
+#line 2364 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 193:
-#line 325 "./util/configparser.y" /* yacc.c:1646  */
+  case 194:
+#line 328 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_shm_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2341,11 +2372,11 @@ yyreduce:
                else cfg_parser->cfg->shm_enable = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2345 "util/configparser.c" /* yacc.c:1646  */
+#line 2376 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 194:
-#line 334 "./util/configparser.y" /* yacc.c:1646  */
+  case 195:
+#line 337 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_shm_key:%s)\n", (yyvsp[0].str))); 
                if(strcmp((yyvsp[0].str), "") == 0 || strcmp((yyvsp[0].str), "0") == 0)
@@ -2355,11 +2386,11 @@ yyreduce:
                else cfg_parser->cfg->shm_key = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2359 "util/configparser.c" /* yacc.c:1646  */
+#line 2390 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 195:
-#line 345 "./util/configparser.y" /* yacc.c:1646  */
+  case 196:
+#line 348 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2367,11 +2398,11 @@ yyreduce:
                else cfg_parser->cfg->port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2371 "util/configparser.c" /* yacc.c:1646  */
+#line 2402 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 196:
-#line 354 "./util/configparser.y" /* yacc.c:1646  */
+  case 197:
+#line 357 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_ifs == 0)
@@ -2383,11 +2414,11 @@ yyreduce:
                else
                        cfg_parser->cfg->ifs[cfg_parser->cfg->num_ifs++] = (yyvsp[0].str);
        }
-#line 2387 "util/configparser.c" /* yacc.c:1646  */
+#line 2418 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 197:
-#line 367 "./util/configparser.y" /* yacc.c:1646  */
+  case 198:
+#line 370 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_interface:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->num_out_ifs == 0)
@@ -2401,11 +2432,11 @@ yyreduce:
                        cfg_parser->cfg->out_ifs[
                                cfg_parser->cfg->num_out_ifs++] = (yyvsp[0].str);
        }
-#line 2405 "util/configparser.c" /* yacc.c:1646  */
+#line 2436 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 198:
-#line 382 "./util/configparser.y" /* yacc.c:1646  */
+  case 199:
+#line 385 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_range:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2413,11 +2444,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_ports = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2417 "util/configparser.c" /* yacc.c:1646  */
+#line 2448 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 199:
-#line 391 "./util/configparser.y" /* yacc.c:1646  */
+  case 200:
+#line 394 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_port_permit:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 1, 
@@ -2425,11 +2456,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 2429 "util/configparser.c" /* yacc.c:1646  */
+#line 2460 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 200:
-#line 400 "./util/configparser.y" /* yacc.c:1646  */
+  case 201:
+#line 403 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_port_avoid:%s)\n", (yyvsp[0].str)));
                if(!cfg_mark_ports((yyvsp[0].str), 0, 
@@ -2437,11 +2468,11 @@ yyreduce:
                        yyerror("port number or range (\"low-high\") expected");
                free((yyvsp[0].str));
        }
-#line 2441 "util/configparser.c" /* yacc.c:1646  */
+#line 2472 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 201:
-#line 409 "./util/configparser.y" /* yacc.c:1646  */
+  case 202:
+#line 412 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2449,11 +2480,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2453 "util/configparser.c" /* yacc.c:1646  */
+#line 2484 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 202:
-#line 418 "./util/configparser.y" /* yacc.c:1646  */
+  case 203:
+#line 421 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_incoming_num_tcp:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2461,11 +2492,11 @@ yyreduce:
                else cfg_parser->cfg->incoming_num_tcp = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2465 "util/configparser.c" /* yacc.c:1646  */
+#line 2496 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 203:
-#line 427 "./util/configparser.y" /* yacc.c:1646  */
+  case 204:
+#line 430 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_interface_automatic:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2473,11 +2504,11 @@ yyreduce:
                else cfg_parser->cfg->if_automatic = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2477 "util/configparser.c" /* yacc.c:1646  */
+#line 2508 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 204:
-#line 436 "./util/configparser.y" /* yacc.c:1646  */
+  case 205:
+#line 439 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_ip4:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2485,11 +2516,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip4 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2489 "util/configparser.c" /* yacc.c:1646  */
+#line 2520 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 205:
-#line 445 "./util/configparser.y" /* yacc.c:1646  */
+  case 206:
+#line 448 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2497,11 +2528,11 @@ yyreduce:
                else cfg_parser->cfg->do_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2501 "util/configparser.c" /* yacc.c:1646  */
+#line 2532 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 206:
-#line 454 "./util/configparser.y" /* yacc.c:1646  */
+  case 207:
+#line 457 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_udp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2509,11 +2540,11 @@ yyreduce:
                else cfg_parser->cfg->do_udp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2513 "util/configparser.c" /* yacc.c:1646  */
+#line 2544 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 207:
-#line 463 "./util/configparser.y" /* yacc.c:1646  */
+  case 208:
+#line 466 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_tcp:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2521,11 +2552,11 @@ yyreduce:
                else cfg_parser->cfg->do_tcp = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2525 "util/configparser.c" /* yacc.c:1646  */
+#line 2556 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 208:
-#line 472 "./util/configparser.y" /* yacc.c:1646  */
+  case 209:
+#line 475 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_prefer_ip6:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2533,11 +2564,11 @@ yyreduce:
                else cfg_parser->cfg->prefer_ip6 = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2537 "util/configparser.c" /* yacc.c:1646  */
+#line 2568 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 209:
-#line 481 "./util/configparser.y" /* yacc.c:1646  */
+  case 210:
+#line 484 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_tcp_mss:%s)\n", (yyvsp[0].str)));
                 if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2545,11 +2576,11 @@ yyreduce:
                 else cfg_parser->cfg->tcp_mss = atoi((yyvsp[0].str));
                 free((yyvsp[0].str));
        }
-#line 2549 "util/configparser.c" /* yacc.c:1646  */
+#line 2580 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 210:
-#line 490 "./util/configparser.y" /* yacc.c:1646  */
+  case 211:
+#line 493 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_outgoing_tcp_mss:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -2557,11 +2588,11 @@ yyreduce:
                else cfg_parser->cfg->outgoing_tcp_mss = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2561 "util/configparser.c" /* yacc.c:1646  */
+#line 2592 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 211:
-#line 499 "./util/configparser.y" /* yacc.c:1646  */
+  case 212:
+#line 502 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_tcp_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2569,11 +2600,11 @@ yyreduce:
                else cfg_parser->cfg->tcp_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2573 "util/configparser.c" /* yacc.c:1646  */
+#line 2604 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 212:
-#line 508 "./util/configparser.y" /* yacc.c:1646  */
+  case 213:
+#line 511 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2581,31 +2612,31 @@ yyreduce:
                else cfg_parser->cfg->ssl_upstream = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2585 "util/configparser.c" /* yacc.c:1646  */
+#line 2616 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 213:
-#line 517 "./util/configparser.y" /* yacc.c:1646  */
+  case 214:
+#line 520 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_service_key:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->ssl_service_key);
                cfg_parser->cfg->ssl_service_key = (yyvsp[0].str);
        }
-#line 2595 "util/configparser.c" /* yacc.c:1646  */
+#line 2626 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 214:
-#line 524 "./util/configparser.y" /* yacc.c:1646  */
+  case 215:
+#line 527 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_service_pem:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->ssl_service_pem);
                cfg_parser->cfg->ssl_service_pem = (yyvsp[0].str);
        }
-#line 2605 "util/configparser.c" /* yacc.c:1646  */
+#line 2636 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 215:
-#line 531 "./util/configparser.y" /* yacc.c:1646  */
+  case 216:
+#line 534 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ssl_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2613,11 +2644,11 @@ yyreduce:
                else cfg_parser->cfg->ssl_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2617 "util/configparser.c" /* yacc.c:1646  */
+#line 2648 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 216:
-#line 540 "./util/configparser.y" /* yacc.c:1646  */
+  case 217:
+#line 543 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_use_systemd:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2625,11 +2656,11 @@ yyreduce:
                else cfg_parser->cfg->use_systemd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2629 "util/configparser.c" /* yacc.c:1646  */
+#line 2660 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 217:
-#line 549 "./util/configparser.y" /* yacc.c:1646  */
+  case 218:
+#line 552 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_daemonize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2637,11 +2668,11 @@ yyreduce:
                else cfg_parser->cfg->do_daemonize = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2641 "util/configparser.c" /* yacc.c:1646  */
+#line 2672 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 218:
-#line 558 "./util/configparser.y" /* yacc.c:1646  */
+  case 219:
+#line 561 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_use_syslog:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2654,11 +2685,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 2658 "util/configparser.c" /* yacc.c:1646  */
+#line 2689 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 219:
-#line 572 "./util/configparser.y" /* yacc.c:1646  */
+  case 220:
+#line 575 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_log_time_ascii:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2666,11 +2697,11 @@ yyreduce:
                else cfg_parser->cfg->log_time_ascii = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2670 "util/configparser.c" /* yacc.c:1646  */
+#line 2701 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 220:
-#line 581 "./util/configparser.y" /* yacc.c:1646  */
+  case 221:
+#line 584 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_log_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2678,11 +2709,11 @@ yyreduce:
                else cfg_parser->cfg->log_queries = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2682 "util/configparser.c" /* yacc.c:1646  */
+#line 2713 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 221:
-#line 590 "./util/configparser.y" /* yacc.c:1646  */
+  case 222:
+#line 593 "./util/configparser.y" /* yacc.c:1646  */
     {
        OUTYY(("P(server_log_replies:%s)\n", (yyvsp[0].str)));
        if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2690,31 +2721,31 @@ yyreduce:
        else cfg_parser->cfg->log_replies = (strcmp((yyvsp[0].str), "yes")==0);
        free((yyvsp[0].str));
   }
-#line 2694 "util/configparser.c" /* yacc.c:1646  */
+#line 2725 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 222:
-#line 599 "./util/configparser.y" /* yacc.c:1646  */
+  case 223:
+#line 602 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_chroot:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->chrootdir);
                cfg_parser->cfg->chrootdir = (yyvsp[0].str);
        }
-#line 2704 "util/configparser.c" /* yacc.c:1646  */
+#line 2735 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 223:
-#line 606 "./util/configparser.y" /* yacc.c:1646  */
+  case 224:
+#line 609 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_username:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->username);
                cfg_parser->cfg->username = (yyvsp[0].str);
        }
-#line 2714 "util/configparser.c" /* yacc.c:1646  */
+#line 2745 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 224:
-#line 613 "./util/configparser.y" /* yacc.c:1646  */
+  case 225:
+#line 616 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_directory:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->directory);
@@ -2739,115 +2770,115 @@ yyreduce:
                        }
                }
        }
-#line 2743 "util/configparser.c" /* yacc.c:1646  */
+#line 2774 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 225:
-#line 639 "./util/configparser.y" /* yacc.c:1646  */
+  case 226:
+#line 642 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_logfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->logfile);
                cfg_parser->cfg->logfile = (yyvsp[0].str);
                cfg_parser->cfg->use_syslog = 0;
        }
-#line 2754 "util/configparser.c" /* yacc.c:1646  */
+#line 2785 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 226:
-#line 647 "./util/configparser.y" /* yacc.c:1646  */
+  case 227:
+#line 650 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_pidfile:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->pidfile);
                cfg_parser->cfg->pidfile = (yyvsp[0].str);
        }
-#line 2764 "util/configparser.c" /* yacc.c:1646  */
+#line 2795 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 227:
-#line 654 "./util/configparser.y" /* yacc.c:1646  */
+  case 228:
+#line 657 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_root_hints:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->root_hints, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2774 "util/configparser.c" /* yacc.c:1646  */
+#line 2805 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 228:
-#line 661 "./util/configparser.y" /* yacc.c:1646  */
+  case 229:
+#line 664 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_dlv_anchor_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dlv_anchor_file);
                cfg_parser->cfg->dlv_anchor_file = (yyvsp[0].str);
        }
-#line 2784 "util/configparser.c" /* yacc.c:1646  */
+#line 2815 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 229:
-#line 668 "./util/configparser.y" /* yacc.c:1646  */
+  case 230:
+#line 671 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_dlv_anchor:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->dlv_anchor_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2794 "util/configparser.c" /* yacc.c:1646  */
+#line 2825 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 230:
-#line 675 "./util/configparser.y" /* yacc.c:1646  */
+  case 231:
+#line 678 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_auto_trust_anchor_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        auto_trust_anchor_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2805 "util/configparser.c" /* yacc.c:1646  */
+#line 2836 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 231:
-#line 683 "./util/configparser.y" /* yacc.c:1646  */
+  case 232:
+#line 686 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_trust_anchor_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        trust_anchor_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2816 "util/configparser.c" /* yacc.c:1646  */
+#line 2847 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 232:
-#line 691 "./util/configparser.y" /* yacc.c:1646  */
+  case 233:
+#line 694 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_trusted_keys_file:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->
                        trusted_keys_file_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2827 "util/configparser.c" /* yacc.c:1646  */
+#line 2858 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 233:
-#line 699 "./util/configparser.y" /* yacc.c:1646  */
+  case 234:
+#line 702 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_trust_anchor:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->trust_anchor_list, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2837 "util/configparser.c" /* yacc.c:1646  */
+#line 2868 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 234:
-#line 706 "./util/configparser.y" /* yacc.c:1646  */
+  case 235:
+#line 709 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_domain_insecure:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->domain_insecure, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 2847 "util/configparser.c" /* yacc.c:1646  */
+#line 2878 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 235:
-#line 713 "./util/configparser.y" /* yacc.c:1646  */
+  case 236:
+#line 716 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_hide_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2855,11 +2886,11 @@ yyreduce:
                else cfg_parser->cfg->hide_identity = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2859 "util/configparser.c" /* yacc.c:1646  */
+#line 2890 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 236:
-#line 722 "./util/configparser.y" /* yacc.c:1646  */
+  case 237:
+#line 725 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_hide_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2867,11 +2898,11 @@ yyreduce:
                else cfg_parser->cfg->hide_version = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2871 "util/configparser.c" /* yacc.c:1646  */
+#line 2902 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 237:
-#line 731 "./util/configparser.y" /* yacc.c:1646  */
+  case 238:
+#line 734 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_hide_trustanchor:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2879,53 +2910,53 @@ yyreduce:
                else cfg_parser->cfg->hide_trustanchor = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 2883 "util/configparser.c" /* yacc.c:1646  */
+#line 2914 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 238:
-#line 740 "./util/configparser.y" /* yacc.c:1646  */
+  case 239:
+#line 743 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->identity);
                cfg_parser->cfg->identity = (yyvsp[0].str);
        }
-#line 2893 "util/configparser.c" /* yacc.c:1646  */
+#line 2924 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 239:
-#line 747 "./util/configparser.y" /* yacc.c:1646  */
+  case 240:
+#line 750 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->version);
                cfg_parser->cfg->version = (yyvsp[0].str);
        }
-#line 2903 "util/configparser.c" /* yacc.c:1646  */
+#line 2934 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 240:
-#line 754 "./util/configparser.y" /* yacc.c:1646  */
+  case 241:
+#line 757 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_so_rcvbuf:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_rcvbuf))
                        yyerror("buffer size expected");
                free((yyvsp[0].str));
        }
-#line 2914 "util/configparser.c" /* yacc.c:1646  */
+#line 2945 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 241:
-#line 762 "./util/configparser.y" /* yacc.c:1646  */
+  case 242:
+#line 765 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_so_sndbuf:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->so_sndbuf))
                        yyerror("buffer size expected");
                free((yyvsp[0].str));
        }
-#line 2925 "util/configparser.c" /* yacc.c:1646  */
+#line 2956 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 242:
-#line 770 "./util/configparser.y" /* yacc.c:1646  */
+  case 243:
+#line 773 "./util/configparser.y" /* yacc.c:1646  */
     {
         OUTYY(("P(server_so_reuseport:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2934,11 +2965,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 2938 "util/configparser.c" /* yacc.c:1646  */
+#line 2969 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 243:
-#line 780 "./util/configparser.y" /* yacc.c:1646  */
+  case 244:
+#line 783 "./util/configparser.y" /* yacc.c:1646  */
     {
         OUTYY(("P(server_ip_transparent:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2947,11 +2978,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 2951 "util/configparser.c" /* yacc.c:1646  */
+#line 2982 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 244:
-#line 790 "./util/configparser.y" /* yacc.c:1646  */
+  case 245:
+#line 793 "./util/configparser.y" /* yacc.c:1646  */
     {
         OUTYY(("P(server_ip_freebind:%s)\n", (yyvsp[0].str)));
         if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -2960,11 +2991,11 @@ yyreduce:
             (strcmp((yyvsp[0].str), "yes")==0);
         free((yyvsp[0].str));
     }
-#line 2964 "util/configparser.c" /* yacc.c:1646  */
+#line 2995 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 245:
-#line 800 "./util/configparser.y" /* yacc.c:1646  */
+  case 246:
+#line 803 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_edns_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2976,11 +3007,11 @@ yyreduce:
                else cfg_parser->cfg->edns_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2980 "util/configparser.c" /* yacc.c:1646  */
+#line 3011 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 246:
-#line 813 "./util/configparser.y" /* yacc.c:1646  */
+  case 247:
+#line 816 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_msg_buffer_size:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -2990,22 +3021,22 @@ yyreduce:
                else cfg_parser->cfg->msg_buffer_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 2994 "util/configparser.c" /* yacc.c:1646  */
+#line 3025 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 247:
-#line 824 "./util/configparser.y" /* yacc.c:1646  */
+  case 248:
+#line 827 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_msg_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->msg_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3005 "util/configparser.c" /* yacc.c:1646  */
+#line 3036 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 248:
-#line 832 "./util/configparser.y" /* yacc.c:1646  */
+  case 249:
+#line 835 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_msg_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3017,11 +3048,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3021 "util/configparser.c" /* yacc.c:1646  */
+#line 3052 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 249:
-#line 845 "./util/configparser.y" /* yacc.c:1646  */
+  case 250:
+#line 848 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_num_queries_per_thread:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3029,11 +3060,11 @@ yyreduce:
                else cfg_parser->cfg->num_queries_per_thread = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3033 "util/configparser.c" /* yacc.c:1646  */
+#line 3064 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 250:
-#line 854 "./util/configparser.y" /* yacc.c:1646  */
+  case 251:
+#line 857 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_jostle_timeout:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3041,11 +3072,11 @@ yyreduce:
                else cfg_parser->cfg->jostle_time = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3045 "util/configparser.c" /* yacc.c:1646  */
+#line 3076 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 251:
-#line 863 "./util/configparser.y" /* yacc.c:1646  */
+  case 252:
+#line 866 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_delay_close:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3053,11 +3084,11 @@ yyreduce:
                else cfg_parser->cfg->delay_close = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3057 "util/configparser.c" /* yacc.c:1646  */
+#line 3088 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 252:
-#line 872 "./util/configparser.y" /* yacc.c:1646  */
+  case 253:
+#line 875 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_unblock_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3066,11 +3097,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3070 "util/configparser.c" /* yacc.c:1646  */
+#line 3101 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 253:
-#line 882 "./util/configparser.y" /* yacc.c:1646  */
+  case 254:
+#line 885 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_insecure_lan_zones:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3079,22 +3110,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3083 "util/configparser.c" /* yacc.c:1646  */
+#line 3114 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 254:
-#line 892 "./util/configparser.y" /* yacc.c:1646  */
+  case 255:
+#line 895 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_rrset_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->rrset_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3094 "util/configparser.c" /* yacc.c:1646  */
+#line 3125 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 255:
-#line 900 "./util/configparser.y" /* yacc.c:1646  */
+  case 256:
+#line 903 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_rrset_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3106,11 +3137,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3110 "util/configparser.c" /* yacc.c:1646  */
+#line 3141 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 256:
-#line 913 "./util/configparser.y" /* yacc.c:1646  */
+  case 257:
+#line 916 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_host_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3118,22 +3149,22 @@ yyreduce:
                else cfg_parser->cfg->host_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3122 "util/configparser.c" /* yacc.c:1646  */
+#line 3153 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 257:
-#line 922 "./util/configparser.y" /* yacc.c:1646  */
+  case 258:
+#line 925 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_lame_ttl:%s)\n", (yyvsp[0].str)));
                verbose(VERB_DETAIL, "ignored infra-lame-ttl: %s (option "
                        "removed, use infra-host-ttl)", (yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3133 "util/configparser.c" /* yacc.c:1646  */
+#line 3164 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 258:
-#line 930 "./util/configparser.y" /* yacc.c:1646  */
+  case 259:
+#line 933 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_numhosts:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3141,22 +3172,22 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_numhosts = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3145 "util/configparser.c" /* yacc.c:1646  */
+#line 3176 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 259:
-#line 939 "./util/configparser.y" /* yacc.c:1646  */
+  case 260:
+#line 942 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_lame_size:%s)\n", (yyvsp[0].str)));
                verbose(VERB_DETAIL, "ignored infra-cache-lame-size: %s "
                        "(option removed, use infra-cache-numhosts)", (yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3156 "util/configparser.c" /* yacc.c:1646  */
+#line 3187 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 260:
-#line 947 "./util/configparser.y" /* yacc.c:1646  */
+  case 261:
+#line 950 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3168,11 +3199,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3172 "util/configparser.c" /* yacc.c:1646  */
+#line 3203 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 261:
-#line 960 "./util/configparser.y" /* yacc.c:1646  */
+  case 262:
+#line 963 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_infra_cache_min_rtt:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3180,21 +3211,21 @@ yyreduce:
                else cfg_parser->cfg->infra_cache_min_rtt = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3184 "util/configparser.c" /* yacc.c:1646  */
+#line 3215 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 262:
-#line 969 "./util/configparser.y" /* yacc.c:1646  */
+  case 263:
+#line 972 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_target_fetch_policy:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->target_fetch_policy);
                cfg_parser->cfg->target_fetch_policy = (yyvsp[0].str);
        }
-#line 3194 "util/configparser.c" /* yacc.c:1646  */
+#line 3225 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 263:
-#line 976 "./util/configparser.y" /* yacc.c:1646  */
+  case 264:
+#line 979 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_short_bufsize:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3203,11 +3234,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3207 "util/configparser.c" /* yacc.c:1646  */
+#line 3238 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 264:
-#line 986 "./util/configparser.y" /* yacc.c:1646  */
+  case 265:
+#line 989 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_large_queries:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3216,11 +3247,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3220 "util/configparser.c" /* yacc.c:1646  */
+#line 3251 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 265:
-#line 996 "./util/configparser.y" /* yacc.c:1646  */
+  case 266:
+#line 999 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_glue:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3229,11 +3260,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3233 "util/configparser.c" /* yacc.c:1646  */
+#line 3264 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 266:
-#line 1006 "./util/configparser.y" /* yacc.c:1646  */
+  case 267:
+#line 1009 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_dnssec_stripped:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3242,11 +3273,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3246 "util/configparser.c" /* yacc.c:1646  */
+#line 3277 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 267:
-#line 1016 "./util/configparser.y" /* yacc.c:1646  */
+  case 268:
+#line 1019 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_below_nxdomain:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3255,11 +3286,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3259 "util/configparser.c" /* yacc.c:1646  */
+#line 3290 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 268:
-#line 1026 "./util/configparser.y" /* yacc.c:1646  */
+  case 269:
+#line 1029 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_referral_path:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3268,11 +3299,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3272 "util/configparser.c" /* yacc.c:1646  */
+#line 3303 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 269:
-#line 1036 "./util/configparser.y" /* yacc.c:1646  */
+  case 270:
+#line 1039 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_harden_algo_downgrade:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3281,11 +3312,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3285 "util/configparser.c" /* yacc.c:1646  */
+#line 3316 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 270:
-#line 1046 "./util/configparser.y" /* yacc.c:1646  */
+  case 271:
+#line 1049 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_use_caps_for_id:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3294,41 +3325,41 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3298 "util/configparser.c" /* yacc.c:1646  */
+#line 3329 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 271:
-#line 1056 "./util/configparser.y" /* yacc.c:1646  */
+  case 272:
+#line 1059 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_caps_whitelist:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->caps_whitelist, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3308 "util/configparser.c" /* yacc.c:1646  */
+#line 3339 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 272:
-#line 1063 "./util/configparser.y" /* yacc.c:1646  */
+  case 273:
+#line 1066 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_private_address:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_address, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3318 "util/configparser.c" /* yacc.c:1646  */
+#line 3349 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 273:
-#line 1070 "./util/configparser.y" /* yacc.c:1646  */
+  case 274:
+#line 1073 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_private_domain:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->private_domain, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3328 "util/configparser.c" /* yacc.c:1646  */
+#line 3359 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 274:
-#line 1077 "./util/configparser.y" /* yacc.c:1646  */
+  case 275:
+#line 1080 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_prefetch:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3336,11 +3367,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3340 "util/configparser.c" /* yacc.c:1646  */
+#line 3371 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 275:
-#line 1086 "./util/configparser.y" /* yacc.c:1646  */
+  case 276:
+#line 1089 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_prefetch_key:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3348,11 +3379,11 @@ yyreduce:
                else cfg_parser->cfg->prefetch_key = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3352 "util/configparser.c" /* yacc.c:1646  */
+#line 3383 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 276:
-#line 1095 "./util/configparser.y" /* yacc.c:1646  */
+  case 277:
+#line 1098 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_unwanted_reply_threshold:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3360,21 +3391,21 @@ yyreduce:
                else cfg_parser->cfg->unwanted_threshold = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3364 "util/configparser.c" /* yacc.c:1646  */
+#line 3395 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 277:
-#line 1104 "./util/configparser.y" /* yacc.c:1646  */
+  case 278:
+#line 1107 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_not_query_address:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->donotqueryaddrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 3374 "util/configparser.c" /* yacc.c:1646  */
+#line 3405 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 278:
-#line 1111 "./util/configparser.y" /* yacc.c:1646  */
+  case 279:
+#line 1114 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_do_not_query_localhost:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3383,11 +3414,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3387 "util/configparser.c" /* yacc.c:1646  */
+#line 3418 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 279:
-#line 1121 "./util/configparser.y" /* yacc.c:1646  */
+  case 280:
+#line 1124 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_access_control:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "deny")!=0 && strcmp((yyvsp[0].str), "refuse")!=0 &&
@@ -3403,21 +3434,21 @@ yyreduce:
                                fatal_exit("out of memory adding acl");
                }
        }
-#line 3407 "util/configparser.c" /* yacc.c:1646  */
+#line 3438 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 280:
-#line 1138 "./util/configparser.y" /* yacc.c:1646  */
+  case 281:
+#line 1141 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_module_conf:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->module_conf);
                cfg_parser->cfg->module_conf = (yyvsp[0].str);
        }
-#line 3417 "util/configparser.c" /* yacc.c:1646  */
+#line 3448 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 281:
-#line 1145 "./util/configparser.y" /* yacc.c:1646  */
+  case 282:
+#line 1148 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_override_date:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3434,11 +3465,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3438 "util/configparser.c" /* yacc.c:1646  */
+#line 3469 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 282:
-#line 1163 "./util/configparser.y" /* yacc.c:1646  */
+  case 283:
+#line 1166 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_sig_skew_min:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3450,11 +3481,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3454 "util/configparser.c" /* yacc.c:1646  */
+#line 3485 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 283:
-#line 1176 "./util/configparser.y" /* yacc.c:1646  */
+  case 284:
+#line 1179 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_sig_skew_max:%s)\n", (yyvsp[0].str)));
                if(*(yyvsp[0].str) == '\0' || strcmp((yyvsp[0].str), "0") == 0) {
@@ -3466,11 +3497,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3470 "util/configparser.c" /* yacc.c:1646  */
+#line 3501 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 284:
-#line 1189 "./util/configparser.y" /* yacc.c:1646  */
+  case 285:
+#line 1192 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_max_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3478,11 +3509,11 @@ yyreduce:
                else cfg_parser->cfg->max_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3482 "util/configparser.c" /* yacc.c:1646  */
+#line 3513 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 285:
-#line 1198 "./util/configparser.y" /* yacc.c:1646  */
+  case 286:
+#line 1201 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_max_negative_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3490,11 +3521,11 @@ yyreduce:
                else cfg_parser->cfg->max_negative_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3494 "util/configparser.c" /* yacc.c:1646  */
+#line 3525 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 286:
-#line 1207 "./util/configparser.y" /* yacc.c:1646  */
+  case 287:
+#line 1210 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_cache_min_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3502,11 +3533,11 @@ yyreduce:
                else cfg_parser->cfg->min_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3506 "util/configparser.c" /* yacc.c:1646  */
+#line 3537 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 287:
-#line 1216 "./util/configparser.y" /* yacc.c:1646  */
+  case 288:
+#line 1219 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_bogus_ttl:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3514,11 +3545,11 @@ yyreduce:
                else cfg_parser->cfg->bogus_ttl = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3518 "util/configparser.c" /* yacc.c:1646  */
+#line 3549 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 288:
-#line 1225 "./util/configparser.y" /* yacc.c:1646  */
+  case 289:
+#line 1228 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_clean_additional:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3527,11 +3558,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3531 "util/configparser.c" /* yacc.c:1646  */
+#line 3562 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 289:
-#line 1235 "./util/configparser.y" /* yacc.c:1646  */
+  case 290:
+#line 1238 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_permissive_mode:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3540,11 +3571,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3544 "util/configparser.c" /* yacc.c:1646  */
+#line 3575 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 290:
-#line 1245 "./util/configparser.y" /* yacc.c:1646  */
+  case 291:
+#line 1248 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ignore_cd_flag:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3552,11 +3583,11 @@ yyreduce:
                else cfg_parser->cfg->ignore_cd = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3556 "util/configparser.c" /* yacc.c:1646  */
+#line 3587 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 291:
-#line 1254 "./util/configparser.y" /* yacc.c:1646  */
+  case 292:
+#line 1257 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_serve_expired:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3564,11 +3595,11 @@ yyreduce:
                else cfg_parser->cfg->serve_expired = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3568 "util/configparser.c" /* yacc.c:1646  */
+#line 3599 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 292:
-#line 1263 "./util/configparser.y" /* yacc.c:1646  */
+  case 293:
+#line 1266 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_fake_dsa:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3580,11 +3611,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 3584 "util/configparser.c" /* yacc.c:1646  */
+#line 3615 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 293:
-#line 1276 "./util/configparser.y" /* yacc.c:1646  */
+  case 294:
+#line 1279 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_fake_sha1:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3596,11 +3627,11 @@ yyreduce:
 #endif
                free((yyvsp[0].str));
        }
-#line 3600 "util/configparser.c" /* yacc.c:1646  */
+#line 3631 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 294:
-#line 1289 "./util/configparser.y" /* yacc.c:1646  */
+  case 295:
+#line 1292 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_log_level:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3608,21 +3639,21 @@ yyreduce:
                else cfg_parser->cfg->val_log_level = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3612 "util/configparser.c" /* yacc.c:1646  */
+#line 3643 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 295:
-#line 1298 "./util/configparser.y" /* yacc.c:1646  */
+  case 296:
+#line 1301 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_val_nsec3_keysize_iterations:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->val_nsec3_key_iterations);
                cfg_parser->cfg->val_nsec3_key_iterations = (yyvsp[0].str);
        }
-#line 3622 "util/configparser.c" /* yacc.c:1646  */
+#line 3653 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 296:
-#line 1305 "./util/configparser.y" /* yacc.c:1646  */
+  case 297:
+#line 1308 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_add_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3630,11 +3661,11 @@ yyreduce:
                else cfg_parser->cfg->add_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3634 "util/configparser.c" /* yacc.c:1646  */
+#line 3665 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 297:
-#line 1314 "./util/configparser.y" /* yacc.c:1646  */
+  case 298:
+#line 1317 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_del_holddown:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3642,11 +3673,11 @@ yyreduce:
                else cfg_parser->cfg->del_holddown = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3646 "util/configparser.c" /* yacc.c:1646  */
+#line 3677 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 298:
-#line 1323 "./util/configparser.y" /* yacc.c:1646  */
+  case 299:
+#line 1326 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_keep_missing:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3654,11 +3685,11 @@ yyreduce:
                else cfg_parser->cfg->keep_missing = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3658 "util/configparser.c" /* yacc.c:1646  */
+#line 3689 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 299:
-#line 1332 "./util/configparser.y" /* yacc.c:1646  */
+  case 300:
+#line 1335 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_permit_small_holddown:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3667,22 +3698,22 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3671 "util/configparser.c" /* yacc.c:1646  */
+#line 3702 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 300:
-#line 1341 "./util/configparser.y" /* yacc.c:1646  */
+  case 301:
+#line 1344 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_key_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->key_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3682 "util/configparser.c" /* yacc.c:1646  */
+#line 3713 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 301:
-#line 1349 "./util/configparser.y" /* yacc.c:1646  */
+  case 302:
+#line 1352 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_key_cache_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -3694,22 +3725,22 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3698 "util/configparser.c" /* yacc.c:1646  */
+#line 3729 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 302:
-#line 1362 "./util/configparser.y" /* yacc.c:1646  */
+  case 303:
+#line 1365 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_neg_cache_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->neg_cache_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 3709 "util/configparser.c" /* yacc.c:1646  */
+#line 3740 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 303:
-#line 1370 "./util/configparser.y" /* yacc.c:1646  */
+  case 304:
+#line 1373 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
@@ -3736,21 +3767,21 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 3740 "util/configparser.c" /* yacc.c:1646  */
+#line 3771 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 304:
-#line 1398 "./util/configparser.y" /* yacc.c:1646  */
+  case 305:
+#line 1401 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_local_data:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->local_data, (yyvsp[0].str)))
                        fatal_exit("out of memory adding local-data");
        }
-#line 3750 "util/configparser.c" /* yacc.c:1646  */
+#line 3781 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 305:
-#line 1405 "./util/configparser.y" /* yacc.c:1646  */
+  case 306:
+#line 1408 "./util/configparser.y" /* yacc.c:1646  */
     {
                char* ptr;
                OUTYY(("P(server_local_data_ptr:%s)\n", (yyvsp[0].str)));
@@ -3764,11 +3795,11 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 3768 "util/configparser.c" /* yacc.c:1646  */
+#line 3799 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 306:
-#line 1420 "./util/configparser.y" /* yacc.c:1646  */
+  case 307:
+#line 1423 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_minimal_responses:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3777,11 +3808,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3781 "util/configparser.c" /* yacc.c:1646  */
+#line 3812 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 307:
-#line 1430 "./util/configparser.y" /* yacc.c:1646  */
+  case 308:
+#line 1433 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_rrset_roundrobin:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3790,31 +3821,31 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3794 "util/configparser.c" /* yacc.c:1646  */
+#line 3825 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 308:
-#line 1440 "./util/configparser.y" /* yacc.c:1646  */
+  case 309:
+#line 1443 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_max_udp_size:%s)\n", (yyvsp[0].str)));
                cfg_parser->cfg->max_udp_size = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3804 "util/configparser.c" /* yacc.c:1646  */
+#line 3835 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 309:
-#line 1447 "./util/configparser.y" /* yacc.c:1646  */
+  case 310:
+#line 1450 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dns64_prefix:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dns64_prefix);
                cfg_parser->cfg->dns64_prefix = (yyvsp[0].str);
        }
-#line 3814 "util/configparser.c" /* yacc.c:1646  */
+#line 3845 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 310:
-#line 1454 "./util/configparser.y" /* yacc.c:1646  */
+  case 311:
+#line 1457 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_dns64_synthall:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -3822,11 +3853,11 @@ yyreduce:
                else cfg_parser->cfg->dns64_synthall = (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 3826 "util/configparser.c" /* yacc.c:1646  */
+#line 3857 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 311:
-#line 1463 "./util/configparser.y" /* yacc.c:1646  */
+  case 312:
+#line 1466 "./util/configparser.y" /* yacc.c:1646  */
     {
                char* p, *s = (yyvsp[0].str);
                OUTYY(("P(server_define_tag:%s)\n", (yyvsp[0].str)));
@@ -3839,11 +3870,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 3843 "util/configparser.c" /* yacc.c:1646  */
+#line 3874 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 312:
-#line 1477 "./util/configparser.y" /* yacc.c:1646  */
+  case 313:
+#line 1480 "./util/configparser.y" /* yacc.c:1646  */
     {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -3861,11 +3892,11 @@ yyreduce:
                        }
                }
        }
-#line 3865 "util/configparser.c" /* yacc.c:1646  */
+#line 3896 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 313:
-#line 1496 "./util/configparser.y" /* yacc.c:1646  */
+  case 314:
+#line 1499 "./util/configparser.y" /* yacc.c:1646  */
     {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -3883,11 +3914,11 @@ yyreduce:
                        }
                }
        }
-#line 3887 "util/configparser.c" /* yacc.c:1646  */
+#line 3918 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 314:
-#line 1515 "./util/configparser.y" /* yacc.c:1646  */
+  case 315:
+#line 1518 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_access_control_tag_action:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_actions,
@@ -3898,11 +3929,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 3902 "util/configparser.c" /* yacc.c:1646  */
+#line 3933 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 315:
-#line 1527 "./util/configparser.y" /* yacc.c:1646  */
+  case 316:
+#line 1530 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_access_control_tag_data:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->acl_tag_datas,
@@ -3913,11 +3944,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 3917 "util/configparser.c" /* yacc.c:1646  */
+#line 3948 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 316:
-#line 1539 "./util/configparser.y" /* yacc.c:1646  */
+  case 317:
+#line 1542 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_local_zone_override:%s %s %s)\n", (yyvsp[-2].str), (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str3list_insert(&cfg_parser->cfg->local_zone_overrides,
@@ -3928,11 +3959,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 3932 "util/configparser.c" /* yacc.c:1646  */
+#line 3963 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 317:
-#line 1551 "./util/configparser.y" /* yacc.c:1646  */
+  case 318:
+#line 1554 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_access_control_view:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(!cfg_str2list_insert(&cfg_parser->cfg->acl_view,
@@ -3942,11 +3973,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 3946 "util/configparser.c" /* yacc.c:1646  */
+#line 3977 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 318:
-#line 1562 "./util/configparser.y" /* yacc.c:1646  */
+  case 319:
+#line 1565 "./util/configparser.y" /* yacc.c:1646  */
     {
                size_t len = 0;
                uint8_t* bitlist = config_parse_taglist(cfg_parser->cfg, (yyvsp[0].str),
@@ -3964,11 +3995,11 @@ yyreduce:
                        }
                }
        }
-#line 3968 "util/configparser.c" /* yacc.c:1646  */
+#line 3999 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 319:
-#line 1581 "./util/configparser.y" /* yacc.c:1646  */
+  case 320:
+#line 1584 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_ip_ratelimit:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3976,11 +4007,11 @@ yyreduce:
                else cfg_parser->cfg->ip_ratelimit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3980 "util/configparser.c" /* yacc.c:1646  */
+#line 4011 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 320:
-#line 1591 "./util/configparser.y" /* yacc.c:1646  */
+  case 321:
+#line 1594 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_ratelimit:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -3988,33 +4019,33 @@ yyreduce:
                else cfg_parser->cfg->ratelimit = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 3992 "util/configparser.c" /* yacc.c:1646  */
+#line 4023 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 321:
-#line 1600 "./util/configparser.y" /* yacc.c:1646  */
+  case 322:
+#line 1603 "./util/configparser.y" /* yacc.c:1646  */
     {
        OUTYY(("P(server_ip_ratelimit_size:%s)\n", (yyvsp[0].str)));
        if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ip_ratelimit_size))
                yyerror("memory size expected");
        free((yyvsp[0].str));
   }
-#line 4003 "util/configparser.c" /* yacc.c:1646  */
+#line 4034 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 322:
-#line 1608 "./util/configparser.y" /* yacc.c:1646  */
+  case 323:
+#line 1611 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_size:%s)\n", (yyvsp[0].str)));
                if(!cfg_parse_memsize((yyvsp[0].str), &cfg_parser->cfg->ratelimit_size))
                        yyerror("memory size expected");
                free((yyvsp[0].str));
        }
-#line 4014 "util/configparser.c" /* yacc.c:1646  */
+#line 4045 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 323:
-#line 1616 "./util/configparser.y" /* yacc.c:1646  */
+  case 324:
+#line 1619 "./util/configparser.y" /* yacc.c:1646  */
     {
        OUTYY(("P(server_ip_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
        if(atoi((yyvsp[0].str)) == 0)
@@ -4026,11 +4057,11 @@ yyreduce:
        }
        free((yyvsp[0].str));
   }
-#line 4030 "util/configparser.c" /* yacc.c:1646  */
+#line 4061 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 324:
-#line 1629 "./util/configparser.y" /* yacc.c:1646  */
+  case 325:
+#line 1632 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_slabs:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4042,11 +4073,11 @@ yyreduce:
                }
                free((yyvsp[0].str));
        }
-#line 4046 "util/configparser.c" /* yacc.c:1646  */
+#line 4077 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 325:
-#line 1642 "./util/configparser.y" /* yacc.c:1646  */
+  case 326:
+#line 1645 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_for_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
@@ -4058,11 +4089,11 @@ yyreduce:
                                        "ratelimit-for-domain");
                }
        }
-#line 4062 "util/configparser.c" /* yacc.c:1646  */
+#line 4093 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 326:
-#line 1655 "./util/configparser.y" /* yacc.c:1646  */
+  case 327:
+#line 1658 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_ratelimit_below_domain:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0) {
@@ -4074,11 +4105,11 @@ yyreduce:
                                        "ratelimit-below-domain");
                }
        }
-#line 4078 "util/configparser.c" /* yacc.c:1646  */
+#line 4109 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 327:
-#line 1668 "./util/configparser.y" /* yacc.c:1646  */
+  case 328:
+#line 1671 "./util/configparser.y" /* yacc.c:1646  */
     { 
        OUTYY(("P(server_ip_ratelimit_factor:%s)\n", (yyvsp[0].str))); 
        if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4086,11 +4117,11 @@ yyreduce:
        else cfg_parser->cfg->ip_ratelimit_factor = atoi((yyvsp[0].str));
        free((yyvsp[0].str));
        }
-#line 4090 "util/configparser.c" /* yacc.c:1646  */
+#line 4121 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 328:
-#line 1677 "./util/configparser.y" /* yacc.c:1646  */
+  case 329:
+#line 1680 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("P(server_ratelimit_factor:%s)\n", (yyvsp[0].str))); 
                if(atoi((yyvsp[0].str)) == 0 && strcmp((yyvsp[0].str), "0") != 0)
@@ -4098,11 +4129,11 @@ yyreduce:
                else cfg_parser->cfg->ratelimit_factor = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4102 "util/configparser.c" /* yacc.c:1646  */
+#line 4133 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 329:
-#line 1686 "./util/configparser.y" /* yacc.c:1646  */
+  case 330:
+#line 1689 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_qname_minimisation:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4111,11 +4142,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4115 "util/configparser.c" /* yacc.c:1646  */
+#line 4146 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 330:
-#line 1696 "./util/configparser.y" /* yacc.c:1646  */
+  case 331:
+#line 1699 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_qname_minimisation_strict:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4124,11 +4155,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4128 "util/configparser.c" /* yacc.c:1646  */
+#line 4159 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 331:
-#line 1706 "./util/configparser.y" /* yacc.c:1646  */
+  case 332:
+#line 1709 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->stubs->name)
@@ -4137,31 +4168,31 @@ yyreduce:
                free(cfg_parser->cfg->stubs->name);
                cfg_parser->cfg->stubs->name = (yyvsp[0].str);
        }
-#line 4141 "util/configparser.c" /* yacc.c:1646  */
+#line 4172 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 332:
-#line 1716 "./util/configparser.y" /* yacc.c:1646  */
+  case 333:
+#line 1719 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-host:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->hosts, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4151 "util/configparser.c" /* yacc.c:1646  */
+#line 4182 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 333:
-#line 1723 "./util/configparser.y" /* yacc.c:1646  */
+  case 334:
+#line 1726 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-addr:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->stubs->addrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4161 "util/configparser.c" /* yacc.c:1646  */
+#line 4192 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 334:
-#line 1730 "./util/configparser.y" /* yacc.c:1646  */
+  case 335:
+#line 1733 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4169,11 +4200,11 @@ yyreduce:
                else cfg_parser->cfg->stubs->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4173 "util/configparser.c" /* yacc.c:1646  */
+#line 4204 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 335:
-#line 1739 "./util/configparser.y" /* yacc.c:1646  */
+  case 336:
+#line 1742 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-ssl-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4182,11 +4213,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4186 "util/configparser.c" /* yacc.c:1646  */
+#line 4217 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 336:
-#line 1749 "./util/configparser.y" /* yacc.c:1646  */
+  case 337:
+#line 1752 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(stub-prime:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4195,11 +4226,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4199 "util/configparser.c" /* yacc.c:1646  */
+#line 4230 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 337:
-#line 1759 "./util/configparser.y" /* yacc.c:1646  */
+  case 338:
+#line 1762 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->forwards->name)
@@ -4208,31 +4239,31 @@ yyreduce:
                free(cfg_parser->cfg->forwards->name);
                cfg_parser->cfg->forwards->name = (yyvsp[0].str);
        }
-#line 4212 "util/configparser.c" /* yacc.c:1646  */
+#line 4243 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 338:
-#line 1769 "./util/configparser.y" /* yacc.c:1646  */
+  case 339:
+#line 1772 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-host:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->hosts, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4222 "util/configparser.c" /* yacc.c:1646  */
+#line 4253 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 339:
-#line 1776 "./util/configparser.y" /* yacc.c:1646  */
+  case 340:
+#line 1779 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-addr:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->forwards->addrs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4232 "util/configparser.c" /* yacc.c:1646  */
+#line 4263 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 340:
-#line 1783 "./util/configparser.y" /* yacc.c:1646  */
+  case 341:
+#line 1786 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4240,11 +4271,11 @@ yyreduce:
                else cfg_parser->cfg->forwards->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4244 "util/configparser.c" /* yacc.c:1646  */
+#line 4275 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 341:
-#line 1792 "./util/configparser.y" /* yacc.c:1646  */
+  case 342:
+#line 1795 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(forward-ssl-upstream:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4253,11 +4284,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4257 "util/configparser.c" /* yacc.c:1646  */
+#line 4288 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 342:
-#line 1802 "./util/configparser.y" /* yacc.c:1646  */
+  case 343:
+#line 1805 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(name:%s)\n", (yyvsp[0].str)));
                if(cfg_parser->cfg->views->name)
@@ -4266,11 +4297,11 @@ yyreduce:
                free(cfg_parser->cfg->views->name);
                cfg_parser->cfg->views->name = (yyvsp[0].str);
        }
-#line 4270 "util/configparser.c" /* yacc.c:1646  */
+#line 4301 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 343:
-#line 1812 "./util/configparser.y" /* yacc.c:1646  */
+  case 344:
+#line 1815 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(view_local_zone:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "static")!=0 && strcmp((yyvsp[0].str), "deny")!=0 &&
@@ -4298,11 +4329,11 @@ yyreduce:
                                fatal_exit("out of memory adding local-zone");
                }
        }
-#line 4302 "util/configparser.c" /* yacc.c:1646  */
+#line 4333 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 344:
-#line 1841 "./util/configparser.y" /* yacc.c:1646  */
+  case 345:
+#line 1844 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(view_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                validate_respip_action((yyvsp[0].str));
@@ -4311,22 +4342,22 @@ yyreduce:
                        fatal_exit("out of memory adding per-view "
                                "response-ip action");
        }
-#line 4315 "util/configparser.c" /* yacc.c:1646  */
+#line 4346 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 345:
-#line 1851 "./util/configparser.y" /* yacc.c:1646  */
+  case 346:
+#line 1854 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(view_response_ip_data:%s)\n", (yyvsp[-1].str)));
                if(!cfg_str2list_insert(
                        &cfg_parser->cfg->views->respip_data, (yyvsp[-1].str), (yyvsp[0].str)))
                        fatal_exit("out of memory adding response-ip-data");
        }
-#line 4326 "util/configparser.c" /* yacc.c:1646  */
+#line 4357 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 346:
-#line 1859 "./util/configparser.y" /* yacc.c:1646  */
+  case 347:
+#line 1862 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(view_local_data:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->views->local_data, (yyvsp[0].str))) {
@@ -4334,11 +4365,11 @@ yyreduce:
                        free((yyvsp[0].str));
                }
        }
-#line 4338 "util/configparser.c" /* yacc.c:1646  */
+#line 4369 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 347:
-#line 1868 "./util/configparser.y" /* yacc.c:1646  */
+  case 348:
+#line 1871 "./util/configparser.y" /* yacc.c:1646  */
     {
                char* ptr;
                OUTYY(("P(view_local_data_ptr:%s)\n", (yyvsp[0].str)));
@@ -4352,11 +4383,11 @@ yyreduce:
                        yyerror("local-data-ptr could not be reversed");
                }
        }
-#line 4356 "util/configparser.c" /* yacc.c:1646  */
+#line 4387 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 348:
-#line 1883 "./util/configparser.y" /* yacc.c:1646  */
+  case 349:
+#line 1886 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(view-first:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4364,19 +4395,19 @@ yyreduce:
                else cfg_parser->cfg->views->isfirst=(strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4368 "util/configparser.c" /* yacc.c:1646  */
+#line 4399 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 349:
-#line 1892 "./util/configparser.y" /* yacc.c:1646  */
+  case 350:
+#line 1895 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("\nP(remote-control:)\n")); 
        }
-#line 4376 "util/configparser.c" /* yacc.c:1646  */
+#line 4407 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 360:
-#line 1903 "./util/configparser.y" /* yacc.c:1646  */
+  case 361:
+#line 1906 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4385,11 +4416,11 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4389 "util/configparser.c" /* yacc.c:1646  */
+#line 4420 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 361:
-#line 1913 "./util/configparser.y" /* yacc.c:1646  */
+  case 362:
+#line 1916 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_port:%s)\n", (yyvsp[0].str)));
                if(atoi((yyvsp[0].str)) == 0)
@@ -4397,21 +4428,21 @@ yyreduce:
                else cfg_parser->cfg->control_port = atoi((yyvsp[0].str));
                free((yyvsp[0].str));
        }
-#line 4401 "util/configparser.c" /* yacc.c:1646  */
+#line 4432 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 362:
-#line 1922 "./util/configparser.y" /* yacc.c:1646  */
+  case 363:
+#line 1925 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_interface:%s)\n", (yyvsp[0].str)));
                if(!cfg_strlist_insert(&cfg_parser->cfg->control_ifs, (yyvsp[0].str)))
                        yyerror("out of memory");
        }
-#line 4411 "util/configparser.c" /* yacc.c:1646  */
+#line 4442 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 363:
-#line 1929 "./util/configparser.y" /* yacc.c:1646  */
+  case 364:
+#line 1932 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(control_use_cert:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4420,122 +4451,122 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4424 "util/configparser.c" /* yacc.c:1646  */
+#line 4455 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 364:
-#line 1939 "./util/configparser.y" /* yacc.c:1646  */
+  case 365:
+#line 1942 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(rc_server_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->server_key_file);
                cfg_parser->cfg->server_key_file = (yyvsp[0].str);
        }
-#line 4434 "util/configparser.c" /* yacc.c:1646  */
+#line 4465 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 365:
-#line 1946 "./util/configparser.y" /* yacc.c:1646  */
+  case 366:
+#line 1949 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(rc_server_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->server_cert_file);
                cfg_parser->cfg->server_cert_file = (yyvsp[0].str);
        }
-#line 4444 "util/configparser.c" /* yacc.c:1646  */
+#line 4475 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 366:
-#line 1953 "./util/configparser.y" /* yacc.c:1646  */
+  case 367:
+#line 1956 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(rc_control_key_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->control_key_file);
                cfg_parser->cfg->control_key_file = (yyvsp[0].str);
        }
-#line 4454 "util/configparser.c" /* yacc.c:1646  */
+#line 4485 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 367:
-#line 1960 "./util/configparser.y" /* yacc.c:1646  */
+  case 368:
+#line 1963 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(rc_control_cert_file:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->control_cert_file);
                cfg_parser->cfg->control_cert_file = (yyvsp[0].str);
        }
-#line 4464 "util/configparser.c" /* yacc.c:1646  */
+#line 4495 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 368:
-#line 1967 "./util/configparser.y" /* yacc.c:1646  */
+  case 369:
+#line 1970 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("\nP(dnstap:)\n"));
        }
-#line 4472 "util/configparser.c" /* yacc.c:1646  */
+#line 4503 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 383:
-#line 1984 "./util/configparser.y" /* yacc.c:1646  */
+  case 384:
+#line 1987 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_enable:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap = (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4483 "util/configparser.c" /* yacc.c:1646  */
+#line 4514 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 384:
-#line 1992 "./util/configparser.y" /* yacc.c:1646  */
+  case 385:
+#line 1995 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_socket_path:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_socket_path);
                cfg_parser->cfg->dnstap_socket_path = (yyvsp[0].str);
        }
-#line 4493 "util/configparser.c" /* yacc.c:1646  */
+#line 4524 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 385:
-#line 1999 "./util/configparser.y" /* yacc.c:1646  */
+  case 386:
+#line 2002 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_send_identity:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_send_identity = (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4504 "util/configparser.c" /* yacc.c:1646  */
+#line 4535 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 386:
-#line 2007 "./util/configparser.y" /* yacc.c:1646  */
+  case 387:
+#line 2010 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_send_version:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
                        yyerror("expected yes or no.");
                else cfg_parser->cfg->dnstap_send_version = (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4515 "util/configparser.c" /* yacc.c:1646  */
+#line 4546 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 387:
-#line 2015 "./util/configparser.y" /* yacc.c:1646  */
+  case 388:
+#line 2018 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_identity);
                cfg_parser->cfg->dnstap_identity = (yyvsp[0].str);
        }
-#line 4525 "util/configparser.c" /* yacc.c:1646  */
+#line 4556 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 388:
-#line 2022 "./util/configparser.y" /* yacc.c:1646  */
+  case 389:
+#line 2025 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_version:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->dnstap_version);
                cfg_parser->cfg->dnstap_version = (yyvsp[0].str);
        }
-#line 4535 "util/configparser.c" /* yacc.c:1646  */
+#line 4566 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 389:
-#line 2029 "./util/configparser.y" /* yacc.c:1646  */
+  case 390:
+#line 2032 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_resolver_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4543,11 +4574,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_resolver_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4547 "util/configparser.c" /* yacc.c:1646  */
+#line 4578 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 390:
-#line 2038 "./util/configparser.y" /* yacc.c:1646  */
+  case 391:
+#line 2041 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_resolver_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4555,11 +4586,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_resolver_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4559 "util/configparser.c" /* yacc.c:1646  */
+#line 4590 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 391:
-#line 2047 "./util/configparser.y" /* yacc.c:1646  */
+  case 392:
+#line 2050 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_client_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4567,11 +4598,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_client_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4571 "util/configparser.c" /* yacc.c:1646  */
+#line 4602 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 392:
-#line 2056 "./util/configparser.y" /* yacc.c:1646  */
+  case 393:
+#line 2059 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_client_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4579,11 +4610,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_client_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4583 "util/configparser.c" /* yacc.c:1646  */
+#line 4614 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 393:
-#line 2065 "./util/configparser.y" /* yacc.c:1646  */
+  case 394:
+#line 2068 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_forwarder_query_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4591,11 +4622,11 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_forwarder_query_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4595 "util/configparser.c" /* yacc.c:1646  */
+#line 4626 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 394:
-#line 2074 "./util/configparser.y" /* yacc.c:1646  */
+  case 395:
+#line 2077 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(dt_dnstap_log_forwarder_response_messages:%s)\n", (yyvsp[0].str)));
                if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4603,29 +4634,29 @@ yyreduce:
                else cfg_parser->cfg->dnstap_log_forwarder_response_messages =
                        (strcmp((yyvsp[0].str), "yes")==0);
        }
-#line 4607 "util/configparser.c" /* yacc.c:1646  */
+#line 4638 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 395:
-#line 2083 "./util/configparser.y" /* yacc.c:1646  */
+  case 396:
+#line 2086 "./util/configparser.y" /* yacc.c:1646  */
     { 
                OUTYY(("\nP(python:)\n")); 
        }
-#line 4615 "util/configparser.c" /* yacc.c:1646  */
+#line 4646 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 399:
-#line 2092 "./util/configparser.y" /* yacc.c:1646  */
+  case 400:
+#line 2095 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(python-script:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->python_script);
                cfg_parser->cfg->python_script = (yyvsp[0].str);
        }
-#line 4625 "util/configparser.c" /* yacc.c:1646  */
+#line 4656 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 400:
-#line 2098 "./util/configparser.y" /* yacc.c:1646  */
+  case 401:
+#line 2101 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(disable_dnssec_lame_check:%s)\n", (yyvsp[0].str)));
                if (strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
@@ -4634,21 +4665,21 @@ yyreduce:
                        (strcmp((yyvsp[0].str), "yes")==0);
                free((yyvsp[0].str));
        }
-#line 4638 "util/configparser.c" /* yacc.c:1646  */
+#line 4669 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 401:
-#line 2108 "./util/configparser.y" /* yacc.c:1646  */
+  case 402:
+#line 2111 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_log_identity:%s)\n", (yyvsp[0].str)));
                free(cfg_parser->cfg->log_identity);
                cfg_parser->cfg->log_identity = (yyvsp[0].str);
        }
-#line 4648 "util/configparser.c" /* yacc.c:1646  */
+#line 4679 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 402:
-#line 2115 "./util/configparser.y" /* yacc.c:1646  */
+  case 403:
+#line 2118 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_response_ip:%s %s)\n", (yyvsp[-1].str), (yyvsp[0].str)));
                validate_respip_action((yyvsp[0].str));
@@ -4656,22 +4687,85 @@ yyreduce:
                        (yyvsp[-1].str), (yyvsp[0].str)))
                        fatal_exit("out of memory adding response-ip");
        }
-#line 4660 "util/configparser.c" /* yacc.c:1646  */
+#line 4691 "util/configparser.c" /* yacc.c:1646  */
     break;
 
-  case 403:
-#line 2124 "./util/configparser.y" /* yacc.c:1646  */
+  case 404:
+#line 2127 "./util/configparser.y" /* yacc.c:1646  */
     {
                OUTYY(("P(server_response_ip_data:%s)\n", (yyvsp[-1].str)));
                        if(!cfg_str2list_insert(&cfg_parser->cfg->respip_data,
                                (yyvsp[-1].str), (yyvsp[0].str)))
                                fatal_exit("out of memory adding response-ip-data");
        }
-#line 4671 "util/configparser.c" /* yacc.c:1646  */
+#line 4702 "util/configparser.c" /* yacc.c:1646  */
+    break;
+
+  case 405:
+#line 2135 "./util/configparser.y" /* yacc.c:1646  */
+    {
+               OUTYY(("\nP(dnscrypt:)\n"));
+               OUTYY(("\nP(dnscrypt:)\n"));
+       }
+#line 4711 "util/configparser.c" /* yacc.c:1646  */
+    break;
+
+  case 413:
+#line 2147 "./util/configparser.y" /* yacc.c:1646  */
+    {
+               OUTYY(("P(dnsc_dnscrypt_enable:%s)\n", (yyvsp[0].str)));
+               if(strcmp((yyvsp[0].str), "yes") != 0 && strcmp((yyvsp[0].str), "no") != 0)
+                       yyerror("expected yes or no.");
+               else cfg_parser->cfg->dnscrypt = (strcmp((yyvsp[0].str), "yes")==0);
+       }
+#line 4722 "util/configparser.c" /* yacc.c:1646  */
+    break;
+
+  case 414:
+#line 2156 "./util/configparser.y" /* yacc.c:1646  */
+    {
+               OUTYY(("P(dnsc_dnscrypt_port:%s)\n", (yyvsp[0].str)));
+
+               if(atoi((yyvsp[0].str)) == 0)
+                       yyerror("port number expected");
+               else cfg_parser->cfg->dnscrypt_port = atoi((yyvsp[0].str));
+               free((yyvsp[0].str));
+       }
+#line 4735 "util/configparser.c" /* yacc.c:1646  */
+    break;
+
+  case 415:
+#line 2166 "./util/configparser.y" /* yacc.c:1646  */
+    {
+               OUTYY(("P(dnsc_dnscrypt_provider:%s)\n", (yyvsp[0].str)));
+               free(cfg_parser->cfg->dnscrypt_provider);
+               cfg_parser->cfg->dnscrypt_provider = (yyvsp[0].str);
+       }
+#line 4745 "util/configparser.c" /* yacc.c:1646  */
+    break;
+
+  case 416:
+#line 2173 "./util/configparser.y" /* yacc.c:1646  */
+    {
+               OUTYY(("P(dnsc_dnscrypt_provider_cert:%s)\n", (yyvsp[0].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_provider_cert, (yyvsp[0].str)))
+                       fatal_exit("out of memory adding dnscrypt-provider-cert");
+       }
+#line 4755 "util/configparser.c" /* yacc.c:1646  */
+    break;
+
+  case 417:
+#line 2180 "./util/configparser.y" /* yacc.c:1646  */
+    {
+               OUTYY(("P(dnsc_dnscrypt_secret_key:%s)\n", (yyvsp[0].str)));
+               if(!cfg_strlist_insert(&cfg_parser->cfg->dnscrypt_secret_key, (yyvsp[0].str)))
+                       fatal_exit("out of memory adding dnscrypt-secret-key");
+       }
+#line 4765 "util/configparser.c" /* yacc.c:1646  */
     break;
 
 
-#line 4675 "util/configparser.c" /* yacc.c:1646  */
+#line 4769 "util/configparser.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -4899,7 +4993,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 2131 "./util/configparser.y" /* yacc.c:1906  */
+#line 2186 "./util/configparser.y" /* yacc.c:1906  */
 
 
 /* parse helper routines could be here */
index 9972300708a8cac231aeac57604c74f6bceeef65..f30fba2198d6af0ac266c5b0dd4e50d97c9cdf04 100644 (file)
@@ -238,7 +238,13 @@ extern int yydebug;
     VAR_HIDE_TRUSTANCHOR = 448,
     VAR_USE_SYSTEMD = 449,
     VAR_SHM_ENABLE = 450,
-    VAR_SHM_KEY = 451
+    VAR_SHM_KEY = 451,
+    VAR_DNSCRYPT = 452,
+    VAR_DNSCRYPT_ENABLE = 453,
+    VAR_DNSCRYPT_PORT = 454,
+    VAR_DNSCRYPT_PROVIDER = 455,
+    VAR_DNSCRYPT_SECRET_KEY = 456,
+    VAR_DNSCRYPT_PROVIDER_CERT = 457
   };
 #endif
 /* Tokens.  */
@@ -436,6 +442,12 @@ extern int yydebug;
 #define VAR_USE_SYSTEMD 449
 #define VAR_SHM_ENABLE 450
 #define VAR_SHM_KEY 451
+#define VAR_DNSCRYPT 452
+#define VAR_DNSCRYPT_ENABLE 453
+#define VAR_DNSCRYPT_PORT 454
+#define VAR_DNSCRYPT_PROVIDER 455
+#define VAR_DNSCRYPT_SECRET_KEY 456
+#define VAR_DNSCRYPT_PROVIDER_CERT 457
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
@@ -446,7 +458,7 @@ union YYSTYPE
 
        char*   str;
 
-#line 450 "util/configparser.h" /* yacc.c:1909  */
+#line 462 "util/configparser.h" /* yacc.c:1909  */
 };
 
 typedef union YYSTYPE YYSTYPE;
index dbbcc4d1ed7b9d07c226fdca34eff682f9c1db05..2084cea3ec01d68c4b93c5a26203dd86bf8a997f 100644 (file)
@@ -1321,10 +1321,12 @@ static int
 comm_point_tcp_handle_write(int fd, struct comm_point* c)
 {
        ssize_t r;
+       struct sldns_buffer *buffer;
        log_assert(c->type == comm_tcp);
-    struct sldns_buffer *buffer = c->buffer;
 #ifdef USE_DNSCRYPT
-    buffer = c->dnscrypt_buffer;
+       buffer = c->dnscrypt_buffer;
+#else
+       buffer = c->buffer;
 #endif
        if(c->tcp_is_reading && !c->ssl)
                return 0;
@@ -2109,13 +2111,15 @@ comm_point_delete(struct comm_point* c)
 void 
 comm_point_send_reply(struct comm_reply *repinfo)
 {
+       struct sldns_buffer* buffer;
        log_assert(repinfo && repinfo->c);
-    struct sldns_buffer* buffer = repinfo->c->buffer;
 #ifdef USE_DNSCRYPT
-    buffer = repinfo->c->dnscrypt_buffer;
-    if(!dnsc_handle_uncurved_request(repinfo)) {
-        return;
-    }
+       buffer = repinfo->c->dnscrypt_buffer;
+       if(!dnsc_handle_uncurved_request(repinfo)) {
+               return;
+       }
+#else
+       buffer = repinfo->c->buffer;
 #endif
        if(repinfo->c->type == comm_udp) {
                if(repinfo->srctype)